38 #include "runtime/continuation.hpp"
39 #include "runtime/continuationEntry.inline.hpp"
40 #include "runtime/jniHandles.hpp"
41 #include "runtime/os.inline.hpp"
42 #include "runtime/safepointMechanism.hpp"
43 #include "runtime/sharedRuntime.hpp"
44 #include "runtime/signature.hpp"
45 #include "runtime/stubRoutines.hpp"
46 #include "runtime/timerTrace.hpp"
47 #include "runtime/vframeArray.hpp"
48 #include "utilities/align.hpp"
49 #include "utilities/macros.hpp"
50 #include "vmreg_ppc.inline.hpp"
51 #ifdef COMPILER1
52 #include "c1/c1_Runtime1.hpp"
53 #endif
54 #ifdef COMPILER2
55 #include "opto/ad.hpp"
56 #include "opto/runtime.hpp"
57 #endif
58
59 #include <alloca.h>
60
61 #define __ masm->
62
63 #ifdef PRODUCT
64 #define BLOCK_COMMENT(str) // nothing
65 #else
66 #define BLOCK_COMMENT(str) __ block_comment(str)
67 #endif
68
69 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
70
71
72 class RegisterSaver {
73 // Used for saving volatile registers.
74 public:
75
76 // Support different return pc locations.
77 enum ReturnPCLocation {
3818 __ call_VM_leaf(CAST_FROM_FN_PTR(address, JfrIntrinsicSupport::return_lease), R16_thread);
3819 address calls_return_pc = __ last_calls_return_pc();
3820 __ reset_last_Java_frame();
3821 __ pop_frame();
3822 __ ld(tmp1, _abi0(lr), R1_SP);
3823 __ mtlr(tmp1);
3824 __ blr();
3825
3826 OopMapSet* oop_maps = new OopMapSet();
3827 OopMap* map = new OopMap(framesize, 0);
3828 oop_maps->add_gc_map(calls_return_pc - start, map);
3829
3830 RuntimeStub* stub = // codeBlob framesize is in words (not VMRegImpl::slot_size)
3831 RuntimeStub::new_runtime_stub(name, &code, frame_complete,
3832 (framesize >> (LogBytesPerWord - LogBytesPerInt)),
3833 oop_maps, false);
3834 return stub;
3835 }
3836
3837 #endif // INCLUDE_JFR
|
38 #include "runtime/continuation.hpp"
39 #include "runtime/continuationEntry.inline.hpp"
40 #include "runtime/jniHandles.hpp"
41 #include "runtime/os.inline.hpp"
42 #include "runtime/safepointMechanism.hpp"
43 #include "runtime/sharedRuntime.hpp"
44 #include "runtime/signature.hpp"
45 #include "runtime/stubRoutines.hpp"
46 #include "runtime/timerTrace.hpp"
47 #include "runtime/vframeArray.hpp"
48 #include "utilities/align.hpp"
49 #include "utilities/macros.hpp"
50 #include "vmreg_ppc.inline.hpp"
51 #ifdef COMPILER1
52 #include "c1/c1_Runtime1.hpp"
53 #endif
54 #ifdef COMPILER2
55 #include "opto/ad.hpp"
56 #include "opto/runtime.hpp"
57 #endif
58 #if INCLUDE_SHENANDOAHGC
59 #include "gc/shenandoah/shenandoahRuntime.hpp"
60 #endif
61
62 #include <alloca.h>
63
64 #define __ masm->
65
66 #ifdef PRODUCT
67 #define BLOCK_COMMENT(str) // nothing
68 #else
69 #define BLOCK_COMMENT(str) __ block_comment(str)
70 #endif
71
72 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
73
74
75 class RegisterSaver {
76 // Used for saving volatile registers.
77 public:
78
79 // Support different return pc locations.
80 enum ReturnPCLocation {
3821 __ call_VM_leaf(CAST_FROM_FN_PTR(address, JfrIntrinsicSupport::return_lease), R16_thread);
3822 address calls_return_pc = __ last_calls_return_pc();
3823 __ reset_last_Java_frame();
3824 __ pop_frame();
3825 __ ld(tmp1, _abi0(lr), R1_SP);
3826 __ mtlr(tmp1);
3827 __ blr();
3828
3829 OopMapSet* oop_maps = new OopMapSet();
3830 OopMap* map = new OopMap(framesize, 0);
3831 oop_maps->add_gc_map(calls_return_pc - start, map);
3832
3833 RuntimeStub* stub = // codeBlob framesize is in words (not VMRegImpl::slot_size)
3834 RuntimeStub::new_runtime_stub(name, &code, frame_complete,
3835 (framesize >> (LogBytesPerWord - LogBytesPerInt)),
3836 oop_maps, false);
3837 return stub;
3838 }
3839
3840 #endif // INCLUDE_JFR
3841
3842 #if INCLUDE_SHENANDOAHGC
3843 RuntimeStub* SharedRuntime::generate_shenandoah_stub(StubId stub_id) {
3844 assert(UseShenandoahGC, "Only generate when Shenandoah is enabled");
3845 return nullptr;
3846 }
3847 #endif
|