| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 0e8d2b460cb263f2896b4fb89007e16d5b94e551..103e93e8c4ac2547bea8167c190803000071ea6a 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -2843,13 +2843,13 @@ class ConstantPoolArray: public HeapObject {
|
| // get_extended_section_header_offset().
|
| static const int kExtendedInt64CountOffset = 0;
|
| static const int kExtendedCodePtrCountOffset =
|
| - kExtendedInt64CountOffset + kPointerSize;
|
| + kExtendedInt64CountOffset + kInt32Size;
|
| static const int kExtendedHeapPtrCountOffset =
|
| - kExtendedCodePtrCountOffset + kPointerSize;
|
| + kExtendedCodePtrCountOffset + kInt32Size;
|
| static const int kExtendedInt32CountOffset =
|
| - kExtendedHeapPtrCountOffset + kPointerSize;
|
| + kExtendedHeapPtrCountOffset + kInt32Size;
|
| static const int kExtendedFirstOffset =
|
| - kExtendedInt32CountOffset + kPointerSize;
|
| + kExtendedInt32CountOffset + kInt32Size;
|
|
|
| // Dispatched behavior.
|
| void ConstantPoolIterateBody(ObjectVisitor* v);
|
| @@ -5365,7 +5365,7 @@ class Code: public HeapObject {
|
| static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize;
|
| static const int kConstantPoolOffset = kPrologueOffset + kPointerSize;
|
|
|
| - static const int kHeaderPaddingStart = kConstantPoolOffset + kIntSize;
|
| + static const int kHeaderPaddingStart = kConstantPoolOffset + kPointerSize;
|
|
|
| // Add padding to align the instruction start following right after
|
| // the Code object header.
|
| @@ -6936,10 +6936,11 @@ class SharedFunctionInfo: public HeapObject {
|
| // garbage collections.
|
| // To avoid wasting space on 64-bit architectures we use
|
| // the following trick: we group integer fields into pairs
|
| - // First integer in each pair is shifted left by 1.
|
| - // By doing this we guarantee that LSB of each kPointerSize aligned
|
| - // word is not set and thus this word cannot be treated as pointer
|
| - // to HeapObject during old space traversal.
|
| +// The least significant integer in each pair is shifted left by 1.
|
| +// By doing this we guarantee that LSB of each kPointerSize aligned
|
| +// word is not set and thus this word cannot be treated as pointer
|
| +// to HeapObject during old space traversal.
|
| +#if V8_TARGET_LITTLE_ENDIAN
|
| static const int kLengthOffset =
|
| kFeedbackVectorOffset + kPointerSize;
|
| static const int kFormalParameterCountOffset =
|
| @@ -6973,7 +6974,37 @@ class SharedFunctionInfo: public HeapObject {
|
| // Total size.
|
| static const int kSize = kProfilerTicksOffset + kIntSize;
|
|
|
| -#endif
|
| +#elif V8_TARGET_BIG_ENDIAN
|
| + static const int kFormalParameterCountOffset =
|
| + kFeedbackVectorOffset + kPointerSize;
|
| + static const int kLengthOffset = kFormalParameterCountOffset + kIntSize;
|
| +
|
| + static const int kNumLiteralsOffset = kLengthOffset + kIntSize;
|
| + static const int kExpectedNofPropertiesOffset = kNumLiteralsOffset + kIntSize;
|
| +
|
| + static const int kStartPositionAndTypeOffset =
|
| + kExpectedNofPropertiesOffset + kIntSize;
|
| + static const int kEndPositionOffset = kStartPositionAndTypeOffset + kIntSize;
|
| +
|
| + static const int kCompilerHintsOffset = kEndPositionOffset + kIntSize;
|
| + static const int kFunctionTokenPositionOffset =
|
| + kCompilerHintsOffset + kIntSize;
|
| +
|
| + static const int kCountersOffset = kFunctionTokenPositionOffset + kIntSize;
|
| + static const int kOptCountAndBailoutReasonOffset = kCountersOffset + kIntSize;
|
| +
|
| + static const int kProfilerTicksOffset =
|
| + kOptCountAndBailoutReasonOffset + kIntSize;
|
| + static const int kAstNodeCountOffset = kProfilerTicksOffset + kIntSize;
|
| +
|
| + // Total size.
|
| + static const int kSize = kAstNodeCountOffset + kIntSize;
|
| +
|
| +#else
|
| +#error Unknown byte ordering
|
| +#endif // Big endian
|
| +#endif // 64-bit
|
| +
|
|
|
| static const int kAlignedSize = POINTER_SIZE_ALIGN(kSize);
|
|
|
| @@ -8482,8 +8513,13 @@ class Name: public HeapObject {
|
| DECLARE_PRINTER(Name)
|
|
|
| // Layout description.
|
| - static const int kHashFieldOffset = HeapObject::kHeaderSize;
|
| - static const int kSize = kHashFieldOffset + kPointerSize;
|
| + static const int kHashFieldSlot = HeapObject::kHeaderSize;
|
| +#if V8_TARGET_LITTLE_ENDIAN || !V8_HOST_ARCH_64_BIT
|
| + static const int kHashFieldOffset = kHashFieldSlot;
|
| +#else
|
| + static const int kHashFieldOffset = kHashFieldSlot + kIntSize;
|
| +#endif
|
| + static const int kSize = kHashFieldSlot + kPointerSize;
|
|
|
| // Mask constant for checking if a name has a computed hash code
|
| // and if it is a string that is an array index. The least significant bit
|
|
|