Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index 9cc6ddc4f90b8ace9cd70f24d216e2e28c1df5f5..ced942b05ce67042a4fc59baf2addf9c59284f61 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -702,6 +702,9 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kObjectIsUndetectable: |
state = LowerObjectIsUndetectable(node, *effect, *control); |
break; |
+ case IrOpcode::kArrayBufferWasNeutered: |
+ state = LowerArrayBufferWasNeutered(node, *effect, *control); |
+ break; |
case IrOpcode::kStringFromCharCode: |
state = LowerStringFromCharCode(node, *effect, *control); |
break; |
@@ -1996,6 +1999,26 @@ EffectControlLinearizer::LowerObjectIsUndetectable(Node* node, Node* effect, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerArrayBufferWasNeutered(Node* node, Node* effect, |
+ Node* control) { |
+ Node* value = node->InputAt(0); |
+ |
+ Node* value_bit_field = effect = graph()->NewNode( |
+ simplified()->LoadField(AccessBuilder::ForJSArrayBufferBitField()), value, |
+ effect, control); |
+ value = graph()->NewNode( |
+ machine()->Word32Equal(), |
+ graph()->NewNode(machine()->Word32Equal(), |
+ graph()->NewNode(machine()->Word32And(), value_bit_field, |
+ jsgraph()->Int32Constant( |
+ JSArrayBuffer::WasNeutered::kMask)), |
+ jsgraph()->Int32Constant(0)), |
+ jsgraph()->Int32Constant(0)); |
+ |
+ return ValueEffectControl(value, effect, control); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerStringCharCodeAt(Node* node, Node* effect, |
Node* control) { |
Node* subject = node->InputAt(0); |