Mercurial > hg > truffle
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"); |