2093 // accessors 2094 Value base() { return _base; } 2095 Value index() { return _index; } 2096 bool has_index() { return (_index != NULL); } 2097 int log2_scale() { return _log2_scale; } 2098 2099 // setters 2100 void set_base (Value base) { _base = base; } 2101 void set_index(Value index) { _index = index; } 2102 void set_log2_scale(int log2_scale) { _log2_scale = log2_scale; } 2103 2104 // generic 2105 virtual void input_values_do(ValueVisitor* f) { UnsafeOp::input_values_do(f); 2106 f->visit(&_base); 2107 if (has_index()) f->visit(&_index); } 2108 }; 2109 2110 2111 LEAF(UnsafeGetRaw, UnsafeRawOp) 2112 private: 2113 bool _may_be_unaligned; // For OSREntry 2114 2115 public: 2116 UnsafeGetRaw(BasicType basic_type, Value addr, bool may_be_unaligned) 2117 : UnsafeRawOp(basic_type, addr, false) { 2118 _may_be_unaligned = may_be_unaligned; 2119 } 2120 2121 UnsafeGetRaw(BasicType basic_type, Value base, Value index, int log2_scale, bool may_be_unaligned) 2122 : UnsafeRawOp(basic_type, base, index, log2_scale, false) { 2123 _may_be_unaligned = may_be_unaligned; 2124 } 2125 2126 bool may_be_unaligned() { return _may_be_unaligned; } 2127 }; 2128 2129 2130 LEAF(UnsafePutRaw, UnsafeRawOp) 2131 private: 2132 Value _value; // Value to be stored 2133 2134 public: 2135 UnsafePutRaw(BasicType basic_type, Value addr, Value value) 2136 : UnsafeRawOp(basic_type, addr, true) 2137 , _value(value) 2138 { 2139 assert(value != NULL, "just checking"); 2140 ASSERT_VALUES 2141 } 2142 2143 UnsafePutRaw(BasicType basic_type, Value base, Value index, int log2_scale, Value value) 2144 : UnsafeRawOp(basic_type, base, index, log2_scale, true) 2145 , _value(value) 2146 { | 2093 // accessors 2094 Value base() { return _base; } 2095 Value index() { return _index; } 2096 bool has_index() { return (_index != NULL); } 2097 int log2_scale() { return _log2_scale; } 2098 2099 // setters 2100 void set_base (Value base) { _base = base; } 2101 void set_index(Value index) { _index = index; } 2102 void set_log2_scale(int log2_scale) { _log2_scale = log2_scale; } 2103 2104 // generic 2105 virtual void input_values_do(ValueVisitor* f) { UnsafeOp::input_values_do(f); 2106 f->visit(&_base); 2107 if (has_index()) f->visit(&_index); } 2108 }; 2109 2110 2111 LEAF(UnsafeGetRaw, UnsafeRawOp) 2112 private: 2113 bool _may_be_unaligned, _is_wide; // For OSREntry 2114 2115 public: 2116 UnsafeGetRaw(BasicType basic_type, Value addr, bool may_be_unaligned, bool is_wide = false) 2117 : UnsafeRawOp(basic_type, addr, false) { 2118 _may_be_unaligned = may_be_unaligned; 2119 _is_wide = is_wide; 2120 } 2121 2122 UnsafeGetRaw(BasicType basic_type, Value base, Value index, int log2_scale, bool may_be_unaligned, bool is_wide = false) 2123 : UnsafeRawOp(basic_type, base, index, log2_scale, false) { 2124 _may_be_unaligned = may_be_unaligned; 2125 _is_wide = is_wide; 2126 } 2127 2128 bool may_be_unaligned() { return _may_be_unaligned; } 2129 bool is_wide() { return _is_wide; } 2130 }; 2131 2132 2133 LEAF(UnsafePutRaw, UnsafeRawOp) 2134 private: 2135 Value _value; // Value to be stored 2136 2137 public: 2138 UnsafePutRaw(BasicType basic_type, Value addr, Value value) 2139 : UnsafeRawOp(basic_type, addr, true) 2140 , _value(value) 2141 { 2142 assert(value != NULL, "just checking"); 2143 ASSERT_VALUES 2144 } 2145 2146 UnsafePutRaw(BasicType basic_type, Value base, Value index, int log2_scale, Value value) 2147 : UnsafeRawOp(basic_type, base, index, log2_scale, true) 2148 , _value(value) 2149 { |