Mercurial > hg > truffle
diff src/share/vm/opto/graphKit.cpp @ 1609:4311f23817fd
6959430: Make sure raw loads have control edge
Summary: check that raw loads have control edge
Reviewed-by: never, twisti
author | kvn |
---|---|
date | Tue, 15 Jun 2010 18:07:27 -0700 |
parents | b9bc732be7c0 |
children | 4b29a725c43c |
line wrap: on
line diff
--- a/src/share/vm/opto/graphKit.cpp Tue Jun 15 15:57:36 2010 -0700 +++ b/src/share/vm/opto/graphKit.cpp Tue Jun 15 18:07:27 2010 -0700 @@ -1789,9 +1789,10 @@ void GraphKit::increment_counter(Node* counter_addr) { int adr_type = Compile::AliasIdxRaw; - Node* cnt = make_load(NULL, counter_addr, TypeInt::INT, T_INT, adr_type); + Node* ctrl = control(); + Node* cnt = make_load(ctrl, counter_addr, TypeInt::INT, T_INT, adr_type); Node* incr = _gvn.transform(new (C, 3) AddINode(cnt, _gvn.intcon(1))); - store_to_memory( NULL, counter_addr, incr, T_INT, adr_type ); + store_to_memory( ctrl, counter_addr, incr, T_INT, adr_type ); } @@ -2771,11 +2772,7 @@ // Update the counter for this lock. Don't bother using an atomic // operation since we don't require absolute accuracy. lock->create_lock_counter(map()->jvms()); - int adr_type = Compile::AliasIdxRaw; - Node* counter_addr = makecon(TypeRawPtr::make(lock->counter()->addr())); - Node* cnt = make_load(NULL, counter_addr, TypeInt::INT, T_INT, adr_type); - Node* incr = _gvn.transform(new (C, 3) AddINode(cnt, _gvn.intcon(1))); - store_to_memory(control(), counter_addr, incr, T_INT, adr_type); + increment_counter(lock->counter()->addr()); } #endif