From 7e163d2552c06aff57787d64c1538a9865332e79 Mon Sep 17 00:00:00 2001 From: "iposva@chromium.org" Date: Thu, 4 Mar 2010 09:55:04 +0000 Subject: [PATCH] - Rearrange fields in SharedFunctionInfo. Review URL: http://codereview.chromium.org/669051 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/objects.cc | 8 +++----- src/objects.h | 36 +++++++++++++++++------------------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/objects.cc b/src/objects.cc index 5f03a34..3260d07 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -4958,11 +4958,9 @@ void SharedFunctionInfo::SourceCodePrint(StringStream* accumulator, void SharedFunctionInfo::SharedFunctionInfoIterateBody(ObjectVisitor* v) { - IteratePointers(v, kNameOffset, kConstructStubOffset + kPointerSize); - IteratePointers(v, kInstanceClassNameOffset, kScriptOffset + kPointerSize); - IteratePointers(v, kDebugInfoOffset, kInferredNameOffset + kPointerSize); - IteratePointers(v, kThisPropertyAssignmentsOffset, - kThisPropertyAssignmentsOffset + kPointerSize); + IteratePointers(v, + kNameOffset, + kThisPropertyAssignmentsOffset + kPointerSize); } diff --git a/src/objects.h b/src/objects.h index e3d7b32..e35fc11 100644 --- a/src/objects.h +++ b/src/objects.h @@ -3280,11 +3280,22 @@ class SharedFunctionInfo: public HeapObject { static const int kDontAdaptArgumentsSentinel = -1; // Layout description. - // (An even number of integers has a size that is a multiple of a pointer.) + // Pointer fields. static const int kNameOffset = HeapObject::kHeaderSize; static const int kCodeOffset = kNameOffset + kPointerSize; static const int kConstructStubOffset = kCodeOffset + kPointerSize; - static const int kLengthOffset = kConstructStubOffset + kPointerSize; + static const int kInstanceClassNameOffset = + kConstructStubOffset + kPointerSize; + static const int kExternalReferenceDataOffset = + kInstanceClassNameOffset + kPointerSize; + static const int kScriptOffset = kExternalReferenceDataOffset + kPointerSize; + static const int kDebugInfoOffset = kScriptOffset + kPointerSize; + static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize; + static const int kThisPropertyAssignmentsOffset = + kInferredNameOffset + kPointerSize; + // Integer fields. + static const int kLengthOffset = + kThisPropertyAssignmentsOffset + kPointerSize; static const int kFormalParameterCountOffset = kLengthOffset + kIntSize; static const int kExpectedNofPropertiesOffset = kFormalParameterCountOffset + kIntSize; @@ -3292,27 +3303,14 @@ class SharedFunctionInfo: public HeapObject { kExpectedNofPropertiesOffset + kIntSize; static const int kEndPositionOffset = kStartPositionAndTypeOffset + kIntSize; static const int kFunctionTokenPositionOffset = kEndPositionOffset + kIntSize; - static const int kInstanceClassNameOffset = + static const int kCompilerHintsOffset = kFunctionTokenPositionOffset + kIntSize; - static const int kExternalReferenceDataOffset = - kInstanceClassNameOffset + kPointerSize; - static const int kScriptOffset = kExternalReferenceDataOffset + kPointerSize; - static const int kDebugInfoOffset = kScriptOffset + kPointerSize; - static const int kInferredNameOffset = kDebugInfoOffset + kPointerSize; - static const int kCompilerHintsOffset = kInferredNameOffset + kPointerSize; - static const int kThisPropertyAssignmentsOffset = - kCompilerHintsOffset + kPointerSize; static const int kThisPropertyAssignmentsCountOffset = - kThisPropertyAssignmentsOffset + kPointerSize; - static const int kSize = kThisPropertyAssignmentsCountOffset + kPointerSize; + kCompilerHintsOffset + kIntSize; + // Total size. + static const int kSize = kThisPropertyAssignmentsCountOffset + kIntSize; private: - // Bit positions in length_and_flg. - // The least significant bit is used as the flag. - static const int kFlagBit = 0; - static const int kLengthShift = 1; - static const int kLengthMask = ~((1 << kLengthShift) - 1); - // Bit positions in start_position_and_type. // The source code start position is in the 30 most significant bits of // the start_position_and_type field. -- 2.7.4