< prev index next >

src/hotspot/cpu/arm/sharedRuntime_arm.cpp

Print this page

1340 // this function returns the adjust size (in number of words) to a c2i adapter
1341 // activation for use during deoptimization
1342 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
1343   int extra_locals_size = (callee_locals - callee_parameters) * Interpreter::stackElementWords;
1344   return extra_locals_size;
1345 }
1346 
1347 
1348 // Number of stack slots between incoming argument block and the start of
1349 // a new frame.  The PROLOG must add this many slots to the stack.  The
1350 // EPILOG must remove this many slots.
1351 // FP + LR
1352 uint SharedRuntime::in_preserve_stack_slots() {
1353   return 2 * VMRegImpl::slots_per_word;
1354 }
1355 
1356 uint SharedRuntime::out_preserve_stack_slots() {
1357   return 0;
1358 }
1359 





1360 //------------------------------generate_deopt_blob----------------------------
1361 void SharedRuntime::generate_deopt_blob() {
1362   ResourceMark rm;
1363   CodeBuffer buffer("deopt_blob", 1024, 1024);
1364   int frame_size_in_words;
1365   OopMapSet* oop_maps;
1366   int reexecute_offset;
1367   int exception_in_tls_offset;
1368   int exception_offset;
1369 
1370   MacroAssembler* masm = new MacroAssembler(&buffer);
1371   Label cont;
1372   const Register Rkind   = R9; // caller-saved
1373   const Register Rublock = R6;
1374   const Register Rsender = altFP_7_11;
1375   assert_different_registers(Rkind, Rublock, Rsender, Rexception_obj, Rexception_pc, R0, R1, R2, R3, R8, Rtemp);
1376 
1377   address start = __ pc();
1378 
1379   oop_maps = new OopMapSet();

1340 // this function returns the adjust size (in number of words) to a c2i adapter
1341 // activation for use during deoptimization
1342 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
1343   int extra_locals_size = (callee_locals - callee_parameters) * Interpreter::stackElementWords;
1344   return extra_locals_size;
1345 }
1346 
1347 
1348 // Number of stack slots between incoming argument block and the start of
1349 // a new frame.  The PROLOG must add this many slots to the stack.  The
1350 // EPILOG must remove this many slots.
1351 // FP + LR
1352 uint SharedRuntime::in_preserve_stack_slots() {
1353   return 2 * VMRegImpl::slots_per_word;
1354 }
1355 
1356 uint SharedRuntime::out_preserve_stack_slots() {
1357   return 0;
1358 }
1359 
1360 VMReg SharedRuntime::thread_register() {
1361   Unimplemented();
1362   return nullptr;
1363 }
1364 
1365 //------------------------------generate_deopt_blob----------------------------
1366 void SharedRuntime::generate_deopt_blob() {
1367   ResourceMark rm;
1368   CodeBuffer buffer("deopt_blob", 1024, 1024);
1369   int frame_size_in_words;
1370   OopMapSet* oop_maps;
1371   int reexecute_offset;
1372   int exception_in_tls_offset;
1373   int exception_offset;
1374 
1375   MacroAssembler* masm = new MacroAssembler(&buffer);
1376   Label cont;
1377   const Register Rkind   = R9; // caller-saved
1378   const Register Rublock = R6;
1379   const Register Rsender = altFP_7_11;
1380   assert_different_registers(Rkind, Rublock, Rsender, Rexception_obj, Rexception_pc, R0, R1, R2, R3, R8, Rtemp);
1381 
1382   address start = __ pc();
1383 
1384   oop_maps = new OopMapSet();
< prev index next >