hotspot/src/share/vm/c1/c1_Instruction.hpp
changeset 38060 954c9575f653
parent 38031 e0b822facc03
parent 37480 291ee208fb72
child 38177 b0c9cb06506b
equal deleted inserted replaced
38059:86ab3f0a9f87 38060:954c9575f653
   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); }