Mercurial > hg > truffle
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 |