Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index 5ec3e67e4220f8225e6532290848f7442da7f7ad..064b4b85585e55ef1dea765ad6841e876c3a7d4d 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -757,25 +757,43 @@ void BytecodeGraphBuilder::VisitDec( |
void BytecodeGraphBuilder::VisitLogicalNot( |
const interpreter::BytecodeArrayIterator& iterator) { |
- UNIMPLEMENTED(); |
+ Node* node = |
+ NewNode(javascript()->UnaryNot(), environment()->LookupAccumulator()); |
+ environment()->BindAccumulator(node); |
} |
void BytecodeGraphBuilder::VisitTypeOf( |
const interpreter::BytecodeArrayIterator& iterator) { |
- UNIMPLEMENTED(); |
+ Node* node = |
+ NewNode(javascript()->TypeOf(), environment()->LookupAccumulator()); |
+ environment()->BindAccumulator(node); |
+} |
+ |
+ |
+void BytecodeGraphBuilder::BuildDelete( |
+ const interpreter::BytecodeArrayIterator& iterator) { |
+ Node* key = environment()->LookupAccumulator(); |
+ Node* object = environment()->LookupRegister(iterator.GetRegisterOperand(0)); |
+ |
+ Node* node = |
+ NewNode(javascript()->DeleteProperty(language_mode()), object, key); |
+ AddEmptyFrameStateInputs(node); |
+ environment()->BindAccumulator(node); |
} |
void BytecodeGraphBuilder::VisitDeletePropertyStrict( |
const interpreter::BytecodeArrayIterator& iterator) { |
- UNIMPLEMENTED(); |
+ DCHECK(is_strict(language_mode())); |
+ BuildDelete(iterator); |
} |
void BytecodeGraphBuilder::VisitDeletePropertySloppy( |
const interpreter::BytecodeArrayIterator& iterator) { |
- UNIMPLEMENTED(); |
+ DCHECK(is_sloppy(language_mode())); |
+ BuildDelete(iterator); |
} |