< prev index next >

src/hotspot/cpu/s390/sharedRuntime_s390.cpp

Print this page

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





2379 //
2380 // Frame generation for deopt and uncommon trap blobs.
2381 //
2382 static void push_skeleton_frame(MacroAssembler* masm,
2383                           /* Unchanged */
2384                           Register frame_sizes_reg,
2385                           Register pcs_reg,
2386                           /* Invalidate */
2387                           Register frame_size_reg,
2388                           Register pc_reg) {
2389   BLOCK_COMMENT("  push_skeleton_frame {");
2390    __ z_lg(pc_reg, 0, pcs_reg);
2391    __ z_lg(frame_size_reg, 0, frame_sizes_reg);
2392    __ z_stg(pc_reg, _z_abi(return_pc), Z_SP);
2393    Register fp = pc_reg;
2394    __ push_frame(frame_size_reg, fp);
2395 #ifdef ASSERT
2396    // The magic is required for successful walking skeletal frames.
2397    __ load_const_optimized(frame_size_reg/*tmp*/, frame::z_istate_magic_number);
2398    __ z_stg(frame_size_reg, _z_ijava_state_neg(magic), fp);

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