< prev index next >

src/cpu/s390/vm/macroAssembler_s390.hpp

Print this page
rev 12487 : 8172049: [s390] Implement "JEP 270: Reserved Stack Areas for Critical Sections".
Reviewed-by: mdoerr


 610   void load_from_polling_page(Register polling_page_address, int64_t offset = 0);
 611 
 612   // Check if given instruction is a read from the polling page
 613   // as emitted by load_from_polling_page.
 614   static bool is_load_from_polling_page(address instr_loc);
 615   // Extract poll address from instruction and ucontext.
 616   static address get_poll_address(address instr_loc, void* ucontext);
 617   // Extract poll register from instruction.
 618   static uint get_poll_register(address instr_loc);
 619 
 620   // Check if instruction is a write access to the memory serialization page
 621   // realized by one of the instructions stw, stwu, stwx, or stwux.
 622   static bool is_memory_serialization(int instruction, JavaThread* thread, void* ucontext);
 623 
 624   // Support for serializing memory accesses between threads.
 625   void serialize_memory(Register thread, Register tmp1, Register tmp2);
 626 
 627   // Stack overflow checking
 628   void bang_stack_with_offset(int offset);
 629 





 630   // Atomics
 631   // -- none?
 632 
 633   void tlab_allocate(Register obj,                // Result: pointer to object after successful allocation
 634                      Register var_size_in_bytes,  // Object size in bytes if unknown at compile time; invalid otherwise.
 635                      int      con_size_in_bytes,  // Object size in bytes if   known at compile time.
 636                      Register t1,                 // temp register
 637                      Label&   slow_case);         // Continuation point if fast allocation fails.
 638 
 639   // Emitter for interface method lookup.
 640   //   input: recv_klass, intf_klass, itable_index
 641   //   output: method_result
 642   //   kills: itable_index, temp1_reg, Z_R0, Z_R1
 643   void lookup_interface_method(Register           recv_klass,
 644                                Register           intf_klass,
 645                                RegisterOrConstant itable_index,
 646                                Register           method_result,
 647                                Register           temp1_reg,
 648                                Register           temp2_reg,
 649                                Label&             no_such_interface);




 610   void load_from_polling_page(Register polling_page_address, int64_t offset = 0);
 611 
 612   // Check if given instruction is a read from the polling page
 613   // as emitted by load_from_polling_page.
 614   static bool is_load_from_polling_page(address instr_loc);
 615   // Extract poll address from instruction and ucontext.
 616   static address get_poll_address(address instr_loc, void* ucontext);
 617   // Extract poll register from instruction.
 618   static uint get_poll_register(address instr_loc);
 619 
 620   // Check if instruction is a write access to the memory serialization page
 621   // realized by one of the instructions stw, stwu, stwx, or stwux.
 622   static bool is_memory_serialization(int instruction, JavaThread* thread, void* ucontext);
 623 
 624   // Support for serializing memory accesses between threads.
 625   void serialize_memory(Register thread, Register tmp1, Register tmp2);
 626 
 627   // Stack overflow checking
 628   void bang_stack_with_offset(int offset);
 629 
 630   // Check for reserved stack access in method being exited. If the reserved
 631   // stack area was accessed, protect it again and throw StackOverflowError.
 632   // Uses Z_R1.
 633   void reserved_stack_check(Register return_pc);
 634 
 635   // Atomics
 636   // -- none?
 637 
 638   void tlab_allocate(Register obj,                // Result: pointer to object after successful allocation
 639                      Register var_size_in_bytes,  // Object size in bytes if unknown at compile time; invalid otherwise.
 640                      int      con_size_in_bytes,  // Object size in bytes if   known at compile time.
 641                      Register t1,                 // temp register
 642                      Label&   slow_case);         // Continuation point if fast allocation fails.
 643 
 644   // Emitter for interface method lookup.
 645   //   input: recv_klass, intf_klass, itable_index
 646   //   output: method_result
 647   //   kills: itable_index, temp1_reg, Z_R0, Z_R1
 648   void lookup_interface_method(Register           recv_klass,
 649                                Register           intf_klass,
 650                                RegisterOrConstant itable_index,
 651                                Register           method_result,
 652                                Register           temp1_reg,
 653                                Register           temp2_reg,
 654                                Label&             no_such_interface);


< prev index next >