Cleanup frame description constant.
authormstarzinger <mstarzinger@chromium.org>
Tue, 7 Jul 2015 08:14:20 +0000 (01:14 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 7 Jul 2015 08:14:30 +0000 (08:14 +0000)
This unifies the existing frame constants that are the same accross all
architectures. It also adds a new kOriginalConstructorOffset constant
for construct frames and uses is in full-codegen.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1220223005

Cr-Commit-Position: refs/heads/master@{#29509}

18 files changed:
src/arm/frames-arm.h
src/arm/full-codegen-arm.cc
src/arm64/frames-arm64.h
src/arm64/full-codegen-arm64.cc
src/frames.cc
src/frames.h
src/ia32/frames-ia32.h
src/ia32/full-codegen-ia32.cc
src/mips/frames-mips.h
src/mips/full-codegen-mips.cc
src/mips64/frames-mips64.h
src/mips64/full-codegen-mips64.cc
src/ppc/frames-ppc.h
src/ppc/full-codegen-ppc.cc
src/x64/frames-x64.h
src/x64/full-codegen-x64.cc
src/x87/frames-x87.h
src/x87/full-codegen-x87.cc

index 6d1c718dcad36120cef30e5011b059a69359de97..db6a9e52e05809edfd3c0e5acaa784b966bbef72 100644 (file)
@@ -128,35 +128,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index 65abe076ee75feca6d5ed4e05bb0d84bb386df84..2f1a23b1c24235420ae96c39a6b7c249f526e7ca 100644 (file)
@@ -263,8 +263,8 @@ void FullCodeGenerator::Generate() {
     Label non_construct_frame, done;
 
     __ b(ne, &non_construct_frame);
-    __ ldr(r0, MemOperand(r2, StandardFrameConstants::kExpressionsOffset -
-                                  2 * kPointerSize));
+    __ ldr(r0,
+           MemOperand(r2, ConstructFrameConstants::kOriginalConstructorOffset));
     __ b(&done);
 
     __ bind(&non_construct_frame);
index 544383de6bc582bbe2a8898d2bbebbf6031561d4..963dc3e025e7ad0f9e355e49abeb4f8d46f99da1 100644 (file)
@@ -63,35 +63,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index ece201775f96e6ca35ce95fd89731c7c9f54f073..cb093146945ed16035e888d9192ac5b31482d9f0 100644 (file)
@@ -269,8 +269,8 @@ void FullCodeGenerator::Generate() {
     Label non_construct_frame, done;
 
     __ B(ne, &non_construct_frame);
-    __ Ldr(x0, MemOperand(x2, StandardFrameConstants::kExpressionsOffset -
-                                  2 * kPointerSize));
+    __ Ldr(x0,
+           MemOperand(x2, ConstructFrameConstants::kOriginalConstructorOffset));
     __ B(&done);
 
     __ Bind(&non_construct_frame);
index 5aefe066f5ba7cfb9f871718525fad9858a88a8d..723db4ae13c3c6e8da7a173578bd545c6e0ced7b 100644 (file)
@@ -737,6 +737,8 @@ Object* JavaScriptFrame::GetOriginalConstructor() const {
     fp = Memory::Address_at(fp + StandardFrameConstants::kCallerFPOffset);
   }
   DCHECK(IsConstructFrame(fp));
+  STATIC_ASSERT(ConstructFrameConstants::kOriginalConstructorOffset ==
+                StandardFrameConstants::kExpressionsOffset - 2 * kPointerSize);
   return GetExpression(fp, 2);
 }
 
@@ -744,6 +746,8 @@ Object* JavaScriptFrame::GetOriginalConstructor() const {
 int JavaScriptFrame::GetArgumentsLength() const {
   // If there is an arguments adaptor frame get the arguments length from it.
   if (has_adapted_arguments()) {
+    STATIC_ASSERT(ArgumentsAdaptorFrameConstants::kLengthOffset ==
+                  StandardFrameConstants::kExpressionsOffset);
     return Smi::cast(GetExpression(caller_fp(), 0))->value();
   } else {
     return GetNumberOfIncomingArguments();
index ca3aba441a284240d44d0ac4796675ab3b257124..910dc18cfbf70c5942483b02eadb4001c768d0aa 100644 (file)
@@ -134,6 +134,40 @@ class StandardFrameConstants : public AllStatic {
 };
 
 
+class ArgumentsAdaptorFrameConstants : public AllStatic {
+ public:
+  // FP-relative.
+  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
+
+  static const int kFrameSize =
+      StandardFrameConstants::kFixedFrameSize + kPointerSize;
+};
+
+
+class InternalFrameConstants : public AllStatic {
+ public:
+  // FP-relative.
+  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
+};
+
+
+class ConstructFrameConstants : public AllStatic {
+ public:
+  // FP-relative.
+  static const int kImplicitReceiverOffset =
+      StandardFrameConstants::kExpressionsOffset - 2 * kPointerSize;
+  static const int kOriginalConstructorOffset =
+      StandardFrameConstants::kExpressionsOffset - 2 * kPointerSize;
+  static const int kLengthOffset =
+      StandardFrameConstants::kExpressionsOffset - 1 * kPointerSize;
+  static const int kCodeOffset =
+      StandardFrameConstants::kExpressionsOffset - 0 * kPointerSize;
+
+  static const int kFrameSize =
+      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
+};
+
+
 // Abstract base class for all stack frames.
 class StackFrame BASE_EMBEDDED {
  public:
index bb814a33bc091365d56e447da26ef6d095b6afac..fddace732eb36f333dee160c750d6b39a75c099c 100644 (file)
@@ -79,35 +79,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index 5fd4414a802b707f6db37c1125e7c446782e4e52..733b72a0e1e33d03e68a888084f849f2ac406a38 100644 (file)
@@ -264,8 +264,8 @@ void FullCodeGenerator::Generate() {
     __ j(not_equal, &non_construct_frame);
 
     // Construct frame
-    __ mov(eax, Operand(eax, StandardFrameConstants::kExpressionsOffset -
-                                 2 * kPointerSize));
+    __ mov(eax,
+           Operand(eax, ConstructFrameConstants::kOriginalConstructorOffset));
     __ jmp(&done);
 
     // Non-construct frame
index 7716c950a9d6f285c5b6f445af31c05bb2c22a7e..f0b734db1c69dfb4a52355c5db005d518a5f2fa4 100644 (file)
@@ -169,35 +169,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index de4f42490136f2d403f007e4ace0361dd8cc2f4f..8a9201a8ec432bb0abe94c5f5ec9fe581e535e5a 100644 (file)
@@ -281,8 +281,8 @@ void FullCodeGenerator::Generate() {
     __ Branch(&non_construct_frame, ne, a1,
               Operand(Smi::FromInt(StackFrame::CONSTRUCT)));
 
-    __ lw(v0, MemOperand(a2, StandardFrameConstants::kExpressionsOffset -
-                                 2 * kPointerSize));
+    __ lw(v0,
+          MemOperand(a2, ConstructFrameConstants::kOriginalConstructorOffset));
     __ Branch(&done);
 
     __ bind(&non_construct_frame);
index b92efc99f6fb626dcc6c220560d81b6fa478cff9..4434a98b7fb7d0ac42baea8aef76ff09372d2706 100644 (file)
@@ -169,35 +169,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index ed6bd15b186c4563e03a6ec59adfc71c1b750b43..48977f616fe563117ccf3d5e02b85b5cdbbb4de0 100644 (file)
@@ -277,8 +277,8 @@ void FullCodeGenerator::Generate() {
     __ Branch(&non_construct_frame, ne, a1,
               Operand(Smi::FromInt(StackFrame::CONSTRUCT)));
 
-    __ ld(v0, MemOperand(a2, StandardFrameConstants::kExpressionsOffset -
-                                 2 * kPointerSize));
+    __ ld(v0,
+          MemOperand(a2, ConstructFrameConstants::kOriginalConstructorOffset));
     __ Branch(&done);
 
     __ bind(&non_construct_frame);
index 3e66b22ea41cbb50cf71651e7e9f4da30ce0e428..0357731b4ba3563abd04ddb7e34eab82cdcaa104 100644 (file)
@@ -148,35 +148,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index 891d6ac93a056f3e3fe6d5335bf875991ba150fd..c80f104dc97b397096c3f630266cf76adfe2dc68 100644 (file)
@@ -276,8 +276,8 @@ void FullCodeGenerator::Generate() {
     Label non_construct_frame, done;
 
     __ bne(&non_construct_frame);
-    __ LoadP(r3, MemOperand(r5, StandardFrameConstants::kExpressionsOffset -
-                                    2 * kPointerSize));
+    __ LoadP(r3, MemOperand(
+                     r5, ConstructFrameConstants::kOriginalConstructorOffset));
     __ b(&done);
 
     __ bind(&non_construct_frame);
index fadb52a5859933bfaeb51487832a45265bb4614f..0719baffbf9dadee9bb76bc644de1cf802c8df70 100644 (file)
@@ -71,35 +71,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index 0aa76bd77fcac455a9444013b786937565ed8196..0011bcacd7c12916fcdd021574fe981cd8e4536d 100644 (file)
@@ -261,8 +261,8 @@ void FullCodeGenerator::Generate() {
     __ j(not_equal, &non_construct_frame);
 
     // Construct frame
-    __ movp(rax, Operand(rax, StandardFrameConstants::kExpressionsOffset -
-                                  2 * kPointerSize));
+    __ movp(rax,
+            Operand(rax, ConstructFrameConstants::kOriginalConstructorOffset));
     __ jmp(&done);
 
     // Non-construct frame
index b1865572c4b347830679c1c594c6ee380108b1d2..78209258d62c9c5c2441709c971384f0a43a2c22 100644 (file)
@@ -79,35 +79,6 @@ class JavaScriptFrameConstants : public AllStatic {
 };
 
 
-class ArgumentsAdaptorFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + kPointerSize;
-};
-
-
-class ConstructFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kImplicitReceiverOffset = -5 * kPointerSize;
-  static const int kLengthOffset           = -4 * kPointerSize;
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-
-  static const int kFrameSize =
-      StandardFrameConstants::kFixedFrameSize + 3 * kPointerSize;
-};
-
-
-class InternalFrameConstants : public AllStatic {
- public:
-  // FP-relative.
-  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
-};
-
-
 inline Object* JavaScriptFrame::function_slot_object() const {
   const int offset = JavaScriptFrameConstants::kFunctionOffset;
   return Memory::Object_at(fp() + offset);
index 3029cab284a3c6b93281ac9151bc3124eb8fcd09..f267fc49ddfd3da459a9e7679324af2453a13150 100644 (file)
@@ -261,8 +261,8 @@ void FullCodeGenerator::Generate() {
     __ j(not_equal, &non_construct_frame);
 
     // Construct frame
-    __ mov(eax, Operand(eax, StandardFrameConstants::kExpressionsOffset -
-                                 2 * kPointerSize));
+    __ mov(eax,
+           Operand(eax, ConstructFrameConstants::kOriginalConstructorOffset));
     __ jmp(&done);
 
     // Non-construct frame