Print this page


Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/c1_Runtime1_x86.cpp
          +++ new/src/cpu/x86/vm/c1_Runtime1_x86.cpp
↓ open down ↓ 1439 lines elided ↑ open up ↑
1440 1440          f.load_argument(0, rax); // rax,: lock address
1441 1441  
1442 1442          // note: really a leaf routine but must setup last java sp
1443 1443          //       => use call_RT for now (speed can be improved by
1444 1444          //       doing last java sp setup manually)
1445 1445          int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax);
1446 1446  
1447 1447          oop_maps = new OopMapSet();
1448 1448          oop_maps->add_gc_map(call_offset, map);
1449 1449          restore_live_registers(sasm, save_fpu_registers);
     1450 +      }
     1451 +      break;
1450 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 1467        break;
1453 1468  
1454 1469      case access_field_patching_id:
1455 1470        { StubFrame f(sasm, "access_field_patching", dont_gc_arguments);
1456 1471          // we should set up register map
1457 1472          oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
1458 1473        }
1459 1474        break;
1460 1475  
↓ open down ↓ 331 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX