Mercurial > hg > truffle
comparison src/share/vm/ci/ciMethod.hpp @ 12966:b2ee5dc63353
8024070: C2 needs some form of type speculation
Summary: record unused type profile information with type system, propagate and use it.
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Wed, 23 Oct 2013 12:40:23 +0200 |
parents | c775af091fe9 |
children | 183bd5c00828 |
comparison
equal
deleted
inserted
replaced
12965:8b4bbba322d3 | 12966:b2ee5dc63353 |
---|---|
114 Bytecodes::check(code); | 114 Bytecodes::check(code); |
115 assert(0 <= bci && bci < code_size(), "valid bci"); | 115 assert(0 <= bci && bci < code_size(), "valid bci"); |
116 address bcp = _code + bci; | 116 address bcp = _code + bci; |
117 *bcp = code; | 117 *bcp = code; |
118 } | 118 } |
119 | |
120 // Check bytecode and profile data collected are compatible | |
121 void assert_virtual_call_type_ok(int bci); | |
122 void assert_call_type_ok(int bci); | |
119 | 123 |
120 public: | 124 public: |
121 // Basic method information. | 125 // Basic method information. |
122 ciFlags flags() const { check_is_loaded(); return _flags; } | 126 ciFlags flags() const { check_is_loaded(); return _flags; } |
123 ciSymbol* name() const { return _name; } | 127 ciSymbol* name() const { return _name; } |
227 | 231 |
228 ciTypeFlow* get_flow_analysis(); | 232 ciTypeFlow* get_flow_analysis(); |
229 ciTypeFlow* get_osr_flow_analysis(int osr_bci); // alternate entry point | 233 ciTypeFlow* get_osr_flow_analysis(int osr_bci); // alternate entry point |
230 ciCallProfile call_profile_at_bci(int bci); | 234 ciCallProfile call_profile_at_bci(int bci); |
231 int interpreter_call_site_count(int bci); | 235 int interpreter_call_site_count(int bci); |
236 | |
237 // Does type profiling provide a useful type at this point? | |
238 ciKlass* argument_profiled_type(int bci, int i); | |
239 ciKlass* parameter_profiled_type(int i); | |
240 ciKlass* return_profiled_type(int bci); | |
232 | 241 |
233 ciField* get_field_at_bci( int bci, bool &will_link); | 242 ciField* get_field_at_bci( int bci, bool &will_link); |
234 ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature); | 243 ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature); |
235 | 244 |
236 // Given a certain calling environment, find the monomorphic target | 245 // Given a certain calling environment, find the monomorphic target |