1224 }
1225
1226 process_users_of_allocation(boxing);
1227
1228 #ifndef PRODUCT
1229 if (PrintEliminateAllocations) {
1230 tty->print("++++ Eliminated: %d ", boxing->_idx);
1231 boxing->method()->print_short_name(tty);
1232 tty->cr();
1233 }
1234 #endif
1235
1236 return true;
1237 }
1238
1239 //---------------------------set_eden_pointers-------------------------
1240 void PhaseMacroExpand::set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr) {
1241 if (UseTLAB) { // Private allocation: load from TLS
1242 Node* thread = transform_later(new ThreadLocalNode());
1243 int tlab_top_offset = in_bytes(JavaThread::tlab_top_offset());
1244 int tlab_end_offset = in_bytes(JavaThread::tlab_end_offset());
1245 eden_top_adr = basic_plus_adr(top()/*not oop*/, thread, tlab_top_offset);
1246 eden_end_adr = basic_plus_adr(top()/*not oop*/, thread, tlab_end_offset);
1247 } else { // Shared allocation: load from globals
1248 CollectedHeap* ch = Universe::heap();
1249 address top_adr = (address)ch->top_addr();
1250 address end_adr = (address)ch->end_addr();
1251 eden_top_adr = makecon(TypeRawPtr::make(top_adr));
1252 eden_end_adr = basic_plus_adr(eden_top_adr, end_adr - top_adr);
1253 }
1254 }
1255
1256
1257 Node* PhaseMacroExpand::make_load(Node* ctl, Node* mem, Node* base, int offset, const Type* value_type, BasicType bt) {
1258 Node* adr = basic_plus_adr(base, offset);
1259 const TypePtr* adr_type = adr->bottom_type()->is_ptr();
1260 Node* value = LoadNode::make(_igvn, ctl, mem, adr, adr_type, value_type, bt, MemNode::unordered);
1261 transform_later(value);
1262 return value;
1263 }
1264
1265
1266 Node* PhaseMacroExpand::make_store(Node* ctl, Node* mem, Node* base, int offset, Node* value, BasicType bt) {
|
1224 }
1225
1226 process_users_of_allocation(boxing);
1227
1228 #ifndef PRODUCT
1229 if (PrintEliminateAllocations) {
1230 tty->print("++++ Eliminated: %d ", boxing->_idx);
1231 boxing->method()->print_short_name(tty);
1232 tty->cr();
1233 }
1234 #endif
1235
1236 return true;
1237 }
1238
1239 //---------------------------set_eden_pointers-------------------------
1240 void PhaseMacroExpand::set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr) {
1241 if (UseTLAB) { // Private allocation: load from TLS
1242 Node* thread = transform_later(new ThreadLocalNode());
1243 int tlab_top_offset = in_bytes(JavaThread::tlab_top_offset());
1244 int tlab_current_end_offset = in_bytes(JavaThread::tlab_current_end_offset());
1245 eden_top_adr = basic_plus_adr(top()/*not oop*/, thread, tlab_top_offset);
1246 eden_end_adr = basic_plus_adr(top()/*not oop*/, thread, tlab_current_end_offset);
1247 } else { // Shared allocation: load from globals
1248 CollectedHeap* ch = Universe::heap();
1249 address top_adr = (address)ch->top_addr();
1250 address end_adr = (address)ch->end_addr();
1251 eden_top_adr = makecon(TypeRawPtr::make(top_adr));
1252 eden_end_adr = basic_plus_adr(eden_top_adr, end_adr - top_adr);
1253 }
1254 }
1255
1256
1257 Node* PhaseMacroExpand::make_load(Node* ctl, Node* mem, Node* base, int offset, const Type* value_type, BasicType bt) {
1258 Node* adr = basic_plus_adr(base, offset);
1259 const TypePtr* adr_type = adr->bottom_type()->is_ptr();
1260 Node* value = LoadNode::make(_igvn, ctl, mem, adr, adr_type, value_type, bt, MemNode::unordered);
1261 transform_later(value);
1262 return value;
1263 }
1264
1265
1266 Node* PhaseMacroExpand::make_store(Node* ctl, Node* mem, Node* base, int offset, Node* value, BasicType bt) {
|