191
192 static void restore_live_registers(StubAssembler* sasm, bool restore_fpu_registers = true) {
193 __ block_comment("restore_live_registers");
194 RegisterSaver::RegisterSet reg_set =
195 restore_fpu_registers ? RegisterSaver::all_registers : RegisterSaver::all_integer_registers;
196 RegisterSaver::restore_live_registers(sasm, reg_set);
197 }
198
199 static void restore_live_registers_except_r2(StubAssembler* sasm, bool restore_fpu_registers = true) {
200 if (!restore_fpu_registers) {
201 __ unimplemented(FILE_AND_LINE);
202 }
203 __ block_comment("restore_live_registers_except_r2");
204 RegisterSaver::restore_live_registers(sasm, RegisterSaver::all_registers_except_r2);
205 }
206
207 void Runtime1::initialize_pd() {
208 // Nothing to do.
209 }
210
211 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
212 // Make a frame and preserve the caller's caller-save registers.
213 OopMap* oop_map = save_live_registers(sasm);
214 int call_offset;
215 if (!has_argument) {
216 call_offset = __ call_RT(noreg, noreg, target);
217 } else {
218 call_offset = __ call_RT(noreg, noreg, target, Z_R1_scratch, Z_R0_scratch);
219 }
220 OopMapSet* oop_maps = new OopMapSet();
221 oop_maps->add_gc_map(call_offset, oop_map);
222
223 __ should_not_reach_here();
224 return oop_maps;
225 }
226
227 void Runtime1::generate_unwind_exception(StubAssembler *sasm) {
228 // Incoming parameters: Z_EXC_OOP and Z_EXC_PC.
229 // Keep copies in callee-saved registers during runtime call.
230 const Register exception_oop_callee_saved = Z_R11;
|
191
192 static void restore_live_registers(StubAssembler* sasm, bool restore_fpu_registers = true) {
193 __ block_comment("restore_live_registers");
194 RegisterSaver::RegisterSet reg_set =
195 restore_fpu_registers ? RegisterSaver::all_registers : RegisterSaver::all_integer_registers;
196 RegisterSaver::restore_live_registers(sasm, reg_set);
197 }
198
199 static void restore_live_registers_except_r2(StubAssembler* sasm, bool restore_fpu_registers = true) {
200 if (!restore_fpu_registers) {
201 __ unimplemented(FILE_AND_LINE);
202 }
203 __ block_comment("restore_live_registers_except_r2");
204 RegisterSaver::restore_live_registers(sasm, RegisterSaver::all_registers_except_r2);
205 }
206
207 void Runtime1::initialize_pd() {
208 // Nothing to do.
209 }
210
211 uint Runtime1::runtime_blob_current_thread_offset(frame f) {
212 Unimplemented();
213 return 0;
214 }
215
216 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
217 // Make a frame and preserve the caller's caller-save registers.
218 OopMap* oop_map = save_live_registers(sasm);
219 int call_offset;
220 if (!has_argument) {
221 call_offset = __ call_RT(noreg, noreg, target);
222 } else {
223 call_offset = __ call_RT(noreg, noreg, target, Z_R1_scratch, Z_R0_scratch);
224 }
225 OopMapSet* oop_maps = new OopMapSet();
226 oop_maps->add_gc_map(call_offset, oop_map);
227
228 __ should_not_reach_here();
229 return oop_maps;
230 }
231
232 void Runtime1::generate_unwind_exception(StubAssembler *sasm) {
233 // Incoming parameters: Z_EXC_OOP and Z_EXC_PC.
234 // Keep copies in callee-saved registers during runtime call.
235 const Register exception_oop_callee_saved = Z_R11;
|