| Index: src/compiler/linkage.cc
|
| diff --git a/src/compiler/linkage.cc b/src/compiler/linkage.cc
|
| index 3880f2fa088e2e14ae236b3a678009a8cfd7495d..eaab6aefe40ac8f0c5ddd3fc53e3507bbc26e445 100644
|
| --- a/src/compiler/linkage.cc
|
| +++ b/src/compiler/linkage.cc
|
| @@ -63,6 +63,9 @@ std::ostream& operator<<(std::ostream& os, const CallDescriptor::Kind& k) {
|
| case CallDescriptor::kCallAddress:
|
| os << "Addr";
|
| break;
|
| + case CallDescriptor::kLazyBailout:
|
| + os << "LazyBail";
|
| + break;
|
| }
|
| return os;
|
| }
|
| @@ -351,6 +354,31 @@ CallDescriptor* Linkage::GetRuntimeCallDescriptor(
|
| }
|
|
|
|
|
| +CallDescriptor* Linkage::GetLazyBailoutDescriptor(Zone* zone) {
|
| + const size_t return_count = 0;
|
| + const size_t parameter_count = 0;
|
| +
|
| + LocationSignature::Builder locations(zone, return_count, parameter_count);
|
| + MachineSignature::Builder types(zone, return_count, parameter_count);
|
| +
|
| + // The target is ignored, but we need to give some values here.
|
| + MachineType target_type = kMachAnyTagged;
|
| + LinkageLocation target_loc = regloc(kJSFunctionRegister);
|
| + return new (zone) CallDescriptor( // --
|
| + CallDescriptor::kLazyBailout, // kind
|
| + target_type, // target MachineType
|
| + target_loc, // target location
|
| + types.Build(), // machine_sig
|
| + locations.Build(), // location_sig
|
| + 0, // stack_parameter_count
|
| + Operator::kNoThrow, // properties
|
| + kNoCalleeSaved, // callee-saved
|
| + kNoCalleeSaved, // callee-saved fp
|
| + CallDescriptor::kNeedsFrameState, // flags
|
| + "lazy-bailout");
|
| +}
|
| +
|
| +
|
| CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr,
|
| int js_parameter_count,
|
| CallDescriptor::Flags flags) {
|
|
|