Mercurial > hg > graal-compiler
comparison src/share/vm/opto/idealKit.cpp @ 14478:bb9356ec5967
Merge
author | hseigel |
---|---|
date | Sun, 23 Feb 2014 13:16:03 -0500 |
parents | abec000618bf |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14477:96d2c94bbdd0 | 14478:bb9356ec5967 |
---|---|
357 const TypePtr* adr_type = NULL; // debug-mode-only argument | 357 const TypePtr* adr_type = NULL; // debug-mode-only argument |
358 debug_only(adr_type = C->get_adr_type(adr_idx)); | 358 debug_only(adr_type = C->get_adr_type(adr_idx)); |
359 Node* mem = memory(adr_idx); | 359 Node* mem = memory(adr_idx); |
360 Node* ld; | 360 Node* ld; |
361 if (require_atomic_access && bt == T_LONG) { | 361 if (require_atomic_access && bt == T_LONG) { |
362 ld = LoadLNode::make_atomic(C, ctl, mem, adr, adr_type, t); | 362 ld = LoadLNode::make_atomic(C, ctl, mem, adr, adr_type, t, MemNode::unordered); |
363 } else { | 363 } else { |
364 ld = LoadNode::make(_gvn, ctl, mem, adr, adr_type, t, bt); | 364 ld = LoadNode::make(_gvn, ctl, mem, adr, adr_type, t, bt, MemNode::unordered); |
365 } | 365 } |
366 return transform(ld); | 366 return transform(ld); |
367 } | 367 } |
368 | 368 |
369 Node* IdealKit::store(Node* ctl, Node* adr, Node *val, BasicType bt, | 369 Node* IdealKit::store(Node* ctl, Node* adr, Node *val, BasicType bt, |
370 int adr_idx, | 370 int adr_idx, |
371 bool require_atomic_access) { | 371 MemNode::MemOrd mo, bool require_atomic_access) { |
372 assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory" ); | 372 assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory"); |
373 const TypePtr* adr_type = NULL; | 373 const TypePtr* adr_type = NULL; |
374 debug_only(adr_type = C->get_adr_type(adr_idx)); | 374 debug_only(adr_type = C->get_adr_type(adr_idx)); |
375 Node *mem = memory(adr_idx); | 375 Node *mem = memory(adr_idx); |
376 Node* st; | 376 Node* st; |
377 if (require_atomic_access && bt == T_LONG) { | 377 if (require_atomic_access && bt == T_LONG) { |
378 st = StoreLNode::make_atomic(C, ctl, mem, adr, adr_type, val); | 378 st = StoreLNode::make_atomic(C, ctl, mem, adr, adr_type, val, mo); |
379 } else { | 379 } else { |
380 st = StoreNode::make(_gvn, ctl, mem, adr, adr_type, val, bt); | 380 st = StoreNode::make(_gvn, ctl, mem, adr, adr_type, val, bt, mo); |
381 } | 381 } |
382 st = transform(st); | 382 st = transform(st); |
383 set_memory(st, adr_idx); | 383 set_memory(st, adr_idx); |
384 | 384 |
385 return st; | 385 return st; |