1.1 --- a/src/share/vm/opto/callnode.hpp Fri Aug 23 03:14:54 2013 -0700 1.2 +++ b/src/share/vm/opto/callnode.hpp Fri Aug 23 11:41:37 2013 -0700 1.3 @@ -449,14 +449,17 @@ 1.4 // at a safepoint. 1.5 1.6 class SafePointScalarObjectNode: public TypeNode { 1.7 - uint _first_index; // First input edge index of a SafePoint node where 1.8 + uint _first_index; // First input edge relative index of a SafePoint node where 1.9 // states of the scalarized object fields are collected. 1.10 + // It is relative to the last (youngest) jvms->_scloff. 1.11 uint _n_fields; // Number of non-static fields of the scalarized object. 1.12 DEBUG_ONLY(AllocateNode* _alloc;) 1.13 1.14 virtual uint hash() const ; // { return NO_HASH; } 1.15 virtual uint cmp( const Node &n ) const; 1.16 1.17 + uint first_index() const { return _first_index; } 1.18 + 1.19 public: 1.20 SafePointScalarObjectNode(const TypeOopPtr* tp, 1.21 #ifdef ASSERT 1.22 @@ -469,7 +472,10 @@ 1.23 virtual const RegMask &out_RegMask() const; 1.24 virtual uint match_edge(uint idx) const; 1.25 1.26 - uint first_index() const { return _first_index; } 1.27 + uint first_index(JVMState* jvms) const { 1.28 + assert(jvms != NULL, "missed JVMS"); 1.29 + return jvms->scloff() + _first_index; 1.30 + } 1.31 uint n_fields() const { return _n_fields; } 1.32 1.33 #ifdef ASSERT 1.34 @@ -485,7 +491,7 @@ 1.35 // corresponds appropriately to "this" in "new_call". Assumes that 1.36 // "sosn_map" is a map, specific to the translation of "s" to "new_call", 1.37 // mapping old SafePointScalarObjectNodes to new, to avoid multiple copies. 1.38 - SafePointScalarObjectNode* clone(int jvms_adj, Dict* sosn_map) const; 1.39 + SafePointScalarObjectNode* clone(Dict* sosn_map) const; 1.40 1.41 #ifndef PRODUCT 1.42 virtual void dump_spec(outputStream *st) const;