mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-23 12:34:32 +02:00
8028515: PPPC64 (part 113.2): opto: Introduce LoadFence/StoreFence
Use new nodes for loadFence/storeFence intrinsics in C2. Reviewed-by: kvn, dholmes
This commit is contained in:
parent
b4ded0bc2e
commit
fe89766184
11 changed files with 135 additions and 21 deletions
|
@ -994,6 +994,17 @@ public:
|
|||
virtual int Opcode() const;
|
||||
};
|
||||
|
||||
// "Acquire" - no following ref can move before (but earlier refs can
|
||||
// follow, like an early Load stalled in cache). Requires multi-cpu
|
||||
// visibility. Inserted independ of any load, as required
|
||||
// for intrinsic sun.misc.Unsafe.loadFence().
|
||||
class LoadFenceNode: public MemBarNode {
|
||||
public:
|
||||
LoadFenceNode(Compile* C, int alias_idx, Node* precedent)
|
||||
: MemBarNode(C, alias_idx, precedent) {}
|
||||
virtual int Opcode() const;
|
||||
};
|
||||
|
||||
// "Release" - no earlier ref can move after (but later refs can move
|
||||
// up, like a speculative pipelined cache-hitting Load). Requires
|
||||
// multi-cpu visibility. Inserted before a volatile store.
|
||||
|
@ -1004,6 +1015,17 @@ public:
|
|||
virtual int Opcode() const;
|
||||
};
|
||||
|
||||
// "Release" - no earlier ref can move after (but later refs can move
|
||||
// up, like a speculative pipelined cache-hitting Load). Requires
|
||||
// multi-cpu visibility. Inserted independent of any store, as required
|
||||
// for intrinsic sun.misc.Unsafe.storeFence().
|
||||
class StoreFenceNode: public MemBarNode {
|
||||
public:
|
||||
StoreFenceNode(Compile* C, int alias_idx, Node* precedent)
|
||||
: MemBarNode(C, alias_idx, precedent) {}
|
||||
virtual int Opcode() const;
|
||||
};
|
||||
|
||||
// "Acquire" - no following ref can move before (but earlier refs can
|
||||
// follow, like an early Load stalled in cache). Requires multi-cpu
|
||||
// visibility. Inserted after a FastLock.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue