comparison src/share/vm/graal/graalCodeInstaller.cpp @ 3568:409ef3a68dc8

re-lock objects whose lock was removed by escape analysis, enable stack walking compilation policy (-XX:CompilationPolicyChoice=1)
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 01 Sep 2011 15:28:24 +0200
parents 8780fa370aab
children 076a2c9caf71
comparison
equal deleted inserted replaced
3567:dbf8d6a4201f 3568:409ef3a68dc8
524 assert(second == NULL, "monitor cannot occupy two stack slots"); 524 assert(second == NULL, "monitor cannot occupy two stack slots");
525 assert(value->is_location(), "invalid monitor location"); 525 assert(value->is_location(), "invalid monitor location");
526 LocationValue* loc = (LocationValue*)value; 526 LocationValue* loc = (LocationValue*)value;
527 int monitor_offset = loc->location().stack_offset(); 527 int monitor_offset = loc->location().stack_offset();
528 LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, monitor_offset + BasicObjectLock::obj_offset_in_bytes())); 528 LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, monitor_offset + BasicObjectLock::obj_offset_in_bytes()));
529 monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, monitor_offset + BasicObjectLock::lock_offset_in_bytes()))); 529 bool eliminated = value->is_object();
530 monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, monitor_offset + BasicObjectLock::lock_offset_in_bytes()), eliminated));
530 } 531 }
531 if (second != NULL) { 532 if (second != NULL) {
532 i++; 533 i++;
533 assert(i < values->length(), "double-slot value not followed by CiValue.IllegalValue"); 534 assert(i < values->length(), "double-slot value not followed by CiValue.IllegalValue");
534 assert(((oop*) values->base(T_OBJECT))[i] == CiValue::IllegalValue(), "double-slot value not followed by CiValue.IllegalValue"); 535 assert(((oop*) values->base(T_OBJECT))[i] == CiValue::IllegalValue(), "double-slot value not followed by CiValue.IllegalValue");