src/cpu/x86/vm/c1_Runtime1_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7102657 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/c1_Runtime1_x86.cpp

Print this page




1430     case monitorexit_nofpu_id:
1431       save_fpu_registers = false;
1432       // fall through
1433     case monitorexit_id:
1434       {
1435         StubFrame f(sasm, "monitorexit", dont_gc_arguments);
1436         OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1437 
1438         // Called with store_parameter and not C abi
1439 
1440         f.load_argument(0, rax); // rax,: lock address
1441 
1442         // note: really a leaf routine but must setup last java sp
1443         //       => use call_RT for now (speed can be improved by
1444         //       doing last java sp setup manually)
1445         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax);
1446 
1447         oop_maps = new OopMapSet();
1448         oop_maps->add_gc_map(call_offset, map);
1449         restore_live_registers(sasm, save_fpu_registers);


1450 













1451       }
1452       break;
1453 
1454     case access_field_patching_id:
1455       { StubFrame f(sasm, "access_field_patching", dont_gc_arguments);
1456         // we should set up register map
1457         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
1458       }
1459       break;
1460 
1461     case load_klass_patching_id:
1462       { StubFrame f(sasm, "load_klass_patching", dont_gc_arguments);
1463         // we should set up register map
1464         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
1465       }
1466       break;
1467 
1468     case dtrace_object_alloc_id:
1469       { // rax,: object
1470         StubFrame f(sasm, "dtrace_object_alloc", dont_gc_arguments);




1430     case monitorexit_nofpu_id:
1431       save_fpu_registers = false;
1432       // fall through
1433     case monitorexit_id:
1434       {
1435         StubFrame f(sasm, "monitorexit", dont_gc_arguments);
1436         OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
1437 
1438         // Called with store_parameter and not C abi
1439 
1440         f.load_argument(0, rax); // rax,: lock address
1441 
1442         // note: really a leaf routine but must setup last java sp
1443         //       => use call_RT for now (speed can be improved by
1444         //       doing last java sp setup manually)
1445         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax);
1446 
1447         oop_maps = new OopMapSet();
1448         oop_maps->add_gc_map(call_offset, map);
1449         restore_live_registers(sasm, save_fpu_registers);
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()));
1466       }
1467       break;
1468 
1469     case access_field_patching_id:
1470       { StubFrame f(sasm, "access_field_patching", dont_gc_arguments);
1471         // we should set up register map
1472         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
1473       }
1474       break;
1475 
1476     case load_klass_patching_id:
1477       { StubFrame f(sasm, "load_klass_patching", dont_gc_arguments);
1478         // we should set up register map
1479         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
1480       }
1481       break;
1482 
1483     case dtrace_object_alloc_id:
1484       { // rax,: object
1485         StubFrame f(sasm, "dtrace_object_alloc", dont_gc_arguments);


src/cpu/x86/vm/c1_Runtime1_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File