973 private: 974 NullCheck* _explicit_null_check; // For explicit null check elimination 975 NewValueTypeInstance* _vt; 976 977 public: 978 // creation 979 LoadIndexed(Value array, Value index, Value length, BasicType elt_type, ValueStack* state_before, bool mismatched = false) 980 : AccessIndexed(array, index, length, elt_type, state_before, mismatched) 981 , _explicit_null_check(NULL), _vt(NULL) {} 982 983 // accessors 984 NullCheck* explicit_null_check() const { return _explicit_null_check; } 985 986 // setters 987 // See LoadField::set_explicit_null_check for documentation 988 void set_explicit_null_check(NullCheck* check) { _explicit_null_check = check; } 989 990 ciType* exact_type() const; 991 ciType* declared_type() const; 992 993 NewValueTypeInstance* vt() { return _vt; } 994 void set_vt(NewValueTypeInstance* vt) { _vt = vt; } 995 996 // generic 997 HASHING2(LoadIndexed, true, array()->subst(), index()->subst()) 998 }; 999 1000 1001 LEAF(StoreIndexed, AccessIndexed) 1002 private: 1003 Value _value; 1004 1005 ciMethod* _profiled_method; 1006 int _profiled_bci; 1007 bool _check_boolean; 1008 1009 public: 1010 // creation 1011 StoreIndexed(Value array, Value index, Value length, BasicType elt_type, Value value, ValueStack* state_before, 1012 bool check_boolean, bool mismatched = false) 1013 : AccessIndexed(array, index, length, elt_type, state_before, mismatched) 1014 , _value(value), _profiled_method(NULL), _profiled_bci(0), _check_boolean(check_boolean) 1015 { 1016 set_flag(NeedsWriteBarrierFlag, (as_ValueType(elt_type)->is_object())); 1017 set_flag(NeedsStoreCheckFlag, (as_ValueType(elt_type)->is_object())); | 973 private: 974 NullCheck* _explicit_null_check; // For explicit null check elimination 975 NewValueTypeInstance* _vt; 976 977 public: 978 // creation 979 LoadIndexed(Value array, Value index, Value length, BasicType elt_type, ValueStack* state_before, bool mismatched = false) 980 : AccessIndexed(array, index, length, elt_type, state_before, mismatched) 981 , _explicit_null_check(NULL), _vt(NULL) {} 982 983 // accessors 984 NullCheck* explicit_null_check() const { return _explicit_null_check; } 985 986 // setters 987 // See LoadField::set_explicit_null_check for documentation 988 void set_explicit_null_check(NullCheck* check) { _explicit_null_check = check; } 989 990 ciType* exact_type() const; 991 ciType* declared_type() const; 992 993 NewValueTypeInstance* vt() const { return _vt; } 994 void set_vt(NewValueTypeInstance* vt) { _vt = vt; } 995 996 // generic 997 HASHING3(LoadIndexed, true, array()->subst(), index()->subst(), vt()) 998 }; 999 1000 1001 LEAF(StoreIndexed, AccessIndexed) 1002 private: 1003 Value _value; 1004 1005 ciMethod* _profiled_method; 1006 int _profiled_bci; 1007 bool _check_boolean; 1008 1009 public: 1010 // creation 1011 StoreIndexed(Value array, Value index, Value length, BasicType elt_type, Value value, ValueStack* state_before, 1012 bool check_boolean, bool mismatched = false) 1013 : AccessIndexed(array, index, length, elt_type, state_before, mismatched) 1014 , _value(value), _profiled_method(NULL), _profiled_bci(0), _check_boolean(check_boolean) 1015 { 1016 set_flag(NeedsWriteBarrierFlag, (as_ValueType(elt_type)->is_object())); 1017 set_flag(NeedsStoreCheckFlag, (as_ValueType(elt_type)->is_object())); |