equal
deleted
inserted
replaced
968 private: |
968 private: |
969 Value _value; |
969 Value _value; |
970 |
970 |
971 ciMethod* _profiled_method; |
971 ciMethod* _profiled_method; |
972 int _profiled_bci; |
972 int _profiled_bci; |
973 public: |
973 bool _check_boolean; |
974 // creation |
974 |
975 StoreIndexed(Value array, Value index, Value length, BasicType elt_type, Value value, ValueStack* state_before) |
975 public: |
|
976 // creation |
|
977 StoreIndexed(Value array, Value index, Value length, BasicType elt_type, Value value, ValueStack* state_before, bool check_boolean) |
976 : AccessIndexed(array, index, length, elt_type, state_before) |
978 : AccessIndexed(array, index, length, elt_type, state_before) |
977 , _value(value), _profiled_method(NULL), _profiled_bci(0) |
979 , _value(value), _profiled_method(NULL), _profiled_bci(0), _check_boolean(check_boolean) |
978 { |
980 { |
979 set_flag(NeedsWriteBarrierFlag, (as_ValueType(elt_type)->is_object())); |
981 set_flag(NeedsWriteBarrierFlag, (as_ValueType(elt_type)->is_object())); |
980 set_flag(NeedsStoreCheckFlag, (as_ValueType(elt_type)->is_object())); |
982 set_flag(NeedsStoreCheckFlag, (as_ValueType(elt_type)->is_object())); |
981 ASSERT_VALUES |
983 ASSERT_VALUES |
982 pin(); |
984 pin(); |
984 |
986 |
985 // accessors |
987 // accessors |
986 Value value() const { return _value; } |
988 Value value() const { return _value; } |
987 bool needs_write_barrier() const { return check_flag(NeedsWriteBarrierFlag); } |
989 bool needs_write_barrier() const { return check_flag(NeedsWriteBarrierFlag); } |
988 bool needs_store_check() const { return check_flag(NeedsStoreCheckFlag); } |
990 bool needs_store_check() const { return check_flag(NeedsStoreCheckFlag); } |
|
991 bool check_boolean() const { return _check_boolean; } |
989 // Helpers for MethodData* profiling |
992 // Helpers for MethodData* profiling |
990 void set_should_profile(bool value) { set_flag(ProfileMDOFlag, value); } |
993 void set_should_profile(bool value) { set_flag(ProfileMDOFlag, value); } |
991 void set_profiled_method(ciMethod* method) { _profiled_method = method; } |
994 void set_profiled_method(ciMethod* method) { _profiled_method = method; } |
992 void set_profiled_bci(int bci) { _profiled_bci = bci; } |
995 void set_profiled_bci(int bci) { _profiled_bci = bci; } |
993 bool should_profile() const { return check_flag(ProfileMDOFlag); } |
996 bool should_profile() const { return check_flag(ProfileMDOFlag); } |