src/cpu/x86/vm/c1_Runtime1_x86.cpp

changeset 3244
cec1757a0134
parent 3099
c124e2e7463e
child 3368
52b5d32fbfaf
child 3391
069ab3f976d3
equal deleted inserted replaced
3243:d8cb48376797 3244:cec1757a0134
1445 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax); 1445 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax);
1446 1446
1447 oop_maps = new OopMapSet(); 1447 oop_maps = new OopMapSet();
1448 oop_maps->add_gc_map(call_offset, map); 1448 oop_maps->add_gc_map(call_offset, map);
1449 restore_live_registers(sasm, save_fpu_registers); 1449 restore_live_registers(sasm, save_fpu_registers);
1450 1450 }
1451 break;
1452
1453 case deoptimize_id:
1454 {
1455 StubFrame f(sasm, "deoptimize", dont_gc_arguments);
1456 const int num_rt_args = 1; // thread
1457 OopMap* oop_map = save_live_registers(sasm, num_rt_args);
1458 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize));
1459 oop_maps = new OopMapSet();
1460 oop_maps->add_gc_map(call_offset, oop_map);
1461 restore_live_registers(sasm);
1462 DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
1463 assert(deopt_blob != NULL, "deoptimization blob must have been created");
1464 __ leave();
1465 __ jump(RuntimeAddress(deopt_blob->unpack_with_reexecution()));
1451 } 1466 }
1452 break; 1467 break;
1453 1468
1454 case access_field_patching_id: 1469 case access_field_patching_id:
1455 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments); 1470 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments);

mercurial