MIPS: port Implement Harmony semantics for typeof null (behind a flag).
Port r8876 (2aeeae7) Original commit message: Harmony is intended to make typeof null === "null". This may break existing programs. Implementing it will allow us to run some tests on the actual web. BUG= TEST= Review URL: http://codereview.chromium.org/7650009 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8939 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
af112fda75
commit
b1ae597808
@ -4052,6 +4052,10 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
|
||||
__ Branch(if_true, eq, v0, Operand(at));
|
||||
__ LoadRoot(at, Heap::kFalseValueRootIndex);
|
||||
Split(eq, v0, Operand(at), if_true, if_false, fall_through);
|
||||
} else if (FLAG_harmony_typeof &&
|
||||
check->Equals(isolate()->heap()->null_symbol())) {
|
||||
__ LoadRoot(at, Heap::kNullValueRootIndex);
|
||||
Split(eq, v0, Operand(at), if_true, if_false, fall_through);
|
||||
} else if (check->Equals(isolate()->heap()->undefined_symbol())) {
|
||||
__ LoadRoot(at, Heap::kUndefinedValueRootIndex);
|
||||
__ Branch(if_true, eq, v0, Operand(at));
|
||||
@ -4069,8 +4073,10 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
|
||||
|
||||
} else if (check->Equals(isolate()->heap()->object_symbol())) {
|
||||
__ JumpIfSmi(v0, if_false);
|
||||
__ LoadRoot(at, Heap::kNullValueRootIndex);
|
||||
__ Branch(if_true, eq, v0, Operand(at));
|
||||
if (!FLAG_harmony_typeof) {
|
||||
__ LoadRoot(at, Heap::kNullValueRootIndex);
|
||||
__ Branch(if_true, eq, v0, Operand(at));
|
||||
}
|
||||
// Check for JS objects => true.
|
||||
__ GetObjectType(v0, v0, a1);
|
||||
__ Branch(if_false, lt, a1, Operand(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE));
|
||||
|
Loading…
Reference in New Issue
Block a user