< prev index next >

src/share/vm/opto/parse.hpp

Print this page

        

*** 341,350 **** --- 341,351 ---- bool _wrote_stable; // Did we write a @Stable field? bool _wrote_fields; // Did we write any field? 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: Block* _block; // block currently getting parsed ciBytecodeStream _iter; // stream of this method's bytecodes
*** 396,405 **** --- 397,425 ---- void set_alloc_with_final(Node* n) { assert((_alloc_with_final == NULL) || (_alloc_with_final == n), "different init objects?"); _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) { + // uninitialized status, initialized with current input, can be null or valid node. + if (_alloc_with_stable == NodeSentinel) { + _alloc_with_stable = n; + } + // _alloc_with_stable is isn't equal with n + else if (_alloc_with_stable != 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(); } void set_block(Block* b) { _block = b; }
< prev index next >