Mercurial > hg > graal-compiler
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])); |