Index: src/compiler/linkage.cc |
diff --git a/src/compiler/linkage.cc b/src/compiler/linkage.cc |
index 29d4388857fdf781f8b614c9f32a37adca859b19..0288f1a357181f8eadec6dbbd4cb03d1f49350ea 100644 |
--- a/src/compiler/linkage.cc |
+++ b/src/compiler/linkage.cc |
@@ -34,7 +34,17 @@ std::ostream& operator<<(std::ostream& os, const CallDescriptor& d) { |
// TODO(svenpanne) Output properties etc. and be less cryptic. |
return os << d.kind() << ":" << d.debug_name() << ":r" << d.ReturnCount() |
<< "j" << d.JSParameterCount() << "i" << d.InputCount() << "f" |
- << d.FrameStateCount(); |
+ << d.FrameStateCount() << "t" << d.SupportsTailCalls(); |
+} |
+ |
+ |
+bool CallDescriptor::HasSameReturnLocationsAs( |
+ const CallDescriptor* other) const { |
+ if (ReturnCount() != other->ReturnCount()) return false; |
+ for (size_t i = 0; i < ReturnCount(); ++i) { |
+ if (GetReturnLocation(i) != other->GetReturnLocation(i)) return false; |
+ } |
+ return true; |
} |
@@ -141,6 +151,17 @@ bool Linkage::NeedsFrameState(Runtime::FunctionId function) { |
} |
+bool CallDescriptor::UsesOnlyRegisters() const { |
+ for (size_t i = 0; i < InputCount(); ++i) { |
+ if (!GetInputLocation(i).is_register()) return false; |
+ } |
+ for (size_t i = 0; i < ReturnCount(); ++i) { |
+ if (!GetReturnLocation(i).is_register()) return false; |
+ } |
+ return true; |
+} |
+ |
+ |
//============================================================================== |
// Provide unimplemented methods on unsupported architectures, to at least link. |
//============================================================================== |