Mercurial > hg > truffle
comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 610:70998f2e05ef
6805864: 4/3 Problem with jvmti->redefineClasses: some methods don't get redefined
Summary: Remove incorrect optimization in klassItable::adjust_method_entries(). Add RedefineClasses() tracing support for obsolete method entry.
Reviewed-by: acorn, swamyv
author | dcubed |
---|---|
date | Mon, 02 Mar 2009 14:03:03 -0700 |
parents | dc7f315e41f7 |
children | afa80fa86d22 |
comparison
equal
deleted
inserted
replaced
609:ea20d7ce26b0 | 610:70998f2e05ef |
---|---|
1504 CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), | 1504 CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), |
1505 r15_thread, c_rarg1); | 1505 r15_thread, c_rarg1); |
1506 restore_args(masm, total_c_args, c_arg, out_regs); | 1506 restore_args(masm, total_c_args, c_arg, out_regs); |
1507 } | 1507 } |
1508 | 1508 |
1509 // RedefineClasses() tracing support for obsolete method entry | |
1510 if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) { | |
1511 // protect the args we've loaded | |
1512 save_args(masm, total_c_args, c_arg, out_regs); | |
1513 __ movoop(c_rarg1, JNIHandles::make_local(method())); | |
1514 __ call_VM_leaf( | |
1515 CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry), | |
1516 r15_thread, c_rarg1); | |
1517 restore_args(masm, total_c_args, c_arg, out_regs); | |
1518 } | |
1519 | |
1509 // Lock a synchronized method | 1520 // Lock a synchronized method |
1510 | 1521 |
1511 // Register definitions used by locking and unlocking | 1522 // Register definitions used by locking and unlocking |
1512 | 1523 |
1513 const Register swap_reg = rax; // Must use rax for cmpxchg instruction | 1524 const Register swap_reg = rax; // Must use rax for cmpxchg instruction |