Mercurial > hg > truffle
comparison src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp @ 2100:b1a2afa37ec4
7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
Summary: Track allocated bytes in Thread's, update on TLAB retirement and direct allocation in Eden and tenured, add JNI methods for ThreadMXBean.
Reviewed-by: coleenp, kvn, dholmes, ysr
author | phh |
---|---|
date | Fri, 07 Jan 2011 10:42:32 -0500 |
parents | ac637b7220d1 |
children | 5577848f5923 |
comparison
equal
deleted
inserted
replaced
2097:039eb4201e06 | 2100:b1a2afa37ec4 |
---|---|
164 | 164 |
165 void C1_MacroAssembler::try_allocate( | 165 void C1_MacroAssembler::try_allocate( |
166 Register obj, // result: pointer to object after successful allocation | 166 Register obj, // result: pointer to object after successful allocation |
167 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise | 167 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise |
168 int con_size_in_bytes, // object size in bytes if known at compile time | 168 int con_size_in_bytes, // object size in bytes if known at compile time |
169 Register t1, // temp register | 169 Register t1, // temp register, must be global register for incr_allocated_bytes |
170 Register t2, // temp register | 170 Register t2, // temp register |
171 Label& slow_case // continuation point if fast allocation fails | 171 Label& slow_case // continuation point if fast allocation fails |
172 ) { | 172 ) { |
173 if (UseTLAB) { | 173 if (UseTLAB) { |
174 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); | 174 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); |
175 } else { | 175 } else { |
176 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case); | 176 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case); |
177 incr_allocated_bytes(var_size_in_bytes, con_size_in_bytes, t1); | |
177 } | 178 } |
178 } | 179 } |
179 | 180 |
180 | 181 |
181 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { | 182 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
212 | 213 |
213 | 214 |
214 void C1_MacroAssembler::allocate_object( | 215 void C1_MacroAssembler::allocate_object( |
215 Register obj, // result: pointer to object after successful allocation | 216 Register obj, // result: pointer to object after successful allocation |
216 Register t1, // temp register | 217 Register t1, // temp register |
217 Register t2, // temp register | 218 Register t2, // temp register, must be a global register for try_allocate |
218 Register t3, // temp register | 219 Register t3, // temp register |
219 int hdr_size, // object header size in words | 220 int hdr_size, // object header size in words |
220 int obj_size, // object size in words | 221 int obj_size, // object size in words |
221 Register klass, // object klass | 222 Register klass, // object klass |
222 Label& slow_case // continuation point if fast allocation fails | 223 Label& slow_case // continuation point if fast allocation fails |