Mercurial > hg > graal-compiler
diff src/share/vm/runtime/deoptimization.hpp @ 18041:52b4284cb496
Merge with jdk8u20-b26
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 15 Oct 2014 16:02:50 +0200 |
parents | ada0a7729b6f 606acabe7b5c |
children | 810222d74f7c |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.hpp Thu Oct 16 10:21:29 2014 +0200 +++ b/src/share/vm/runtime/deoptimization.hpp Wed Oct 15 16:02:50 2014 +0200 @@ -72,6 +72,8 @@ Reason_age, // nmethod too old; tier threshold reached Reason_predicate, // compiler generated predicate failed Reason_loop_limit_check, // compiler generated loop limits check failed + Reason_speculate_class_check, // saw unexpected object class from type speculation + Reason_rtm_state_change, // rtm state change detected #ifdef GRAAL Reason_aliasing, // optimistic assumption about aliasing failed Reason_transfer_to_interpreter, // explicit transferToInterpreter() @@ -353,10 +355,23 @@ return reason; else if (reason == Reason_div0_check) // null check due to divide-by-zero? return Reason_null_check; // recorded per BCI as a null check + else if (reason == Reason_speculate_class_check) + return Reason_class_check; else return Reason_none; } + static bool reason_is_speculate(int reason) { + if (reason == Reason_speculate_class_check) { + return true; + } + return false; + } + + static uint per_method_trap_limit(int reason) { + return reason_is_speculate(reason) ? (uint)PerMethodSpecTrapLimit : (uint)PerMethodTrapLimit; + } + static const char* trap_reason_name(int reason); static const char* trap_action_name(int action); // Format like reason='foo' action='bar' index='123'. @@ -383,6 +398,7 @@ #ifdef GRAAL bool is_osr, #endif + Method* compiled_method, //outputs: uint& ret_this_trap_count, bool& ret_maybe_prior_trap,