< prev index next >

src/hotspot/cpu/arm/sharedRuntime_arm.cpp

Print this page

1351 // this function returns the adjust size (in number of words) to a c2i adapter
1352 // activation for use during deoptimization
1353 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
1354   int extra_locals_size = (callee_locals - callee_parameters) * Interpreter::stackElementWords;
1355   return extra_locals_size;
1356 }
1357 
1358 
1359 // Number of stack slots between incoming argument block and the start of
1360 // a new frame.  The PROLOG must add this many slots to the stack.  The
1361 // EPILOG must remove this many slots.
1362 // FP + LR
1363 uint SharedRuntime::in_preserve_stack_slots() {
1364   return 2 * VMRegImpl::slots_per_word;
1365 }
1366 
1367 uint SharedRuntime::out_preserve_stack_slots() {
1368   return 0;
1369 }
1370 





1371 //------------------------------generate_deopt_blob----------------------------
1372 void SharedRuntime::generate_deopt_blob() {
1373   ResourceMark rm;
1374   CodeBuffer buffer("deopt_blob", 1024, 1024);
1375   int frame_size_in_words;
1376   OopMapSet* oop_maps;
1377   int reexecute_offset;
1378   int exception_in_tls_offset;
1379   int exception_offset;
1380 
1381   MacroAssembler* masm = new MacroAssembler(&buffer);
1382   Label cont;
1383   const Register Rkind   = R9; // caller-saved
1384   const Register Rublock = R6;
1385   const Register Rsender = altFP_7_11;
1386   assert_different_registers(Rkind, Rublock, Rsender, Rexception_obj, Rexception_pc, R0, R1, R2, R3, R8, Rtemp);
1387 
1388   address start = __ pc();
1389 
1390   oop_maps = new OopMapSet();

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