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

src/cpu/x86/vm/c1_Runtime1_x86.cpp

Print this page




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 jvmti_exception_throw_id:
1469       { // rax,: exception oop
1470         StubFrame f(sasm, "jvmti_exception_throw", dont_gc_arguments);
1471         // Preserve all registers across this potentially blocking call
1472         const int num_rt_args = 2;  // thread, exception oop
1473         OopMap* map = save_live_registers(sasm, num_rt_args);
1474         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, Runtime1::post_jvmti_exception_throw), rax);
1475         oop_maps = new OopMapSet();
1476         oop_maps->add_gc_map(call_offset, map);
1477         restore_live_registers(sasm);
1478       }
1479       break;
1480 
1481     case dtrace_object_alloc_id:
1482       { // rax,: object
1483         StubFrame f(sasm, "dtrace_object_alloc", dont_gc_arguments);
1484         // we can't gc here so skip the oopmap but make sure that all
1485         // the live registers get saved.
1486         save_live_registers(sasm, 1);
1487 
1488         __ NOT_LP64(push(rax)) LP64_ONLY(mov(c_rarg0, rax));
1489         __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc)));
1490         NOT_LP64(__ pop(rax));
1491 
1492         restore_live_registers(sasm);
1493       }
1494       break;
1495 
1496     case fpu2long_stub_id:
1497       {
1498         // rax, and rdx are destroyed, but should be free since the result is returned there
1499         // preserve rsi,ecx
1500         __ push(rsi);




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);
1471         // we can't gc here so skip the oopmap but make sure that all
1472         // the live registers get saved.
1473         save_live_registers(sasm, 1);
1474 
1475         __ NOT_LP64(push(rax)) LP64_ONLY(mov(c_rarg0, rax));
1476         __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc)));
1477         NOT_LP64(__ pop(rax));
1478 
1479         restore_live_registers(sasm);
1480       }
1481       break;
1482 
1483     case fpu2long_stub_id:
1484       {
1485         // rax, and rdx are destroyed, but should be free since the result is returned there
1486         // preserve rsi,ecx
1487         __ push(rsi);


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