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: