| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index ce6a9105f23abac7e1edf923ed559227e7692041..99f84b509bf1d7daf53e60c3de265cd30bfbcbd4 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -4008,6 +4008,10 @@ Condition LCodeGen::EmitTypeofIs(Label* true_label,
|
| __ CompareRoot(input, Heap::kFalseValueRootIndex);
|
| final_branch_condition = equal;
|
|
|
| + } else if (FLAG_harmony_typeof && type_name->Equals(heap()->null_symbol())) {
|
| + __ CompareRoot(input, Heap::kNullValueRootIndex);
|
| + final_branch_condition = equal;
|
| +
|
| } else if (type_name->Equals(heap()->undefined_symbol())) {
|
| __ CompareRoot(input, Heap::kUndefinedValueRootIndex);
|
| __ j(equal, true_label);
|
| @@ -4025,8 +4029,10 @@ Condition LCodeGen::EmitTypeofIs(Label* true_label,
|
|
|
| } else if (type_name->Equals(heap()->object_symbol())) {
|
| __ JumpIfSmi(input, false_label);
|
| - __ CompareRoot(input, Heap::kNullValueRootIndex);
|
| - __ j(equal, true_label);
|
| + if (!FLAG_harmony_typeof) {
|
| + __ CompareRoot(input, Heap::kNullValueRootIndex);
|
| + __ j(equal, true_label);
|
| + }
|
| __ CmpObjectType(input, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, input);
|
| __ j(below, false_label);
|
| __ CmpInstanceType(input, LAST_NONCALLABLE_SPEC_OBJECT_TYPE);
|
|
|