185 }
186
187 u1 flags() const {
188 return _header._struct._flags;
189 }
190
191 u2 bci() const {
192 return _header._struct._bci;
193 }
194
195 void set_header(intptr_t value) {
196 _header._bits = value;
197 }
198 intptr_t header() {
199 return _header._bits;
200 }
201 void set_cell_at(int index, intptr_t value) {
202 _cells[index] = value;
203 }
204 void release_set_cell_at(int index, intptr_t value) {
205 OrderAccess::release_store_ptr(&_cells[index], value);
206 }
207 intptr_t cell_at(int index) const {
208 return _cells[index];
209 }
210
211 void set_flag_at(int flag_number) {
212 assert(flag_number < flag_limit, "oob");
213 _header._struct._flags |= (0x1 << flag_number);
214 }
215 bool flag_at(int flag_number) const {
216 assert(flag_number < flag_limit, "oob");
217 return (_header._struct._flags & (0x1 << flag_number)) != 0;
218 }
219
220 // Low-level support for code generation.
221 static ByteSize header_offset() {
222 return byte_offset_of(DataLayout, _header);
223 }
224 static ByteSize tag_offset() {
225 return byte_offset_of(DataLayout, _header._struct._tag);
|
185 }
186
187 u1 flags() const {
188 return _header._struct._flags;
189 }
190
191 u2 bci() const {
192 return _header._struct._bci;
193 }
194
195 void set_header(intptr_t value) {
196 _header._bits = value;
197 }
198 intptr_t header() {
199 return _header._bits;
200 }
201 void set_cell_at(int index, intptr_t value) {
202 _cells[index] = value;
203 }
204 void release_set_cell_at(int index, intptr_t value) {
205 OrderAccess::release_store(&_cells[index], value);
206 }
207 intptr_t cell_at(int index) const {
208 return _cells[index];
209 }
210
211 void set_flag_at(int flag_number) {
212 assert(flag_number < flag_limit, "oob");
213 _header._struct._flags |= (0x1 << flag_number);
214 }
215 bool flag_at(int flag_number) const {
216 assert(flag_number < flag_limit, "oob");
217 return (_header._struct._flags & (0x1 << flag_number)) != 0;
218 }
219
220 // Low-level support for code generation.
221 static ByteSize header_offset() {
222 return byte_offset_of(DataLayout, _header);
223 }
224 static ByteSize tag_offset() {
225 return byte_offset_of(DataLayout, _header._struct._tag);
|