135 break; |
135 break; |
136 default : ShouldNotReachHere(); |
136 default : ShouldNotReachHere(); |
137 } |
137 } |
138 __ ret(); // return from interpreter activation |
138 __ ret(); // return from interpreter activation |
139 __ delayed()->restore(I5_savedSP, G0, SP); // remove interpreter frame |
139 __ delayed()->restore(I5_savedSP, G0, SP); // remove interpreter frame |
140 NOT_PRODUCT(__ emit_long(0);) // marker for disassembly |
140 NOT_PRODUCT(__ emit_int32(0);) // marker for disassembly |
141 return entry; |
141 return entry; |
142 } |
142 } |
143 |
143 |
144 // tosca based result to c++ interpreter stack based result. |
144 // tosca based result to c++ interpreter stack based result. |
145 // Result goes to address in L1_scratch |
145 // Result goes to address in L1_scratch |
230 break; |
230 break; |
231 default : ShouldNotReachHere(); |
231 default : ShouldNotReachHere(); |
232 } |
232 } |
233 __ retl(); // return from interpreter activation |
233 __ retl(); // return from interpreter activation |
234 __ delayed()->nop(); // schedule this better |
234 __ delayed()->nop(); // schedule this better |
235 NOT_PRODUCT(__ emit_long(0);) // marker for disassembly |
235 NOT_PRODUCT(__ emit_int32(0);) // marker for disassembly |
236 return entry; |
236 return entry; |
237 } |
237 } |
238 |
238 |
239 address CppInterpreterGenerator::generate_stack_to_stack_converter(BasicType type) { |
239 address CppInterpreterGenerator::generate_stack_to_stack_converter(BasicType type) { |
240 // A result is in the java expression stack of the interpreted method that has just |
240 // A result is in the java expression stack of the interpreted method that has just |
1471 __ ld_ptr(STATE(_self_link), scratch); \ |
1471 __ ld_ptr(STATE(_self_link), scratch); \ |
1472 __ cmp(Lstate, scratch); \ |
1472 __ cmp(Lstate, scratch); \ |
1473 __ brx(Assembler::equal, false, Assembler::pt, skip); \ |
1473 __ brx(Assembler::equal, false, Assembler::pt, skip); \ |
1474 __ delayed()->nop(); \ |
1474 __ delayed()->nop(); \ |
1475 __ breakpoint_trap(); \ |
1475 __ breakpoint_trap(); \ |
1476 __ emit_long(marker); \ |
1476 __ emit_int32(marker); \ |
1477 __ bind(skip); \ |
1477 __ bind(skip); \ |
1478 } |
1478 } |
1479 #else |
1479 #else |
1480 #define VALIDATE_STATE(scratch, marker) |
1480 #define VALIDATE_STATE(scratch, marker) |
1481 #endif /* ASSERT */ |
1481 #endif /* ASSERT */ |