Index: src/compiler/linkage.cc |
diff --git a/src/compiler/linkage.cc b/src/compiler/linkage.cc |
index 66e5cda7d7536f01431f1bdf9edf4a1b114299b0..3ef5b9a7a61ea337f6fcc417ec18c15fa5ffb788 100644 |
--- a/src/compiler/linkage.cc |
+++ b/src/compiler/linkage.cc |
@@ -387,8 +387,8 @@ CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr, |
CallDescriptor* Linkage::GetInterpreterDispatchDescriptor(Zone* zone) { |
- MachineSignature::Builder types(zone, 0, 5); |
- LocationSignature::Builder locations(zone, 0, 5); |
+ MachineSignature::Builder types(zone, 0, 6); |
+ LocationSignature::Builder locations(zone, 0, 6); |
// Add registers for fixed parameters passed via interpreter dispatch. |
STATIC_ASSERT(0 == Linkage::kInterpreterAccumulatorParameter); |
@@ -411,6 +411,15 @@ CallDescriptor* Linkage::GetInterpreterDispatchDescriptor(Zone* zone) { |
types.AddParam(kMachPtr); |
locations.AddParam(regloc(kInterpreterDispatchTableRegister)); |
+ STATIC_ASSERT(5 == Linkage::kInterpreterContextParameter); |
+ types.AddParam(kMachAnyTagged); |
+#if defined(V8_TARGET_ARCH_IA32) |
Michael Starzinger
2015/08/20 09:32:02
Just for posterity: Not a huge fan of this #ifdef
rmcilroy
2015/08/24 10:14:38
Acknowledged.
|
+ locations.AddParam( |
+ LinkageLocation::ForCallerFrameSlot(kInterpreterContextSpillSlot)); |
+#else |
+ locations.AddParam(regloc(kContextRegister)); |
+#endif |
+ |
LinkageLocation target_loc = LinkageLocation::ForAnyRegister(); |
return new (zone) CallDescriptor( // -- |
CallDescriptor::kCallCodeObject, // kind |