comparison src/share/vm/opto/buildOopMap.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
313 if (b->is_stack() || b->is_concrete() || true ) { 313 if (b->is_stack() || b->is_concrete() || true ) {
314 omap->set_derived_oop( r, b); 314 omap->set_derived_oop( r, b);
315 } 315 }
316 } 316 }
317 317
318 } else if( t->isa_narrowoop() ) {
319 assert( !OptoReg::is_valid(_callees[reg]), "oop can't be callee save" );
320 // Check for a legal reg name in the oopMap and bailout if it is not.
321 if (!omap->legal_vm_reg_name(r)) {
322 regalloc->C->record_method_not_compilable("illegal oopMap register name");
323 continue;
324 }
325 if( mcall ) {
326 // Outgoing argument GC mask responsibility belongs to the callee,
327 // not the caller. Inspect the inputs to the call, to see if
328 // this live-range is one of them.
329 uint cnt = mcall->tf()->domain()->cnt();
330 uint j;
331 for( j = TypeFunc::Parms; j < cnt; j++)
332 if( mcall->in(j) == def )
333 break; // reaching def is an argument oop
334 if( j < cnt ) // arg oops dont go in GC map
335 continue; // Continue on to the next register
336 }
337 omap->set_narrowoop(r);
318 } else if( OptoReg::is_valid(_callees[reg])) { // callee-save? 338 } else if( OptoReg::is_valid(_callees[reg])) { // callee-save?
319 // It's a callee-save value 339 // It's a callee-save value
320 assert( dup_check[_callees[reg]]==0, "trying to callee save same reg twice" ); 340 assert( dup_check[_callees[reg]]==0, "trying to callee save same reg twice" );
321 debug_only( dup_check[_callees[reg]]=1; ) 341 debug_only( dup_check[_callees[reg]]=1; )
322 VMReg callee = OptoReg::as_VMReg(OptoReg::Name(_callees[reg])); 342 VMReg callee = OptoReg::as_VMReg(OptoReg::Name(_callees[reg]));