189 _result = result;
190 _info = new CodeEmitInfo(info);
191 }
192
193
194 void NewTypeArrayStub::emit_code(LIR_Assembler* ce) {
195 assert(__ rsp_offset() == 0, "frame size should be fixed");
196 __ bind(_entry);
197 assert(_length->as_register() == rbx, "length must in rbx,");
198 assert(_klass_reg->as_register() == rdx, "klass_reg must in rdx");
199 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::new_type_array_id)));
200 ce->add_call_info_here(_info);
201 ce->verify_oop_map(_info);
202 assert(_result->as_register() == rax, "result must in rax,");
203 __ jmp(_continuation);
204 }
205
206
207 // Implementation of NewObjectArrayStub
208
209 NewObjectArrayStub::NewObjectArrayStub(LIR_Opr klass_reg, LIR_Opr length, LIR_Opr result, CodeEmitInfo* info) {
210 _klass_reg = klass_reg;
211 _result = result;
212 _length = length;
213 _info = new CodeEmitInfo(info);
214 }
215
216
217 void NewObjectArrayStub::emit_code(LIR_Assembler* ce) {
218 assert(__ rsp_offset() == 0, "frame size should be fixed");
219 __ bind(_entry);
220 assert(_length->as_register() == rbx, "length must in rbx,");
221 assert(_klass_reg->as_register() == rdx, "klass_reg must in rdx");
222 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::new_object_array_id)));
223 ce->add_call_info_here(_info);
224 ce->verify_oop_map(_info);
225 assert(_result->as_register() == rax, "result must in rax,");
226 __ jmp(_continuation);
227 }
228
229
230 // Implementation of MonitorAccessStubs
231
232 MonitorEnterStub::MonitorEnterStub(LIR_Opr obj_reg, LIR_Opr lock_reg, CodeEmitInfo* info)
233 : MonitorAccessStub(obj_reg, lock_reg)
234 {
235 _info = new CodeEmitInfo(info);
236 }
237
238
239 void MonitorEnterStub::emit_code(LIR_Assembler* ce) {
240 assert(__ rsp_offset() == 0, "frame size should be fixed");
241 __ bind(_entry);
242 ce->store_parameter(_obj_reg->as_register(), 1);
|
189 _result = result;
190 _info = new CodeEmitInfo(info);
191 }
192
193
194 void NewTypeArrayStub::emit_code(LIR_Assembler* ce) {
195 assert(__ rsp_offset() == 0, "frame size should be fixed");
196 __ bind(_entry);
197 assert(_length->as_register() == rbx, "length must in rbx,");
198 assert(_klass_reg->as_register() == rdx, "klass_reg must in rdx");
199 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::new_type_array_id)));
200 ce->add_call_info_here(_info);
201 ce->verify_oop_map(_info);
202 assert(_result->as_register() == rax, "result must in rax,");
203 __ jmp(_continuation);
204 }
205
206
207 // Implementation of NewObjectArrayStub
208
209 NewObjectArrayStub::NewObjectArrayStub(LIR_Opr klass_reg, LIR_Opr length, LIR_Opr result,
210 CodeEmitInfo* info, bool is_value_type) {
211 _klass_reg = klass_reg;
212 _result = result;
213 _length = length;
214 _info = new CodeEmitInfo(info);
215 _is_value_type = is_value_type;
216 }
217
218
219 void NewObjectArrayStub::emit_code(LIR_Assembler* ce) {
220 assert(__ rsp_offset() == 0, "frame size should be fixed");
221 __ bind(_entry);
222 assert(_length->as_register() == rbx, "length must in rbx,");
223 assert(_klass_reg->as_register() == rdx, "klass_reg must in rdx");
224 if (_is_value_type) {
225 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::new_value_array_id)));
226 } else {
227 __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::new_object_array_id)));
228 }
229 ce->add_call_info_here(_info);
230 ce->verify_oop_map(_info);
231 assert(_result->as_register() == rax, "result must in rax,");
232 __ jmp(_continuation);
233 }
234
235
236 // Implementation of MonitorAccessStubs
237
238 MonitorEnterStub::MonitorEnterStub(LIR_Opr obj_reg, LIR_Opr lock_reg, CodeEmitInfo* info)
239 : MonitorAccessStub(obj_reg, lock_reg)
240 {
241 _info = new CodeEmitInfo(info);
242 }
243
244
245 void MonitorEnterStub::emit_code(LIR_Assembler* ce) {
246 assert(__ rsp_offset() == 0, "frame size should be fixed");
247 __ bind(_entry);
248 ce->store_parameter(_obj_reg->as_register(), 1);
|