src/share/vm/runtime/deoptimization.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/runtime/deoptimization.hpp Mon Jan 20 11:14:27 2014
--- new/src/share/vm/runtime/deoptimization.hpp Mon Jan 20 11:14:27 2014
*** 57,66 ****
--- 57,67 ----
Reason_constraint, // arbitrary runtime constraint violated
Reason_div0_check, // a null_check due to division by zero
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_LIMIT,
// Note: Keep this enum in sync. with _trap_reason_name.
Reason_RECORDED_LIMIT = Reason_bimorphic // some are not recorded per bc
// Note: Reason_RECORDED_LIMIT should be < 8 to fit into 3 bits of
// DataLayout::trap_bits. This dependency is enforced indirectly
*** 309,322 ****
--- 310,336 ----
static DeoptReason reason_recorded_per_bytecode_if_any(DeoptReason reason) {
if (reason_is_recorded_per_bytecode(reason))
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'.
// This is suitable both for XML and for tty output.
static const char* format_trap_request(char* buf, size_t buflen,
*** 335,344 ****
--- 349,359 ----
static MethodData* get_method_data(JavaThread* thread, methodHandle m, bool create_if_missing);
// Update the mdo's count and per-BCI reason bits, returning previous state:
static ProfileData* query_update_method_data(MethodData* trap_mdo,
int trap_bci,
DeoptReason reason,
+ Method* compiled_method,
//outputs:
uint& ret_this_trap_count,
bool& ret_maybe_prior_trap,
bool& ret_maybe_prior_recompile);
// class loading support for uncommon trap
src/share/vm/runtime/deoptimization.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File