Mercurial > hg > graal-jvmci-8
diff src/share/vm/code/nmethod.cpp @ 13641:5a9afbf72714
Add a speculation oop for uncommon trap deoptimization. Save it in the SpeculationLog during deoptimization.
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 12 Dec 2013 15:13:02 +0100 |
parents | 02f27ecb4f3a |
children | cd22c8dbda4f d8041d695d19 |
line wrap: on
line diff
--- a/src/share/vm/code/nmethod.cpp Wed Jan 15 15:11:47 2014 +0100 +++ b/src/share/vm/code/nmethod.cpp Thu Dec 12 15:13:02 2013 +0100 @@ -528,7 +528,7 @@ _compiler = NULL; #ifdef GRAAL _graal_installed_code = NULL; - _triggered_deoptimizations = NULL; + _speculation_log = NULL; #endif #ifdef HAVE_DTRACE_H _trap_offset = 0; @@ -627,7 +627,7 @@ GrowableArray<jlong>* leaf_graph_ids #ifdef GRAAL , Handle installed_code, - Handle triggered_deoptimizations + Handle speculationLog #endif ) { @@ -656,7 +656,7 @@ leaf_graph_ids #ifdef GRAAL , installed_code, - triggered_deoptimizations + speculationLog #endif ); @@ -885,7 +885,7 @@ GrowableArray<jlong>* leaf_graph_ids #ifdef GRAAL , Handle installed_code, - Handle triggered_deoptimizations + Handle speculation_log #endif ) : CodeBlob("nmethod", code_buffer, sizeof(nmethod), @@ -913,7 +913,7 @@ #ifdef GRAAL _graal_installed_code = installed_code(); - _triggered_deoptimizations = (typeArrayOop)triggered_deoptimizations(); + _speculation_log = (instanceOop)speculation_log(); #endif if (compiler->is_graal()) { // Graal might not produce any stub sections @@ -1762,6 +1762,12 @@ } } } + + if (_speculation_log != NULL) { + if (!is_alive->do_object_b(_speculation_log)) { + _speculation_log = NULL; + } + } #endif // Exception cache @@ -1990,8 +1996,8 @@ if (_graal_installed_code != NULL) { f->do_oop((oop*) &_graal_installed_code); } - if (_triggered_deoptimizations != NULL) { - f->do_oop((oop*) &_triggered_deoptimizations); + if (_speculation_log != NULL) { + f->do_oop((oop*) &_speculation_log); } #endif