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