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.