< prev index next >

src/hotspot/cpu/s390/sharedRuntime_s390.cpp

Print this page

2389 //
2390 // Actually only compiled frames need to be adjusted, but it
2391 // doesn't harm to adjust entry and interpreter frames, too.
2392 //
2393 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2394   assert(callee_locals >= callee_parameters,
2395           "test and remove; got more parms than locals");
2396   // Handle the abi adjustment here instead of doing it in push_skeleton_frames.
2397   return (callee_locals - callee_parameters) * Interpreter::stackElementWords +
2398          frame::z_parent_ijava_frame_abi_size / BytesPerWord;
2399 }
2400 
2401 uint SharedRuntime::in_preserve_stack_slots() {
2402   return frame::jit_in_preserve_size_in_4_byte_units;
2403 }
2404 
2405 uint SharedRuntime::out_preserve_stack_slots() {
2406   return frame::z_jit_out_preserve_size/VMRegImpl::stack_slot_size;
2407 }
2408 





2409 //
2410 // Frame generation for deopt and uncommon trap blobs.
2411 //
2412 static void push_skeleton_frame(MacroAssembler* masm,
2413                           /* Unchanged */
2414                           Register frame_sizes_reg,
2415                           Register pcs_reg,
2416                           /* Invalidate */
2417                           Register frame_size_reg,
2418                           Register pc_reg) {
2419   BLOCK_COMMENT("  push_skeleton_frame {");
2420    __ z_lg(pc_reg, 0, pcs_reg);
2421    __ z_lg(frame_size_reg, 0, frame_sizes_reg);
2422    __ z_stg(pc_reg, _z_abi(return_pc), Z_SP);
2423    Register fp = pc_reg;
2424    __ push_frame(frame_size_reg, fp);
2425 #ifdef ASSERT
2426    // The magic is required for successful walking skeletal frames.
2427    __ load_const_optimized(frame_size_reg/*tmp*/, frame::z_istate_magic_number);
2428    __ z_stg(frame_size_reg, _z_ijava_state_neg(magic), fp);

2389 //
2390 // Actually only compiled frames need to be adjusted, but it
2391 // doesn't harm to adjust entry and interpreter frames, too.
2392 //
2393 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) {
2394   assert(callee_locals >= callee_parameters,
2395           "test and remove; got more parms than locals");
2396   // Handle the abi adjustment here instead of doing it in push_skeleton_frames.
2397   return (callee_locals - callee_parameters) * Interpreter::stackElementWords +
2398          frame::z_parent_ijava_frame_abi_size / BytesPerWord;
2399 }
2400 
2401 uint SharedRuntime::in_preserve_stack_slots() {
2402   return frame::jit_in_preserve_size_in_4_byte_units;
2403 }
2404 
2405 uint SharedRuntime::out_preserve_stack_slots() {
2406   return frame::z_jit_out_preserve_size/VMRegImpl::stack_slot_size;
2407 }
2408 
2409 VMReg SharedRuntime::thread_register() {
2410   Unimplemented();
2411   return nullptr;
2412 }
2413 
2414 //
2415 // Frame generation for deopt and uncommon trap blobs.
2416 //
2417 static void push_skeleton_frame(MacroAssembler* masm,
2418                           /* Unchanged */
2419                           Register frame_sizes_reg,
2420                           Register pcs_reg,
2421                           /* Invalidate */
2422                           Register frame_size_reg,
2423                           Register pc_reg) {
2424   BLOCK_COMMENT("  push_skeleton_frame {");
2425    __ z_lg(pc_reg, 0, pcs_reg);
2426    __ z_lg(frame_size_reg, 0, frame_sizes_reg);
2427    __ z_stg(pc_reg, _z_abi(return_pc), Z_SP);
2428    Register fp = pc_reg;
2429    __ push_frame(frame_size_reg, fp);
2430 #ifdef ASSERT
2431    // The magic is required for successful walking skeletal frames.
2432    __ load_const_optimized(frame_size_reg/*tmp*/, frame::z_istate_magic_number);
2433    __ z_stg(frame_size_reg, _z_ijava_state_neg(magic), fp);
< prev index next >