Index: src/compiler/c-linkage.cc |
diff --git a/src/compiler/c-linkage.cc b/src/compiler/c-linkage.cc |
index 61b3ee3ea73106ca18d96347e9a619e90238c230..76ddd2ed7d1d2cd26e8b3e218170f56d2494891c 100644 |
--- a/src/compiler/c-linkage.cc |
+++ b/src/compiler/c-linkage.cc |
@@ -14,32 +14,22 @@ namespace internal { |
namespace compiler { |
namespace { |
-// Platform-specific configuration for C calling convention. |
LinkageLocation regloc(Register reg) { |
return LinkageLocation::ForRegister(Register::ToAllocationIndex(reg)); |
} |
-LinkageLocation stackloc(int i) { |
- DCHECK_LT(i, 0); |
- return LinkageLocation::ForCallerFrameSlot(i); |
-} |
- |
- |
+// Platform-specific configuration for C calling convention. |
#if V8_TARGET_ARCH_IA32 |
// =========================================================================== |
// == ia32 =================================================================== |
// =========================================================================== |
-#define RETURN_REGISTER_0 eax |
-#define RETURN_REGISTER_1 edx |
#define CALLEE_SAVE_REGISTERS esi.bit() | edi.bit() | ebx.bit() |
#elif V8_TARGET_ARCH_X64 |
// =========================================================================== |
// == x64 ==================================================================== |
// =========================================================================== |
-#define RETURN_REGISTER_0 rax |
-#define RETURN_REGISTER_1 rdx |
#ifdef _WIN64 |
// == x64 windows ============================================================ |
@@ -64,8 +54,6 @@ LinkageLocation stackloc(int i) { |
// =========================================================================== |
// == x87 ==================================================================== |
// =========================================================================== |
-#define RETURN_REGISTER_0 eax |
-#define RETURN_REGISTER_1 edx |
#define CALLEE_SAVE_REGISTERS esi.bit() | edi.bit() | ebx.bit() |
#elif V8_TARGET_ARCH_ARM |
@@ -73,8 +61,6 @@ LinkageLocation stackloc(int i) { |
// == arm ==================================================================== |
// =========================================================================== |
#define PARAM_REGISTERS r0, r1, r2, r3 |
-#define RETURN_REGISTER_0 r0 |
-#define RETURN_REGISTER_1 r1 |
#define CALLEE_SAVE_REGISTERS \ |
r4.bit() | r5.bit() | r6.bit() | r7.bit() | r8.bit() | r9.bit() | r10.bit() |
#define CALLEE_SAVE_FP_REGISTERS \ |
@@ -88,8 +74,6 @@ LinkageLocation stackloc(int i) { |
// == arm64 ==================================================================== |
// =========================================================================== |
#define PARAM_REGISTERS x0, x1, x2, x3, x4, x5, x6, x7 |
-#define RETURN_REGISTER_0 x0 |
-#define RETURN_REGISTER_1 x1 |
#define CALLEE_SAVE_REGISTERS \ |
(1 << x19.code()) | (1 << x20.code()) | (1 << x21.code()) | \ |
(1 << x22.code()) | (1 << x23.code()) | (1 << x24.code()) | \ |
@@ -107,8 +91,6 @@ LinkageLocation stackloc(int i) { |
// == mips =================================================================== |
// =========================================================================== |
#define PARAM_REGISTERS a0, a1, a2, a3 |
-#define RETURN_REGISTER_0 v0 |
-#define RETURN_REGISTER_1 v1 |
#define CALLEE_SAVE_REGISTERS \ |
s0.bit() | s1.bit() | s2.bit() | s3.bit() | s4.bit() | s5.bit() | s6.bit() | \ |
s7.bit() |
@@ -120,8 +102,6 @@ LinkageLocation stackloc(int i) { |
// == mips64 ================================================================= |
// =========================================================================== |
#define PARAM_REGISTERS a0, a1, a2, a3, a4, a5, a6, a7 |
-#define RETURN_REGISTER_0 v0 |
-#define RETURN_REGISTER_1 v1 |
#define CALLEE_SAVE_REGISTERS \ |
s0.bit() | s1.bit() | s2.bit() | s3.bit() | s4.bit() | s5.bit() | s6.bit() | \ |
s7.bit() |
@@ -133,8 +113,6 @@ LinkageLocation stackloc(int i) { |
// == ppc & ppc64 ============================================================ |
// =========================================================================== |
#define PARAM_REGISTERS r3, r4, r5, r6, r7, r8, r9, r10 |
-#define RETURN_REGISTER_0 r3 |
-#define RETURN_REGISTER_1 r4 |
#define CALLEE_SAVE_REGISTERS \ |
r14.bit() | r15.bit() | r16.bit() | r17.bit() | r18.bit() | r19.bit() | \ |
r20.bit() | r21.bit() | r22.bit() | r23.bit() | r24.bit() | r25.bit() | \ |
@@ -148,7 +126,7 @@ LinkageLocation stackloc(int i) { |
// =========================================================================== |
// == unknown ================================================================ |
// =========================================================================== |
-// Don't define anything. The below code will dynamically fail. |
+#define UNSUPPORTED_C_LINKAGE 1 |
#endif |
} // namespace |
@@ -173,22 +151,22 @@ CallDescriptor* Linkage::GetSimplifiedCDescriptor( |
} |
#endif |
-#ifdef RETURN_REGISTER_0 |
+#ifdef UNSUPPORTED_C_LINKAGE |
+ // This method should not be called on unknown architectures. |
+ V8_Fatal(__FILE__, __LINE__, |
+ "requested C call descriptor on unsupported architecture"); |
+ return nullptr; |
+#endif |
+ |
// Add return location(s). |
CHECK(locations.return_count_ <= 2); |
if (locations.return_count_ > 0) { |
- locations.AddReturn(regloc(RETURN_REGISTER_0)); |
+ locations.AddReturn(regloc(kReturnRegister0)); |
} |
if (locations.return_count_ > 1) { |
- locations.AddReturn(regloc(RETURN_REGISTER_1)); |
+ locations.AddReturn(regloc(kReturnRegister1)); |
} |
-#else |
- // This method should not be called on unknown architectures. |
- V8_Fatal(__FILE__, __LINE__, |
- "requested C call descriptor on unsupported architecture"); |
- return nullptr; |
-#endif |
const int parameter_count = static_cast<int>(msig->parameter_count()); |
@@ -211,7 +189,8 @@ CallDescriptor* Linkage::GetSimplifiedCDescriptor( |
if (i < kParamRegisterCount) { |
locations.AddParam(regloc(kParamRegisters[i])); |
} else { |
- locations.AddParam(stackloc(-1 - stack_offset)); |
+ locations.AddParam( |
+ LinkageLocation::ForCallerFrameSlot(-1 - stack_offset)); |
stack_offset++; |
} |
} |