< prev index next >

src/hotspot/share/opto/c2_CodeStubs.hpp

Print this page

113   void emit(C2_MacroAssembler& masm);
114   Label& push_and_slow_path() { return _push_and_slow_path; }
115   Label& check_successor() { return _check_successor; }
116   Label& unlocked_continuation() { return _unlocked_continuation; }
117   Label& slow_path_continuation() { return continuation(); }
118 };
119 
120 #ifdef _LP64
121 class C2HandleAnonOMOwnerStub : public C2CodeStub {
122 private:
123   Register _monitor;
124   Register _tmp;
125 public:
126   C2HandleAnonOMOwnerStub(Register monitor, Register tmp = noreg) : C2CodeStub(),
127     _monitor(monitor), _tmp(tmp) {}
128   Register monitor() { return _monitor; }
129   Register tmp() { return _tmp; }
130   int max_size() const;
131   void emit(C2_MacroAssembler& masm);
132 };










133 #endif
134 
135 //-----------------------------C2GeneralStub-----------------------------------
136 // A generalized stub that can be used to implement an arbitrary stub in a
137 // type-safe manner. An example:
138 //
139 // Register dst; XMMRegister src;
140 // // The lambda defining how the code is emitted in the stub
141 // auto slowpath = [](C2_MacroAssembler& masm, C2GeneralStub<Register, XMMRegister>& stub) {
142 //   // Access the saved data in a type safe manner
143 //   Register dst = stub.get<0>();
144 //   XMMRegister src = stub.get<1>();
145 //   masm.bind(stub.entry());
146 //   ...
147 //   masm.jump(stub.continuation());
148 // }
149 // // Create a stub with 2 data fields being dst and src, a max size of 4 bytes
150 // // and predefined emission function
151 // auto stub = C2CodeStub::make<Register, XMMRegister>(dst, src, 4, slowpath);
152 // __ jump_conditional(stub->entry());

113   void emit(C2_MacroAssembler& masm);
114   Label& push_and_slow_path() { return _push_and_slow_path; }
115   Label& check_successor() { return _check_successor; }
116   Label& unlocked_continuation() { return _unlocked_continuation; }
117   Label& slow_path_continuation() { return continuation(); }
118 };
119 
120 #ifdef _LP64
121 class C2HandleAnonOMOwnerStub : public C2CodeStub {
122 private:
123   Register _monitor;
124   Register _tmp;
125 public:
126   C2HandleAnonOMOwnerStub(Register monitor, Register tmp = noreg) : C2CodeStub(),
127     _monitor(monitor), _tmp(tmp) {}
128   Register monitor() { return _monitor; }
129   Register tmp() { return _tmp; }
130   int max_size() const;
131   void emit(C2_MacroAssembler& masm);
132 };
133 
134 class C2LoadNKlassStub : public C2CodeStub {
135 private:
136   Register _dst;
137 public:
138   C2LoadNKlassStub(Register dst) : C2CodeStub(), _dst(dst) {}
139   Register dst() { return _dst; }
140   int max_size() const;
141   void emit(C2_MacroAssembler& masm);
142 };
143 #endif
144 
145 //-----------------------------C2GeneralStub-----------------------------------
146 // A generalized stub that can be used to implement an arbitrary stub in a
147 // type-safe manner. An example:
148 //
149 // Register dst; XMMRegister src;
150 // // The lambda defining how the code is emitted in the stub
151 // auto slowpath = [](C2_MacroAssembler& masm, C2GeneralStub<Register, XMMRegister>& stub) {
152 //   // Access the saved data in a type safe manner
153 //   Register dst = stub.get<0>();
154 //   XMMRegister src = stub.get<1>();
155 //   masm.bind(stub.entry());
156 //   ...
157 //   masm.jump(stub.continuation());
158 // }
159 // // Create a stub with 2 data fields being dst and src, a max size of 4 bytes
160 // // and predefined emission function
161 // auto stub = C2CodeStub::make<Register, XMMRegister>(dst, src, 4, slowpath);
162 // __ jump_conditional(stub->entry());
< prev index next >