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;