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