src/share/vm/c1/c1_Runtime1.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/c1/c1_Runtime1.cpp Tue May 6 15:13:00 2014
--- new/src/share/vm/c1/c1_Runtime1.cpp Tue May 6 15:12:59 2014
*** 683,705 ****
--- 683,712 ----
ObjectSynchronizer::fast_exit(obj, lock->lock(), THREAD);
}
JRT_END
// Cf. OptoRuntime::deoptimize_caller_frame
! JRT_ENTRY(void, Runtime1::deoptimize(JavaThread* thread, jint trap_request))
// Called from within the owner thread, so no need for safepoint
RegisterMap reg_map(thread, false);
frame stub_frame = thread->last_frame();
assert(stub_frame.is_runtime_frame(), "sanity check");
frame caller_frame = stub_frame.sender(®_map);
// We are coming from a compiled method; check this is true.
assert(CodeCache::find_nmethod(caller_frame.pc()) != NULL, "sanity");
+ Deoptimization::DeoptAction action = Deoptimization::trap_request_action(trap_request);
+
+ if (action == Deoptimization::Action_make_not_entrant) {
+ nmethod* nm = CodeCache::find_nmethod(caller_frame.pc());
+ if (nm != NULL) {
+ nm->make_not_entrant();
+ }
+ }
// Deoptimize the caller frame.
Deoptimization::deoptimize_frame(thread, caller_frame.id());
// Return to the now deoptimized frame.
JRT_END
static Klass* resolve_field_return_klass(methodHandle caller, int bci, TRAPS) {
src/share/vm/c1/c1_Runtime1.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File