comparison src/share/vm/ci/ciMethod.hpp @ 2007:5ddfcf4b079e

7003554: (tiered) assert(is_null_object() || handle() != NULL) failed: cannot embed null pointer Summary: C1 with profiling doesn't check whether the MDO has been really allocated, which can silently fail if the perm gen is full. The solution is to check if the allocation failed and bailout out of inlining or compilation. Reviewed-by: kvn, never
author iveresov
date Thu, 02 Dec 2010 17:21:12 -0800
parents f95d63e2154a
children 8012aa3ccede
comparison
equal deleted inserted replaced
2006:bbefa3ca1543 2007:5ddfcf4b079e
104 104
105 void load_code(); 105 void load_code();
106 106
107 void check_is_loaded() const { assert(is_loaded(), "not loaded"); } 107 void check_is_loaded() const { assert(is_loaded(), "not loaded"); }
108 108
109 void build_method_data(methodHandle h_m); 109 bool ensure_method_data(methodHandle h_m);
110 110
111 void code_at_put(int bci, Bytecodes::Code code) { 111 void code_at_put(int bci, Bytecodes::Code code) {
112 Bytecodes::check(code); 112 Bytecodes::check(code);
113 assert(0 <= bci && bci < code_size(), "valid bci"); 113 assert(0 <= bci && bci < code_size(), "valid bci");
114 address bcp = _code + bci; 114 address bcp = _code + bci;
119 // Basic method information. 119 // Basic method information.
120 ciFlags flags() const { check_is_loaded(); return _flags; } 120 ciFlags flags() const { check_is_loaded(); return _flags; }
121 ciSymbol* name() const { return _name; } 121 ciSymbol* name() const { return _name; }
122 ciInstanceKlass* holder() const { return _holder; } 122 ciInstanceKlass* holder() const { return _holder; }
123 ciMethodData* method_data(); 123 ciMethodData* method_data();
124 ciMethodData* method_data_or_null();
124 125
125 // Signature information. 126 // Signature information.
126 ciSignature* signature() const { return _signature; } 127 ciSignature* signature() const { return _signature; }
127 ciType* return_type() const { return _signature->return_type(); } 128 ciType* return_type() const { return _signature->return_type(); }
128 int arg_size_no_receiver() const { return _signature->size(); } 129 int arg_size_no_receiver() const { return _signature->size(); }
228 bool is_not_reached(int bci); 229 bool is_not_reached(int bci);
229 bool was_executed_more_than(int times); 230 bool was_executed_more_than(int times);
230 bool has_unloaded_classes_in_signature(); 231 bool has_unloaded_classes_in_signature();
231 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const; 232 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
232 bool check_call(int refinfo_index, bool is_static) const; 233 bool check_call(int refinfo_index, bool is_static) const;
233 void build_method_data(); // make sure it exists in the VM also 234 bool ensure_method_data(); // make sure it exists in the VM also
234 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC 235 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
235 236
236 // JSR 292 support 237 // JSR 292 support
237 bool is_method_handle_invoke() const; 238 bool is_method_handle_invoke() const;
238 bool is_method_handle_adapter() const; 239 bool is_method_handle_adapter() const;