< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.hpp

Print this page
rev 12409 : 8169177: aarch64: SIGSEGV when "-XX:+ZeroTLAB" is specified along with GC options
Summary: Add zero-initialization to C1 for fast TLAB refills
Reviewed-by: aph, drwhite
Contributed-by: kavitha.natarajan@linaro.org


 840   // Round up to a power of two
 841   void round_to(Register reg, int modulus);
 842 
 843   // allocation
 844   void eden_allocate(
 845     Register obj,                      // result: pointer to object after successful allocation
 846     Register var_size_in_bytes,        // object size in bytes if unknown at compile time; invalid otherwise
 847     int      con_size_in_bytes,        // object size in bytes if   known at compile time
 848     Register t1,                       // temp register
 849     Label&   slow_case                 // continuation point if fast allocation fails
 850   );
 851   void tlab_allocate(
 852     Register obj,                      // result: pointer to object after successful allocation
 853     Register var_size_in_bytes,        // object size in bytes if unknown at compile time; invalid otherwise
 854     int      con_size_in_bytes,        // object size in bytes if   known at compile time
 855     Register t1,                       // temp register
 856     Register t2,                       // temp register
 857     Label&   slow_case                 // continuation point if fast allocation fails
 858   );
 859   Register tlab_refill(Label& retry_tlab, Label& try_eden, Label& slow_case); // returns TLS address

 860   void verify_tlab();
 861 
 862   void incr_allocated_bytes(Register thread,
 863                             Register var_size_in_bytes, int con_size_in_bytes,
 864                             Register t1 = noreg);
 865 
 866   // interface method calling
 867   void lookup_interface_method(Register recv_klass,
 868                                Register intf_klass,
 869                                RegisterOrConstant itable_index,
 870                                Register method_result,
 871                                Register scan_temp,
 872                                Label& no_such_interface);
 873 
 874   // virtual method calling
 875   // n.b. x86 allows RegisterOrConstant for vtable_index
 876   void lookup_virtual_method(Register recv_klass,
 877                              RegisterOrConstant vtable_index,
 878                              Register method_result);
 879 




 840   // Round up to a power of two
 841   void round_to(Register reg, int modulus);
 842 
 843   // allocation
 844   void eden_allocate(
 845     Register obj,                      // result: pointer to object after successful allocation
 846     Register var_size_in_bytes,        // object size in bytes if unknown at compile time; invalid otherwise
 847     int      con_size_in_bytes,        // object size in bytes if   known at compile time
 848     Register t1,                       // temp register
 849     Label&   slow_case                 // continuation point if fast allocation fails
 850   );
 851   void tlab_allocate(
 852     Register obj,                      // result: pointer to object after successful allocation
 853     Register var_size_in_bytes,        // object size in bytes if unknown at compile time; invalid otherwise
 854     int      con_size_in_bytes,        // object size in bytes if   known at compile time
 855     Register t1,                       // temp register
 856     Register t2,                       // temp register
 857     Label&   slow_case                 // continuation point if fast allocation fails
 858   );
 859   Register tlab_refill(Label& retry_tlab, Label& try_eden, Label& slow_case); // returns TLS address
 860   void zero_memory(Register addr, Register len, Register t1);
 861   void verify_tlab();
 862 
 863   void incr_allocated_bytes(Register thread,
 864                             Register var_size_in_bytes, int con_size_in_bytes,
 865                             Register t1 = noreg);
 866 
 867   // interface method calling
 868   void lookup_interface_method(Register recv_klass,
 869                                Register intf_klass,
 870                                RegisterOrConstant itable_index,
 871                                Register method_result,
 872                                Register scan_temp,
 873                                Label& no_such_interface);
 874 
 875   // virtual method calling
 876   // n.b. x86 allows RegisterOrConstant for vtable_index
 877   void lookup_virtual_method(Register recv_klass,
 878                              RegisterOrConstant vtable_index,
 879                              Register method_result);
 880 


< prev index next >