| Index: src/compiler/effect-control-linearizer.cc
|
| diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc
|
| index 0a8fbd900d9ddafe7f95c1c1146961e6bfaa193d..6b72b14249e1f5a8d5c39b92a952509359230c08 100644
|
| --- a/src/compiler/effect-control-linearizer.cc
|
| +++ b/src/compiler/effect-control-linearizer.cc
|
| @@ -745,6 +745,9 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node,
|
| case IrOpcode::kStringFromCodePoint:
|
| state = LowerStringFromCodePoint(node, *effect, *control);
|
| break;
|
| + case IrOpcode::kStringCharAt:
|
| + state = LowerStringCharAt(node, *effect, *control);
|
| + break;
|
| case IrOpcode::kStringCharCodeAt:
|
| state = LowerStringCharCodeAt(node, *effect, *control);
|
| break;
|
| @@ -2226,6 +2229,22 @@ EffectControlLinearizer::LowerArrayBufferWasNeutered(Node* node, Node* effect,
|
| }
|
|
|
| EffectControlLinearizer::ValueEffectControl
|
| +EffectControlLinearizer::LowerStringCharAt(Node* node, Node* effect,
|
| + Node* control) {
|
| + Callable const callable = CodeFactory::StringCharAt(isolate());
|
| + Operator::Properties properties = Operator::kNoThrow | Operator::kNoWrite;
|
| + CallDescriptor::Flags flags = CallDescriptor::kNoFlags;
|
| + CallDescriptor* desc = Linkage::GetStubCallDescriptor(
|
| + isolate(), graph()->zone(), callable.descriptor(), 0, flags, properties);
|
| + node->InsertInput(graph()->zone(), 0,
|
| + jsgraph()->HeapConstant(callable.code()));
|
| + node->InsertInput(graph()->zone(), 3, jsgraph()->NoContextConstant());
|
| + node->InsertInput(graph()->zone(), 4, effect);
|
| + NodeProperties::ChangeOp(node, common()->Call(desc));
|
| + return ValueEffectControl(node, node, control);
|
| +}
|
| +
|
| +EffectControlLinearizer::ValueEffectControl
|
| EffectControlLinearizer::LowerStringCharCodeAt(Node* node, Node* effect,
|
| Node* control) {
|
| Node* subject = node->InputAt(0);
|
|
|