| Index: src/compiler/simplified-lowering.cc
|
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
|
| index d72fc827591350c7b4283b89ee861cb23bb340d8..7e93dc512519788e4bdc87b8392168722421563b 100644
|
| --- a/src/compiler/simplified-lowering.cc
|
| +++ b/src/compiler/simplified-lowering.cc
|
| @@ -2028,6 +2028,44 @@ class RepresentationSelector {
|
| if (lower()) DeferReplacement(node, node->InputAt(0));
|
| return;
|
| }
|
| + case IrOpcode::kNumberToString: {
|
| + Type* const rhs_type = TypeOf(node->InputAt(1));
|
| + VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged);
|
| + if (lower()) {
|
| + if (rhs_type->Is(type_cache_.kSingletonTen)) {
|
| + // NumberToString(x, #10) => Call(NumberToStringStub, x, no-context)
|
| + Operator::Properties properties = Operator::kEliminatable;
|
| + Callable callable =
|
| + CodeFactory::NumberToString(jsgraph_->isolate());
|
| + CallDescriptor::Flags flags = CallDescriptor::kNoFlags;
|
| + CallDescriptor* desc = Linkage::GetStubCallDescriptor(
|
| + jsgraph_->isolate(), jsgraph_->zone(), callable.descriptor(), 0,
|
| + flags, properties);
|
| + node->InsertInput(jsgraph_->zone(), 0,
|
| + jsgraph_->HeapConstant(callable.code()));
|
| + node->ReplaceInput(2, jsgraph_->NoContextConstant());
|
| + node->AppendInput(jsgraph_->zone(), jsgraph_->graph()->start());
|
| + NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc));
|
| + } else {
|
| + // NumberToString(x, y) => %NumberToString(x, y, no-context)
|
| + Operator::Properties properties = Operator::kEliminatable;
|
| + CallDescriptor::Flags flags = CallDescriptor::kNoFlags;
|
| + Runtime::FunctionId id = Runtime::kNumberToString;
|
| + CallDescriptor* desc = Linkage::GetRuntimeCallDescriptor(
|
| + jsgraph_->zone(), id, 2, properties, flags);
|
| + node->InsertInput(jsgraph_->zone(), 0,
|
| + jsgraph_->CEntryStubConstant(1));
|
| + node->AppendInput(jsgraph_->zone(),
|
| + jsgraph_->ExternalConstant(
|
| + ExternalReference(id, jsgraph_->isolate())));
|
| + node->AppendInput(jsgraph_->zone(), jsgraph_->Int32Constant(2));
|
| + node->AppendInput(jsgraph_->zone(), jsgraph_->NoContextConstant());
|
| + node->AppendInput(jsgraph_->zone(), jsgraph_->graph()->start());
|
| + NodeProperties::ChangeOp(node, jsgraph_->common()->Call(desc));
|
| + }
|
| + }
|
| + return;
|
| + }
|
| case IrOpcode::kReferenceEqual: {
|
| VisitBinop(node, UseInfo::AnyTagged(), MachineRepresentation::kBit);
|
| if (lower()) {
|
|
|