33 void pd_init() { _rsp_offset = 0; }
34
35 public:
36 void try_allocate(
37 Register obj, // result: pointer to object after successful allocation
38 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
39 int con_size_in_bytes, // object size in bytes if known at compile time
40 Register t1, // temp register
41 Register t2, // temp register
42 Label& slow_case // continuation point if fast allocation fails
43 );
44
45 void initialize_header(Register obj, Register klass, Register len, Register t1, Register t2);
46 void initialize_body(Register obj, Register len_in_bytes, int hdr_size_in_bytes, Register t1);
47
48 // locking
49 // hdr : must be rax, contents destroyed
50 // obj : must point to the object to lock, contents preserved
51 // disp_hdr: must point to the displaced header location, contents preserved
52 // returns code offset at which to add null check debug information
53 int lock_object (Register swap, Register obj, Register disp_hdr, Label& slow_case);
54
55 // unlocking
56 // hdr : contents destroyed
57 // obj : must point to the object to lock, contents preserved
58 // disp_hdr: must be eax & must point to the displaced header location, contents destroyed
59 void unlock_object(Register swap, Register obj, Register lock, Label& slow_case);
60
61 void initialize_object(
62 Register obj, // result: pointer to object after successful allocation
63 Register klass, // object klass
64 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
65 int con_size_in_bytes, // object size in bytes if known at compile time
66 Register t1, // temp register
67 Register t2, // temp register
68 bool is_tlab_allocated // the object was allocated in a TLAB; relevant for the implementation of ZeroTLAB
69 );
70
71 // allocation of fixed-size objects
72 // (can also be used to allocate fixed-size arrays, by setting
73 // hdr_size correctly and storing the array length afterwards)
|
33 void pd_init() { _rsp_offset = 0; }
34
35 public:
36 void try_allocate(
37 Register obj, // result: pointer to object after successful allocation
38 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
39 int con_size_in_bytes, // object size in bytes if known at compile time
40 Register t1, // temp register
41 Register t2, // temp register
42 Label& slow_case // continuation point if fast allocation fails
43 );
44
45 void initialize_header(Register obj, Register klass, Register len, Register t1, Register t2);
46 void initialize_body(Register obj, Register len_in_bytes, int hdr_size_in_bytes, Register t1);
47
48 // locking
49 // hdr : must be rax, contents destroyed
50 // obj : must point to the object to lock, contents preserved
51 // disp_hdr: must point to the displaced header location, contents preserved
52 // returns code offset at which to add null check debug information
53 int lock_object (Register swap, Register obj, Register disp_hdr, Register tmp, Label& slow_case);
54
55 // unlocking
56 // hdr : contents destroyed
57 // obj : must point to the object to lock, contents preserved
58 // disp_hdr: must be eax & must point to the displaced header location, contents destroyed
59 void unlock_object(Register swap, Register obj, Register lock, Label& slow_case);
60
61 void initialize_object(
62 Register obj, // result: pointer to object after successful allocation
63 Register klass, // object klass
64 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
65 int con_size_in_bytes, // object size in bytes if known at compile time
66 Register t1, // temp register
67 Register t2, // temp register
68 bool is_tlab_allocated // the object was allocated in a TLAB; relevant for the implementation of ZeroTLAB
69 );
70
71 // allocation of fixed-size objects
72 // (can also be used to allocate fixed-size arrays, by setting
73 // hdr_size correctly and storing the array length afterwards)
|