comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 2935:9b8f30608e62

deoptimization action (invalidate, reprofile, ...) more debug properties and assertions
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 10 Jun 2011 15:01:14 +0200
parents 1e13559b112d
children c7783b6773ea
comparison
equal deleted inserted replaced
2928:1e13559b112d 2935:9b8f30608e62
138 // values on its own 138 // values on its own
139 139
140 static int rax_offset_in_bytes(void) { return BytesPerInt * rax_off; } 140 static int rax_offset_in_bytes(void) { return BytesPerInt * rax_off; }
141 static int rdx_offset_in_bytes(void) { return BytesPerInt * rdx_off; } 141 static int rdx_offset_in_bytes(void) { return BytesPerInt * rdx_off; }
142 static int rbx_offset_in_bytes(void) { return BytesPerInt * rbx_off; } 142 static int rbx_offset_in_bytes(void) { return BytesPerInt * rbx_off; }
143 static int r10_offset_in_bytes(void) { return BytesPerInt * r10_off; }
143 static int xmm0_offset_in_bytes(void) { return BytesPerInt * xmm0_off; } 144 static int xmm0_offset_in_bytes(void) { return BytesPerInt * xmm0_off; }
144 static int return_offset_in_bytes(void) { return BytesPerInt * return_off; } 145 static int return_offset_in_bytes(void) { return BytesPerInt * return_off; }
145 146
146 // During deoptimization only the result registers need to be restored, 147 // During deoptimization only the result registers need to be restored,
147 // all the other values have already been extracted. 148 // all the other values have already been extracted.
2667 2668
2668 2669
2669 // fetch_unroll_info needs to call last_java_frame() 2670 // fetch_unroll_info needs to call last_java_frame()
2670 __ set_last_Java_frame(noreg, noreg, NULL); 2671 __ set_last_Java_frame(noreg, noreg, NULL);
2671 2672
2673
2672 // __ movl(c_rarg1, (int32_t)Deoptimization::Unpack_reexecute); 2674 // __ movl(c_rarg1, (int32_t)Deoptimization::Unpack_reexecute);
2673 // __ movl(r14, c_rarg1); // save into r14 for later call to unpack_frames 2675 // __ movl(r14, c_rarg1); // save into r14 for later call to unpack_frames
2674 __ movl(c_rarg1, (int32_t)-1); 2676
2677 assert(r10 == rscratch1, "scratch register should be r10");
2678 __ movptr(c_rarg1, Address(rsp, RegisterSaver::r10_offset_in_bytes()));
2679 __ orq(c_rarg1, ~(int32_t)Deoptimization::make_trap_request(Deoptimization::Reason_unreached, Deoptimization::Action_none));
2680 __ notq(c_rarg1);
2675 __ movl(r14, (int32_t)Deoptimization::Unpack_reexecute); 2681 __ movl(r14, (int32_t)Deoptimization::Unpack_reexecute);
2676 __ mov(c_rarg0, r15_thread); 2682 __ mov(c_rarg0, r15_thread);
2677 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap))); 2683 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap)));
2678 2684
2679 // Need to have an oopmap that tells fetch_unroll_info where to 2685 // Need to have an oopmap that tells fetch_unroll_info where to