Index: src/compiler/linkage-impl.h |
diff --git a/src/compiler/linkage-impl.h b/src/compiler/linkage-impl.h |
index 807d626be2e3792874abda1869971cdbbaf48770..c964eee0682085ce7f6ebf0d9ff76cbb2f4083e5 100644 |
--- a/src/compiler/linkage-impl.h |
+++ b/src/compiler/linkage-impl.h |
@@ -28,8 +28,8 @@ class LinkageHelper { |
} |
// TODO(turbofan): cache call descriptors for JSFunction calls. |
- static CallDescriptor* GetJSCallDescriptor(Zone* zone, |
- int js_parameter_count) { |
+ static CallDescriptor* GetJSCallDescriptor(Zone* zone, int js_parameter_count, |
+ CallDescriptor::Flags flags) { |
const size_t return_count = 1; |
const size_t context_count = 1; |
const size_t parameter_count = js_parameter_count + context_count; |
@@ -56,16 +56,17 @@ class LinkageHelper { |
// The target for JS function calls is the JSFunction object. |
MachineType target_type = kMachAnyTagged; |
LinkageLocation target_loc = regloc(LinkageTraits::JSCallFunctionReg()); |
- return new (zone) CallDescriptor(CallDescriptor::kCallJSFunction, // kind |
- target_type, // target MachineType |
- target_loc, // target location |
- types.Build(), // machine_sig |
- locations.Build(), // location_sig |
- js_parameter_count, // js_parameter_count |
- Operator::kNoProperties, // properties |
- kNoCalleeSaved, // callee-saved |
- CallDescriptor::kNeedsFrameState, // flags |
- "js-call"); |
+ return new (zone) CallDescriptor( // -- |
+ CallDescriptor::kCallJSFunction, // kind |
+ target_type, // target MachineType |
+ target_loc, // target location |
+ types.Build(), // machine_sig |
+ locations.Build(), // location_sig |
+ js_parameter_count, // js_parameter_count |
+ Operator::kNoProperties, // properties |
+ kNoCalleeSaved, // callee-saved |
+ flags, // flags |
+ "js-call"); |
} |
@@ -116,16 +117,17 @@ class LinkageHelper { |
// The target for runtime calls is a code object. |
MachineType target_type = kMachAnyTagged; |
LinkageLocation target_loc = LinkageLocation::AnyRegister(); |
- return new (zone) CallDescriptor(CallDescriptor::kCallCodeObject, // kind |
- target_type, // target MachineType |
- target_loc, // target location |
- types.Build(), // machine_sig |
- locations.Build(), // location_sig |
- js_parameter_count, // js_parameter_count |
- properties, // properties |
- kNoCalleeSaved, // callee-saved |
- flags, // flags |
- function->name); // debug name |
+ return new (zone) CallDescriptor( // -- |
+ CallDescriptor::kCallCodeObject, // kind |
+ target_type, // target MachineType |
+ target_loc, // target location |
+ types.Build(), // machine_sig |
+ locations.Build(), // location_sig |
+ js_parameter_count, // js_parameter_count |
+ properties, // properties |
+ kNoCalleeSaved, // callee-saved |
+ flags, // flags |
+ function->name); // debug name |
} |
@@ -169,16 +171,17 @@ class LinkageHelper { |
// The target for stub calls is a code object. |
MachineType target_type = kMachAnyTagged; |
LinkageLocation target_loc = LinkageLocation::AnyRegister(); |
- return new (zone) CallDescriptor(CallDescriptor::kCallCodeObject, // kind |
- target_type, // target MachineType |
- target_loc, // target location |
- types.Build(), // machine_sig |
- locations.Build(), // location_sig |
- js_parameter_count, // js_parameter_count |
- Operator::kNoProperties, // properties |
- kNoCalleeSaved, // callee-saved registers |
- flags, // flags |
- descriptor.DebugName(zone->isolate())); |
+ return new (zone) CallDescriptor( // -- |
+ CallDescriptor::kCallCodeObject, // kind |
+ target_type, // target MachineType |
+ target_loc, // target location |
+ types.Build(), // machine_sig |
+ locations.Build(), // location_sig |
+ js_parameter_count, // js_parameter_count |
+ Operator::kNoProperties, // properties |
+ kNoCalleeSaved, // callee-saved registers |
+ flags, // flags |
+ descriptor.DebugName(zone->isolate())); |
} |
static CallDescriptor* GetSimplifiedCDescriptor(Zone* zone, |
@@ -201,15 +204,16 @@ class LinkageHelper { |
// The target for C calls is always an address (i.e. machine pointer). |
MachineType target_type = kMachPtr; |
LinkageLocation target_loc = LinkageLocation::AnyRegister(); |
- return new (zone) CallDescriptor(CallDescriptor::kCallAddress, // kind |
- target_type, // target MachineType |
- target_loc, // target location |
- msig, // machine_sig |
- locations.Build(), // location_sig |
- 0, // js_parameter_count |
- Operator::kNoProperties, // properties |
- LinkageTraits::CCalleeSaveRegisters(), |
- CallDescriptor::kNoFlags, "c-call"); |
+ return new (zone) CallDescriptor( // -- |
+ CallDescriptor::kCallAddress, // kind |
+ target_type, // target MachineType |
+ target_loc, // target location |
+ msig, // machine_sig |
+ locations.Build(), // location_sig |
+ 0, // js_parameter_count |
+ Operator::kNoProperties, // properties |
+ LinkageTraits::CCalleeSaveRegisters(), CallDescriptor::kNoFlags, |
+ "c-call"); |
} |
static LinkageLocation regloc(Register reg) { |