Mercurial > hg > truffle
comparison src/share/vm/opto/idealKit.cpp @ 14521:29ccc4cbabca
Merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 12 Mar 2014 13:30:08 +0100 |
parents | abec000618bf |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14520:f84115370178 | 14521:29ccc4cbabca |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
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; |