| 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.
|
| //==============================================================================
|
|
|