--- a/hotspot/src/share/vm/opto/parse.hpp Wed Oct 14 09:22:21 2015 -1000
+++ b/hotspot/src/share/vm/opto/parse.hpp Thu Oct 15 09:40:45 2015 +0200
@@ -343,6 +343,7 @@
bool _count_invocations; // update and test invocation counter
bool _method_data_update; // update method data oop
Node* _alloc_with_final; // An allocation node with final field
+ Node* _alloc_with_stable; // An allocation node with stable field
// Variables which track Java semantics during bytecode parsing:
@@ -398,6 +399,25 @@
_alloc_with_final = n;
}
+ Node* alloc_with_stable() const {
+ if (_alloc_with_stable == NodeSentinel) {
+ return NULL;
+ }
+ return _alloc_with_stable;
+ }
+
+ void set_alloc_with_stable(Node* n) {
+ if (_alloc_with_stable == NodeSentinel) {
+ // uninitialized status, initialize with current input, can be
+ // null or valid node.
+ _alloc_with_stable = n;
+ } else if (_alloc_with_stable != n) {
+ // _alloc_with_stable isn't equal to n
+ _alloc_with_stable = NULL;
+ }
+ // _alloc_with_stable is equal with n, do nothing
+ }
+
Block* block() const { return _block; }
ciBytecodeStream& iter() { return _iter; }
Bytecodes::Code bc() const { return _iter.cur_bc(); }