- ASSERT(JSStack::CallFrameHeaderSize * 8 == 48);
- ASSERT(JSStack::ArgumentCount * 8 == -48);
- ASSERT(JSStack::CallerFrame * 8 == -40);
- ASSERT(JSStack::Callee * 8 == -32);
- ASSERT(JSStack::ScopeChain * 8 == -24);
- ASSERT(JSStack::ReturnPC * 8 == -16);
- ASSERT(JSStack::CodeBlock * 8 == -8);
- ASSERT(CallFrame::argumentOffsetIncludingThis(0) == -JSStack::CallFrameHeaderSize - 1);
+
+#ifndef NDEBUG
+#if USE(JSVALUE64)
+ const ptrdiff_t PtrSize = 8;
+ const ptrdiff_t CallFrameHeaderSlots = 5;
+#else // USE(JSVALUE64) // i.e. 32-bit version
+ const ptrdiff_t PtrSize = 4;
+ const ptrdiff_t CallFrameHeaderSlots = 4;
+#endif
+ const ptrdiff_t SlotSize = 8;
+#endif
+
+ ASSERT(sizeof(void*) == PtrSize);
+ ASSERT(sizeof(Register) == SlotSize);
+ ASSERT(JSStack::CallFrameHeaderSize == CallFrameHeaderSlots);
+
+ ASSERT(!CallFrame::callerFrameOffset());
+ ASSERT(JSStack::CallerFrameAndPCSize == (PtrSize * 2) / SlotSize);
+ ASSERT(CallFrame::returnPCOffset() == CallFrame::callerFrameOffset() + PtrSize);
+ ASSERT(JSStack::CodeBlock * sizeof(Register) == CallFrame::returnPCOffset() + PtrSize);
+ ASSERT(JSStack::Callee * sizeof(Register) == JSStack::CodeBlock * sizeof(Register) + SlotSize);
+ ASSERT(JSStack::ArgumentCount * sizeof(Register) == JSStack::Callee * sizeof(Register) + SlotSize);
+ ASSERT(JSStack::ThisArgument * sizeof(Register) == JSStack::ArgumentCount * sizeof(Register) + SlotSize);
+ ASSERT(JSStack::CallFrameHeaderSize == JSStack::ThisArgument);
+
+ ASSERT(CallFrame::argumentOffsetIncludingThis(0) == JSStack::ThisArgument);
+