Mercurial > hg > graal-jvmci-8
comparison src/share/vm/compiler/oopMap.cpp @ 14988:82ff6c8c8f6e
Increase maximum allocatable spill area by factor of 2.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 05 Apr 2014 19:11:07 +0200 |
parents | 7ad529321294 |
children | 52b4284cb496 |
comparison
equal
deleted
inserted
replaced
14987:3b318ba935d5 | 14988:82ff6c8c8f6e |
---|---|
174 } | 174 } |
175 | 175 |
176 | 176 |
177 void OopMap::set_value(VMReg reg) { | 177 void OopMap::set_value(VMReg reg) { |
178 // At this time, we only need value entries in our OopMap when ZapDeadCompiledLocals is active. | 178 // At this time, we only need value entries in our OopMap when ZapDeadCompiledLocals is active. |
179 if (ZapDeadCompiledLocals) | |
180 set_xxx(reg, OopMapValue::value_value, VMRegImpl::Bad()); | |
181 } | 179 } |
182 | 180 |
183 | 181 |
184 void OopMap::set_narrowoop(VMReg reg) { | 182 void OopMap::set_narrowoop(VMReg reg) { |
185 set_xxx(reg, OopMapValue::narrowoop_value, VMRegImpl::Bad()); | 183 set_xxx(reg, OopMapValue::narrowoop_value, VMRegImpl::Bad()); |
407 } while (!oms.is_done()); | 405 } while (!oms.is_done()); |
408 } | 406 } |
409 } | 407 } |
410 | 408 |
411 // We want coop, value and oop oop_types | 409 // We want coop, value and oop oop_types |
412 int mask = OopMapValue::oop_value | OopMapValue::value_value | OopMapValue::narrowoop_value; | 410 int mask = OopMapValue::oop_value | OopMapValue::narrowoop_value; |
413 { | 411 { |
414 for (OopMapStream oms(map,mask); !oms.is_done(); oms.next()) { | 412 for (OopMapStream oms(map,mask); !oms.is_done(); oms.next()) { |
415 omv = oms.current(); | 413 omv = oms.current(); |
416 oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map); | 414 oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map); |
417 if ( loc != NULL ) { | 415 if ( loc != NULL ) { |
438 // do the real assert. | 436 // do the real assert. |
439 assert(Universe::heap()->is_in_or_null(*loc), "found non oop pointer"); | 437 assert(Universe::heap()->is_in_or_null(*loc), "found non oop pointer"); |
440 } | 438 } |
441 #endif // ASSERT | 439 #endif // ASSERT |
442 oop_fn->do_oop(loc); | 440 oop_fn->do_oop(loc); |
443 } else if ( omv.type() == OopMapValue::value_value ) { | |
444 assert((*loc) == (oop)NULL || !Universe::is_narrow_oop_base(*loc), | |
445 "found invalid value pointer"); | |
446 value_fn->do_oop(loc); | |
447 } else if ( omv.type() == OopMapValue::narrowoop_value ) { | 441 } else if ( omv.type() == OopMapValue::narrowoop_value ) { |
448 narrowOop *nl = (narrowOop*)loc; | 442 narrowOop *nl = (narrowOop*)loc; |
449 #ifndef VM_LITTLE_ENDIAN | 443 #ifndef VM_LITTLE_ENDIAN |
450 if (!omv.reg()->is_stack()) { | 444 if (!omv.reg()->is_stack()) { |
451 // compressed oops in registers only take up 4 bytes of an | 445 // compressed oops in registers only take up 4 bytes of an |
541 void print_register_type(OopMapValue::oop_types x, VMReg optional, | 535 void print_register_type(OopMapValue::oop_types x, VMReg optional, |
542 outputStream* st) { | 536 outputStream* st) { |
543 switch( x ) { | 537 switch( x ) { |
544 case OopMapValue::oop_value: | 538 case OopMapValue::oop_value: |
545 st->print("Oop"); | 539 st->print("Oop"); |
546 break; | |
547 case OopMapValue::value_value: | |
548 st->print("Value"); | |
549 break; | 540 break; |
550 case OopMapValue::narrowoop_value: | 541 case OopMapValue::narrowoop_value: |
551 st->print("NarrowOop"); | 542 st->print("NarrowOop"); |
552 break; | 543 break; |
553 case OopMapValue::callee_saved_value: | 544 case OopMapValue::callee_saved_value: |