< prev index next >

src/hotspot/cpu/s390/sharedRuntime_s390.cpp

Print this page

2369 //
2370 // Actually only compiled frames need to be adjusted, but it
2371 // doesn't harm to adjust entry and interpreter frames, too.
2372 //
2373 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2374   assert(callee_locals >= callee_parameters,
2375           "test and remove; got more parms than locals");
2376   // Handle the abi adjustment here instead of doing it in push_skeleton_frames.
2377   return (callee_locals - callee_parameters) * Interpreter::stackElementWords +
2378          frame::z_parent_ijava_frame_abi_size / BytesPerWord;
2379 }
2380 
2381 uint SharedRuntime::in_preserve_stack_slots() {
2382   return frame::jit_in_preserve_size_in_4_byte_units;
2383 }
2384 
2385 uint SharedRuntime::out_preserve_stack_slots() {
2386   return frame::z_jit_out_preserve_size/VMRegImpl::stack_slot_size;
2387 }
2388 





2389 //
2390 // Frame generation for deopt and uncommon trap blobs.
2391 //
2392 static void push_skeleton_frame(MacroAssembler* masm,
2393                           /* Unchanged */
2394                           Register frame_sizes_reg,
2395                           Register pcs_reg,
2396                           /* Invalidate */
2397                           Register frame_size_reg,
2398                           Register pc_reg) {
2399   BLOCK_COMMENT("  push_skeleton_frame {");
2400    __ z_lg(pc_reg, 0, pcs_reg);
2401    __ z_lg(frame_size_reg, 0, frame_sizes_reg);
2402    __ z_stg(pc_reg, _z_abi(return_pc), Z_SP);
2403    Register fp = pc_reg;
2404    __ push_frame(frame_size_reg, fp);
2405 #ifdef ASSERT
2406    // The magic is required for successful walking skeletal frames.
2407    __ load_const_optimized(frame_size_reg/*tmp*/, frame::z_istate_magic_number);
2408    __ z_stg(frame_size_reg, _z_ijava_state_neg(magic), fp);

2369 //
2370 // Actually only compiled frames need to be adjusted, but it
2371 // doesn't harm to adjust entry and interpreter frames, too.
2372 //
2373 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2374   assert(callee_locals >= callee_parameters,
2375           "test and remove; got more parms than locals");
2376   // Handle the abi adjustment here instead of doing it in push_skeleton_frames.
2377   return (callee_locals - callee_parameters) * Interpreter::stackElementWords +
2378          frame::z_parent_ijava_frame_abi_size / BytesPerWord;
2379 }
2380 
2381 uint SharedRuntime::in_preserve_stack_slots() {
2382   return frame::jit_in_preserve_size_in_4_byte_units;
2383 }
2384 
2385 uint SharedRuntime::out_preserve_stack_slots() {
2386   return frame::z_jit_out_preserve_size/VMRegImpl::stack_slot_size;
2387 }
2388 
2389 VMReg SharedRuntime::thread_register() {
2390   Unimplemented();
2391   return nullptr;
2392 }
2393 
2394 //
2395 // Frame generation for deopt and uncommon trap blobs.
2396 //
2397 static void push_skeleton_frame(MacroAssembler* masm,
2398                           /* Unchanged */
2399                           Register frame_sizes_reg,
2400                           Register pcs_reg,
2401                           /* Invalidate */
2402                           Register frame_size_reg,
2403                           Register pc_reg) {
2404   BLOCK_COMMENT("  push_skeleton_frame {");
2405    __ z_lg(pc_reg, 0, pcs_reg);
2406    __ z_lg(frame_size_reg, 0, frame_sizes_reg);
2407    __ z_stg(pc_reg, _z_abi(return_pc), Z_SP);
2408    Register fp = pc_reg;
2409    __ push_frame(frame_size_reg, fp);
2410 #ifdef ASSERT
2411    // The magic is required for successful walking skeletal frames.
2412    __ load_const_optimized(frame_size_reg/*tmp*/, frame::z_istate_magic_number);
2413    __ z_stg(frame_size_reg, _z_ijava_state_neg(magic), fp);
< prev index next >