150 _index = index;
151 _value = value;
152 _scratch_reg = FrameMap::r0_oop_opr;
153 _info = new CodeEmitInfo(info);
154 }
155
156
157 void StoreFlattenedArrayStub::emit_code(LIR_Assembler* ce) {
158 assert(__ rsp_offset() == 0, "frame size should be fixed");
159 __ bind(_entry);
160 ce->store_parameter(_array->as_register(), 2);
161 ce->store_parameter(_index->as_register(), 1);
162 ce->store_parameter(_value->as_register(), 0);
163 __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::store_flattened_array_id)));
164 ce->add_call_info_here(_info);
165 ce->verify_oop_map(_info);
166 __ b(_continuation);
167 }
168
169 // Implementation of SubstitutabilityCheckStub
170 SubstitutabilityCheckStub::SubstitutabilityCheckStub(LIR_Opr left, LIR_Opr right, LIR_Opr result, CodeEmitInfo* info) {
171 _left = left;
172 _right = right;
173 _result = result;
174 _scratch_reg = FrameMap::r0_oop_opr;
175 _info = new CodeEmitInfo(info);
176 }
177
178 void SubstitutabilityCheckStub::emit_code(LIR_Assembler* ce) {
179 assert(__ rsp_offset() == 0, "frame size should be fixed");
180 __ bind(_entry);
181 ce->store_parameter(_left->as_register(), 1);
182 ce->store_parameter(_right->as_register(), 0);
183 __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::substitutability_check_id)));
184 ce->add_call_info_here(_info);
185 ce->verify_oop_map(_info);
186 if (_result->as_register() != r0) {
187 __ mov(_result->as_register(), r0);
188 }
189 __ b(_continuation);
190 }
191
192
193 // Implementation of NewInstanceStub
194
195 NewInstanceStub::NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id) {
196 _result = result;
197 _klass = klass;
198 _klass_reg = klass_reg;
199 _info = new CodeEmitInfo(info);
200 assert(stub_id == Runtime1::new_instance_id ||
201 stub_id == Runtime1::fast_new_instance_id ||
202 stub_id == Runtime1::fast_new_instance_init_check_id,
203 "need new_instance id");
204 _stub_id = stub_id;
205 }
206
207 void NewInstanceStub::emit_code(LIR_Assembler* ce) {
208 assert(__ rsp_offset() == 0, "frame size should be fixed");
|
150 _index = index;
151 _value = value;
152 _scratch_reg = FrameMap::r0_oop_opr;
153 _info = new CodeEmitInfo(info);
154 }
155
156
157 void StoreFlattenedArrayStub::emit_code(LIR_Assembler* ce) {
158 assert(__ rsp_offset() == 0, "frame size should be fixed");
159 __ bind(_entry);
160 ce->store_parameter(_array->as_register(), 2);
161 ce->store_parameter(_index->as_register(), 1);
162 ce->store_parameter(_value->as_register(), 0);
163 __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::store_flattened_array_id)));
164 ce->add_call_info_here(_info);
165 ce->verify_oop_map(_info);
166 __ b(_continuation);
167 }
168
169 // Implementation of SubstitutabilityCheckStub
170 SubstitutabilityCheckStub::SubstitutabilityCheckStub(LIR_Opr left, LIR_Opr right, CodeEmitInfo* info) {
171 _left = left;
172 _right = right;
173 _scratch_reg = FrameMap::r0_oop_opr;
174 _info = new CodeEmitInfo(info);
175 }
176
177 void SubstitutabilityCheckStub::emit_code(LIR_Assembler* ce) {
178 assert(__ rsp_offset() == 0, "frame size should be fixed");
179 __ bind(_entry);
180 ce->store_parameter(_left->as_register(), 1);
181 ce->store_parameter(_right->as_register(), 0);
182 __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::substitutability_check_id)));
183 ce->add_call_info_here(_info);
184 ce->verify_oop_map(_info);
185 __ b(_continuation);
186 }
187
188
189 // Implementation of NewInstanceStub
190
191 NewInstanceStub::NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id) {
192 _result = result;
193 _klass = klass;
194 _klass_reg = klass_reg;
195 _info = new CodeEmitInfo(info);
196 assert(stub_id == Runtime1::new_instance_id ||
197 stub_id == Runtime1::fast_new_instance_id ||
198 stub_id == Runtime1::fast_new_instance_init_check_id,
199 "need new_instance id");
200 _stub_id = stub_id;
201 }
202
203 void NewInstanceStub::emit_code(LIR_Assembler* ce) {
204 assert(__ rsp_offset() == 0, "frame size should be fixed");
|