< prev index next >
src/hotspot/cpu/x86/c1_CodeStubs_x86.cpp
Print this page
*** 178,187 ****
--- 178,210 ----
}
__ jmp(_continuation);
}
+ // Implementation of StoreFlattenedArrayStub
+
+ StoreFlattenedArrayStub::StoreFlattenedArrayStub(LIR_Opr array, LIR_Opr index, LIR_Opr value, CodeEmitInfo* info) {
+ _array = array;
+ _index = index;
+ _value = value;
+ _info = new CodeEmitInfo(info);
+ }
+
+
+ void StoreFlattenedArrayStub::emit_code(LIR_Assembler* ce) {
+ assert(__ rsp_offset() == 0, "frame size should be fixed");
+ __ bind(_entry);
+ ce->store_parameter(_array->as_register(), 2);
+ ce->store_parameter(_index->as_register(), 1);
+ ce->store_parameter(_value->as_register(), 0);
+ __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::store_flattened_array_id)));
+ ce->add_call_info_here(_info);
+ ce->verify_oop_map(_info);
+ __ jmp(_continuation);
+ }
+
+
// Implementation of NewInstanceStub
NewInstanceStub::NewInstanceStub(LIR_Opr klass_reg, LIR_Opr result, ciInstanceKlass* klass, CodeEmitInfo* info, Runtime1::StubID stub_id) {
_result = result;
_klass = klass;
< prev index next >