Chromium Code Reviews| Index: src/interpreter/interpreter.cc |
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
| index 525780575224d6df06364a6f2c688aea0068da15..bd6af49936db092999561d78a634b5bb3ebd3a99 100644 |
| --- a/src/interpreter/interpreter.cc |
| +++ b/src/interpreter/interpreter.cc |
| @@ -1950,6 +1950,53 @@ void Interpreter::DoTestUndetectable(InterpreterAssembler* assembler) { |
| __ Dispatch(); |
| } |
| +// TestNull <src> |
| +// |
| +// Test if the value in the <src> register is strictly equal to Null. |
|
rmcilroy
2016/12/14 18:50:00
nit Null -> null
mythria
2016/12/15 09:27:39
Done.
|
| +void Interpreter::DoTestNull(InterpreterAssembler* assembler) { |
| + Node* reg_index = __ BytecodeOperandReg(0); |
| + Node* object = __ LoadRegister(reg_index); |
| + Node* null_value = __ HeapConstant(isolate_->factory()->null_value()); |
| + |
| + Label equal(assembler), end(assembler); |
| + __ GotoIf(__ WordEqual(object, null_value), &equal); |
| + __ SetAccumulator(__ BooleanConstant(false)); |
| + __ Goto(&end); |
| + |
| + __ Bind(&equal); |
| + { |
| + __ SetAccumulator(__ BooleanConstant(true)); |
| + __ Goto(&end); |
| + } |
| + |
| + __ Bind(&end); |
| + __ Dispatch(); |
| +} |
| + |
| +// TestUndefined <src> |
| +// |
| +// Test if the value in the <src> register is strictly equal to Undefined. |
|
rmcilroy
2016/12/14 18:50:00
nit - Undefined -> undefined.
mythria
2016/12/15 09:27:39
Done.
|
| +void Interpreter::DoTestUndefined(InterpreterAssembler* assembler) { |
| + Node* reg_index = __ BytecodeOperandReg(0); |
| + Node* object = __ LoadRegister(reg_index); |
| + Node* undefined_value = |
| + __ HeapConstant(isolate_->factory()->undefined_value()); |
| + |
| + Label equal(assembler), end(assembler); |
| + __ GotoIf(__ WordEqual(object, undefined_value), &equal); |
| + __ SetAccumulator(__ BooleanConstant(false)); |
| + __ Goto(&end); |
| + |
| + __ Bind(&equal); |
| + { |
| + __ SetAccumulator(__ BooleanConstant(true)); |
| + __ Goto(&end); |
| + } |
| + |
| + __ Bind(&end); |
| + __ Dispatch(); |
| +} |
| + |
| // Jump <imm> |
| // |
| // Jump by number of bytes represented by the immediate operand |imm|. |