< prev index next >

src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp

Print this page




 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");


< prev index next >