mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
7003554: (tiered) assert(is_null_object() || handle() != NULL) failed: cannot embed null pointer
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
This commit is contained in:
parent
7fedab77bf
commit
ab725dba1d
10 changed files with 55 additions and 56 deletions
|
@ -106,7 +106,7 @@ class ciMethod : public ciObject {
|
|||
|
||||
void check_is_loaded() const { assert(is_loaded(), "not loaded"); }
|
||||
|
||||
void build_method_data(methodHandle h_m);
|
||||
bool ensure_method_data(methodHandle h_m);
|
||||
|
||||
void code_at_put(int bci, Bytecodes::Code code) {
|
||||
Bytecodes::check(code);
|
||||
|
@ -121,6 +121,7 @@ class ciMethod : public ciObject {
|
|||
ciSymbol* name() const { return _name; }
|
||||
ciInstanceKlass* holder() const { return _holder; }
|
||||
ciMethodData* method_data();
|
||||
ciMethodData* method_data_or_null();
|
||||
|
||||
// Signature information.
|
||||
ciSignature* signature() const { return _signature; }
|
||||
|
@ -230,7 +231,7 @@ class ciMethod : public ciObject {
|
|||
bool has_unloaded_classes_in_signature();
|
||||
bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
|
||||
bool check_call(int refinfo_index, bool is_static) const;
|
||||
void build_method_data(); // make sure it exists in the VM also
|
||||
bool ensure_method_data(); // make sure it exists in the VM also
|
||||
int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
|
||||
|
||||
// JSR 292 support
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue