|
323 | 323 | #define WRITE_INT_FIELD(p, offset, value) \
|
324 | 324 | (*reinterpret_cast<int*>(FIELD_ADDR(p, offset)) = value)
|
325 | 325 |
|
326 |
| -#define ACQUIRE_READ_INTPTR_FIELD(p, offset) \ |
327 |
| - static_cast<intptr_t>(base::Acquire_Load( \ |
328 |
| - reinterpret_cast<const base::AtomicWord*>(FIELD_ADDR(p, offset)))) |
329 |
| - |
330 | 326 | #define ACQUIRE_READ_INT32_FIELD(p, offset) \
|
331 | 327 | static_cast<int32_t>(base::Acquire_Load( \
|
332 | 328 | reinterpret_cast<const base::Atomic32*>(FIELD_ADDR(p, offset))))
|
333 | 329 |
|
334 |
| -#define RELAXED_READ_INTPTR_FIELD(p, offset) \ |
335 |
| - static_cast<intptr_t>(base::Relaxed_Load( \ |
336 |
| - reinterpret_cast<const base::AtomicWord*>(FIELD_ADDR(p, offset)))) |
337 |
| - |
338 |
| -#define READ_INTPTR_FIELD(p, offset) \ |
339 |
| - (*reinterpret_cast<const intptr_t*>(FIELD_ADDR(p, offset))) |
340 |
| - |
341 |
| -#define RELEASE_WRITE_INTPTR_FIELD(p, offset, value) \ |
342 |
| - base::Release_Store( \ |
343 |
| - reinterpret_cast<base::AtomicWord*>(FIELD_ADDR(p, offset)), \ |
344 |
| - static_cast<base::AtomicWord>(value)); |
345 |
| - |
346 |
| -#define RELAXED_WRITE_INTPTR_FIELD(p, offset, value) \ |
347 |
| - base::Relaxed_Store( \ |
348 |
| - reinterpret_cast<base::AtomicWord*>(FIELD_ADDR(p, offset)), \ |
349 |
| - static_cast<base::AtomicWord>(value)); |
350 |
| - |
351 |
| -#define WRITE_INTPTR_FIELD(p, offset, value) \ |
352 |
| - (*reinterpret_cast<intptr_t*>(FIELD_ADDR(p, offset)) = value) |
353 |
| - |
354 |
| -#define READ_UINTPTR_FIELD(p, offset) \ |
355 |
| - (*reinterpret_cast<const uintptr_t*>(FIELD_ADDR(p, offset))) |
356 |
| - |
357 |
| -#define WRITE_UINTPTR_FIELD(p, offset, value) \ |
358 |
| - (*reinterpret_cast<uintptr_t*>(FIELD_ADDR(p, offset)) = value) |
359 |
| - |
360 | 330 | #define READ_UINT8_FIELD(p, offset) \
|
361 | 331 | (*reinterpret_cast<const uint8_t*>(FIELD_ADDR(p, offset)))
|
362 | 332 |
|
|
439 | 409 | #define WRITE_FLOAT_FIELD(p, offset, value) \
|
440 | 410 | (*reinterpret_cast<float*>(FIELD_ADDR(p, offset)) = value)
|
441 | 411 |
|
| 412 | +// TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size fields |
| 413 | +// (external pointers, doubles and BigInt data) are only kTaggedSize aligned so |
| 414 | +// we have to use unaligned pointer friendly way of accessing them in order to |
| 415 | +// avoid undefined behavior in C++ code. |
| 416 | +#ifdef V8_COMPRESS_POINTERS |
| 417 | + |
| 418 | +#define READ_INTPTR_FIELD(p, offset) \ |
| 419 | + ReadUnalignedValue<intptr_t>(FIELD_ADDR(p, offset)) |
| 420 | + |
| 421 | +#define WRITE_INTPTR_FIELD(p, offset, value) \ |
| 422 | + WriteUnalignedValue<intptr_t>(FIELD_ADDR(p, offset), value) |
| 423 | + |
| 424 | +#define READ_UINTPTR_FIELD(p, offset) \ |
| 425 | + ReadUnalignedValue<uintptr_t>(FIELD_ADDR(p, offset)) |
| 426 | + |
| 427 | +#define WRITE_UINTPTR_FIELD(p, offset, value) \ |
| 428 | + WriteUnalignedValue<uintptr_t>(FIELD_ADDR(p, offset), value) |
| 429 | + |
| 430 | +#define READ_UINT64_FIELD(p, offset) \ |
| 431 | + ReadUnalignedValue<uint64_t>(FIELD_ADDR(p, offset)) |
| 432 | + |
| 433 | +#define WRITE_UINT64_FIELD(p, offset, value) \ |
| 434 | + WriteUnalignedValue<uint64_t>(FIELD_ADDR(p, offset), value) |
| 435 | + |
| 436 | +#else // V8_COMPRESS_POINTERS |
| 437 | + |
| 438 | +#define READ_INTPTR_FIELD(p, offset) \ |
| 439 | + (*reinterpret_cast<const intptr_t*>(FIELD_ADDR(p, offset))) |
| 440 | + |
| 441 | +#define WRITE_INTPTR_FIELD(p, offset, value) \ |
| 442 | + (*reinterpret_cast<intptr_t*>(FIELD_ADDR(p, offset)) = value) |
| 443 | + |
| 444 | +#define READ_UINTPTR_FIELD(p, offset) \ |
| 445 | + (*reinterpret_cast<const uintptr_t*>(FIELD_ADDR(p, offset))) |
| 446 | + |
| 447 | +#define WRITE_UINTPTR_FIELD(p, offset, value) \ |
| 448 | + (*reinterpret_cast<uintptr_t*>(FIELD_ADDR(p, offset)) = value) |
| 449 | + |
442 | 450 | #define READ_UINT64_FIELD(p, offset) \
|
443 | 451 | (*reinterpret_cast<const uint64_t*>(FIELD_ADDR(p, offset)))
|
444 | 452 |
|
445 | 453 | #define WRITE_UINT64_FIELD(p, offset, value) \
|
446 | 454 | (*reinterpret_cast<uint64_t*>(FIELD_ADDR(p, offset)) = value)
|
447 | 455 |
|
448 |
| -#define READ_INT64_FIELD(p, offset) \ |
449 |
| - (*reinterpret_cast<const int64_t*>(FIELD_ADDR(p, offset))) |
450 |
| - |
451 |
| -#define WRITE_INT64_FIELD(p, offset, value) \ |
452 |
| - (*reinterpret_cast<int64_t*>(FIELD_ADDR(p, offset)) = value) |
| 456 | +#endif // V8_COMPRESS_POINTERS |
453 | 457 |
|
454 | 458 | #define READ_BYTE_FIELD(p, offset) \
|
455 | 459 | (*reinterpret_cast<const byte*>(FIELD_ADDR(p, offset)))
|
|
0 commit comments