< prev index next >

src/hotspot/cpu/s390/macroAssembler_s390.cpp

Print this page
rev 49643 : [mq]: heap8
rev 49649 : [mq]: heap14


2769   bind(no_reserved_zone_enabling);
2770   BLOCK_COMMENT("} reserved_stack_check");
2771 }
2772 
2773 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
2774 void MacroAssembler::tlab_allocate(Register obj,
2775                                    Register var_size_in_bytes,
2776                                    int con_size_in_bytes,
2777                                    Register t1,
2778                                    Label& slow_case) {
2779   assert_different_registers(obj, var_size_in_bytes, t1);
2780   Register end = t1;
2781   Register thread = Z_thread;
2782 
2783   z_lg(obj, Address(thread, JavaThread::tlab_top_offset()));
2784   if (var_size_in_bytes == noreg) {
2785     z_lay(end, Address(obj, con_size_in_bytes));
2786   } else {
2787     z_lay(end, Address(obj, var_size_in_bytes));
2788   }
2789   z_cg(end, Address(thread, JavaThread::tlab_current_end_offset()));
2790   branch_optimized(bcondHigh, slow_case);
2791 
2792   // Update the tlab top pointer.
2793   z_stg(end, Address(thread, JavaThread::tlab_top_offset()));
2794 
2795   // Recover var_size_in_bytes if necessary.
2796   if (var_size_in_bytes == end) {
2797     z_sgr(var_size_in_bytes, obj);
2798   }
2799 }
2800 
2801 // Emitter for interface method lookup.
2802 //   input: recv_klass, intf_klass, itable_index
2803 //   output: method_result
2804 //   kills: itable_index, temp1_reg, Z_R0, Z_R1
2805 // TODO: Temp2_reg is unused. we may use this emitter also in the itable stubs.
2806 // If the register is still not needed then, remove it.
2807 void MacroAssembler::lookup_interface_method(Register           recv_klass,
2808                                              Register           intf_klass,
2809                                              RegisterOrConstant itable_index,




2769   bind(no_reserved_zone_enabling);
2770   BLOCK_COMMENT("} reserved_stack_check");
2771 }
2772 
2773 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
2774 void MacroAssembler::tlab_allocate(Register obj,
2775                                    Register var_size_in_bytes,
2776                                    int con_size_in_bytes,
2777                                    Register t1,
2778                                    Label& slow_case) {
2779   assert_different_registers(obj, var_size_in_bytes, t1);
2780   Register end = t1;
2781   Register thread = Z_thread;
2782 
2783   z_lg(obj, Address(thread, JavaThread::tlab_top_offset()));
2784   if (var_size_in_bytes == noreg) {
2785     z_lay(end, Address(obj, con_size_in_bytes));
2786   } else {
2787     z_lay(end, Address(obj, var_size_in_bytes));
2788   }
2789   z_cg(end, Address(thread, JavaThread::tlab_fast_path_end_offset()));
2790   branch_optimized(bcondHigh, slow_case);
2791 
2792   // Update the tlab top pointer.
2793   z_stg(end, Address(thread, JavaThread::tlab_top_offset()));
2794 
2795   // Recover var_size_in_bytes if necessary.
2796   if (var_size_in_bytes == end) {
2797     z_sgr(var_size_in_bytes, obj);
2798   }
2799 }
2800 
2801 // Emitter for interface method lookup.
2802 //   input: recv_klass, intf_klass, itable_index
2803 //   output: method_result
2804 //   kills: itable_index, temp1_reg, Z_R0, Z_R1
2805 // TODO: Temp2_reg is unused. we may use this emitter also in the itable stubs.
2806 // If the register is still not needed then, remove it.
2807 void MacroAssembler::lookup_interface_method(Register           recv_klass,
2808                                              Register           intf_klass,
2809                                              RegisterOrConstant itable_index,


< prev index next >