Mercurial > hg > truffle
comparison src/cpu/x86/vm/interp_masm_x86_64.cpp @ 1976:0fc262af204f
6780143: hs203t003 hits SIGSEGV/EXCEPTION_ACCESS_VIOLATION with -XX:+UseCompressedOops
Summary: Using r12 as temporary register around call_VM trashes heapbase becausecall_VM doesn't always return immediately to following code (eg forward_exception, popframe and early return support).
Reviewed-by: never, kvn
author | coleenp |
---|---|
date | Mon, 29 Nov 2010 15:43:36 -0500 |
parents | f95d63e2154a |
children | dd031b2226de |
comparison
equal
deleted
inserted
replaced
1972:f95d63e2154a | 1976:0fc262af204f |
---|---|
447 if (JvmtiExport::can_post_interpreter_events()) { | 447 if (JvmtiExport::can_post_interpreter_events()) { |
448 Label run_compiled_code; | 448 Label run_compiled_code; |
449 // JVMTI events, such as single-stepping, are implemented partly by avoiding running | 449 // JVMTI events, such as single-stepping, are implemented partly by avoiding running |
450 // compiled code in threads for which the event is enabled. Check here for | 450 // compiled code in threads for which the event is enabled. Check here for |
451 // interp_only_mode if these events CAN be enabled. | 451 // interp_only_mode if these events CAN be enabled. |
452 get_thread(temp); | |
453 // interp_only is an int, on little endian it is sufficient to test the byte only | 452 // interp_only is an int, on little endian it is sufficient to test the byte only |
454 // Is a cmpl faster (ce | 453 // Is a cmpl faster? |
455 cmpb(Address(temp, JavaThread::interp_only_mode_offset()), 0); | 454 cmpb(Address(r15_thread, JavaThread::interp_only_mode_offset()), 0); |
456 jcc(Assembler::zero, run_compiled_code); | 455 jcc(Assembler::zero, run_compiled_code); |
457 jmp(Address(method, methodOopDesc::interpreter_entry_offset())); | 456 jmp(Address(method, methodOopDesc::interpreter_entry_offset())); |
458 bind(run_compiled_code); | 457 bind(run_compiled_code); |
459 } | 458 } |
460 | 459 |