src/share/vm/ci/ciMethod.hpp

changeset 5991
b2ee5dc63353
parent 5907
c775af091fe9
child 6217
849eb7bfceac
equal deleted inserted replaced
5990:8b4bbba322d3 5991: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

mercurial