Mercurial > hg > truffle
comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 5109:6766253384bf
more preparations for disabling runtime feedback selectively based on deoptimization history
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Tue, 13 Mar 2012 18:53:33 -0700 |
parents | 897b7d18bebc |
children | 422c979ff392 |
comparison
equal
deleted
inserted
replaced
5108:b07ead3a3c2c | 5109:6766253384bf |
---|---|
3026 // fetch_unroll_info needs to call last_java_frame() | 3026 // fetch_unroll_info needs to call last_java_frame() |
3027 __ set_last_Java_frame(noreg, noreg, NULL); | 3027 __ set_last_Java_frame(noreg, noreg, NULL); |
3028 | 3028 |
3029 assert(r10 == rscratch1, "scratch register should be r10"); | 3029 assert(r10 == rscratch1, "scratch register should be r10"); |
3030 __ movl(c_rarg1, Address(rsp, RegisterSaver::r10_offset_in_bytes())); | 3030 __ movl(c_rarg1, Address(rsp, RegisterSaver::r10_offset_in_bytes())); |
3031 __ orq(c_rarg1, ~(int32_t)Deoptimization::make_trap_request(Deoptimization::Reason_unreached, Deoptimization::Action_none)); | 3031 |
3032 __ notq(c_rarg1); | |
3033 __ movl(r14, (int32_t)Deoptimization::Unpack_reexecute); | 3032 __ movl(r14, (int32_t)Deoptimization::Unpack_reexecute); |
3034 __ mov(c_rarg0, r15_thread); | 3033 __ mov(c_rarg0, r15_thread); |
3035 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap))); | 3034 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap))); |
3036 oop_maps->add_gc_map( __ pc()-start, map->deep_copy()); | 3035 oop_maps->add_gc_map( __ pc()-start, map->deep_copy()); |
3037 | 3036 |
3038 __ reset_last_Java_frame(false, false); | 3037 __ reset_last_Java_frame(false, false); |
3039 | 3038 |
3040 Label after_fetch_unroll_info_call; | 3039 Label after_fetch_unroll_info_call; |
3041 __ jmp(after_fetch_unroll_info_call); | 3040 __ jmp(after_fetch_unroll_info_call); |
3042 #endif | 3041 #endif // GRAAL |
3043 | 3042 |
3044 __ bind(cont); | 3043 __ bind(cont); |
3045 | 3044 |
3046 // Call C code. Need thread and this frame, but NOT official VM entry | 3045 // Call C code. Need thread and this frame, but NOT official VM entry |
3047 // crud. We cannot block on this call, no GC can happen. | 3046 // crud. We cannot block on this call, no GC can happen. |