Reviewers: Mads Ager,
Description:
Fix pseudo-smi accessors lo/hi ordering for SharedFunctionInfo.
Incorrect ordering lead to crashes during GC when end position was not even
number.
Add static assert to catch this kind of typos.
Please review this at http://codereview.chromium.org/4640003/show
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/objects-inl.h
Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index
1852b549bf1802c351297f3363ddac401386e66c..8b9fb3756bfed606a66b32b28dc818b28b9c6484
100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -2671,6 +2671,7 @@ SMI_ACCESSORS(SharedFunctionInfo,
this_property_assignments_count,
#else
#define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \
+ STATIC_ASSERT(holder::offset % kPointerSize == 0); \
int holder::name() { \
int value = READ_INT_FIELD(this, offset); \
ASSERT(kHeapObjectTag == 1); \
@@ -2686,7 +2687,8 @@ SMI_ACCESSORS(SharedFunctionInfo,
this_property_assignments_count,
(value << 1) & ~kHeapObjectTag); \
}
-#define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \
+#define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \
+ STATIC_ASSERT(holder::offset % kPointerSize == kIntSize); \
INT_ACCESSORS(holder, name, offset)
@@ -2699,9 +2701,9 @@ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo,
expected_nof_properties,
kExpectedNofPropertiesOffset)
PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, num_literals,
kNumLiteralsOffset)
-PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, start_position_and_type,
+PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, end_position,
kEndPositionOffset)
+PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, start_position_and_type,
kStartPositionAndTypeOffset)
-PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, end_position,
kEndPositionOffset)
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, function_token_position,
kFunctionTokenPositionOffset)
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev