Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: src/x64/lithium-codegen-x64.cc

Issue 408463003: Remove harmony-typeof (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Update flag description for harmony Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x87/full-codegen-x87.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_X64 7 #if V8_TARGET_ARCH_X64
8 8
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/hydrogen-osr.h" 10 #include "src/hydrogen-osr.h"
(...skipping 5483 matching lines...) Expand 10 before | Expand all | Expand 10 after
5494 __ JumpIfSmi(input, false_label, false_distance); 5494 __ JumpIfSmi(input, false_label, false_distance);
5495 __ CmpObjectType(input, SYMBOL_TYPE, input); 5495 __ CmpObjectType(input, SYMBOL_TYPE, input);
5496 final_branch_condition = equal; 5496 final_branch_condition = equal;
5497 5497
5498 } else if (String::Equals(type_name, factory->boolean_string())) { 5498 } else if (String::Equals(type_name, factory->boolean_string())) {
5499 __ CompareRoot(input, Heap::kTrueValueRootIndex); 5499 __ CompareRoot(input, Heap::kTrueValueRootIndex);
5500 __ j(equal, true_label, true_distance); 5500 __ j(equal, true_label, true_distance);
5501 __ CompareRoot(input, Heap::kFalseValueRootIndex); 5501 __ CompareRoot(input, Heap::kFalseValueRootIndex);
5502 final_branch_condition = equal; 5502 final_branch_condition = equal;
5503 5503
5504 } else if (FLAG_harmony_typeof &&
5505 String::Equals(type_name, factory->null_string())) {
5506 __ CompareRoot(input, Heap::kNullValueRootIndex);
5507 final_branch_condition = equal;
5508
5509 } else if (String::Equals(type_name, factory->undefined_string())) { 5504 } else if (String::Equals(type_name, factory->undefined_string())) {
5510 __ CompareRoot(input, Heap::kUndefinedValueRootIndex); 5505 __ CompareRoot(input, Heap::kUndefinedValueRootIndex);
5511 __ j(equal, true_label, true_distance); 5506 __ j(equal, true_label, true_distance);
5512 __ JumpIfSmi(input, false_label, false_distance); 5507 __ JumpIfSmi(input, false_label, false_distance);
5513 // Check for undetectable objects => true. 5508 // Check for undetectable objects => true.
5514 __ movp(input, FieldOperand(input, HeapObject::kMapOffset)); 5509 __ movp(input, FieldOperand(input, HeapObject::kMapOffset));
5515 __ testb(FieldOperand(input, Map::kBitFieldOffset), 5510 __ testb(FieldOperand(input, Map::kBitFieldOffset),
5516 Immediate(1 << Map::kIsUndetectable)); 5511 Immediate(1 << Map::kIsUndetectable));
5517 final_branch_condition = not_zero; 5512 final_branch_condition = not_zero;
5518 5513
5519 } else if (String::Equals(type_name, factory->function_string())) { 5514 } else if (String::Equals(type_name, factory->function_string())) {
5520 STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2); 5515 STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2);
5521 __ JumpIfSmi(input, false_label, false_distance); 5516 __ JumpIfSmi(input, false_label, false_distance);
5522 __ CmpObjectType(input, JS_FUNCTION_TYPE, input); 5517 __ CmpObjectType(input, JS_FUNCTION_TYPE, input);
5523 __ j(equal, true_label, true_distance); 5518 __ j(equal, true_label, true_distance);
5524 __ CmpInstanceType(input, JS_FUNCTION_PROXY_TYPE); 5519 __ CmpInstanceType(input, JS_FUNCTION_PROXY_TYPE);
5525 final_branch_condition = equal; 5520 final_branch_condition = equal;
5526 5521
5527 } else if (String::Equals(type_name, factory->object_string())) { 5522 } else if (String::Equals(type_name, factory->object_string())) {
5528 __ JumpIfSmi(input, false_label, false_distance); 5523 __ JumpIfSmi(input, false_label, false_distance);
5529 if (!FLAG_harmony_typeof) { 5524 __ CompareRoot(input, Heap::kNullValueRootIndex);
5530 __ CompareRoot(input, Heap::kNullValueRootIndex); 5525 __ j(equal, true_label, true_distance);
5531 __ j(equal, true_label, true_distance);
5532 }
5533 __ CmpObjectType(input, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, input); 5526 __ CmpObjectType(input, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, input);
5534 __ j(below, false_label, false_distance); 5527 __ j(below, false_label, false_distance);
5535 __ CmpInstanceType(input, LAST_NONCALLABLE_SPEC_OBJECT_TYPE); 5528 __ CmpInstanceType(input, LAST_NONCALLABLE_SPEC_OBJECT_TYPE);
5536 __ j(above, false_label, false_distance); 5529 __ j(above, false_label, false_distance);
5537 // Check for undetectable objects => false. 5530 // Check for undetectable objects => false.
5538 __ testb(FieldOperand(input, Map::kBitFieldOffset), 5531 __ testb(FieldOperand(input, Map::kBitFieldOffset),
5539 Immediate(1 << Map::kIsUndetectable)); 5532 Immediate(1 << Map::kIsUndetectable));
5540 final_branch_condition = zero; 5533 final_branch_condition = zero;
5541 5534
5542 } else { 5535 } else {
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
5842 CallRuntime(Runtime::kPushBlockContext, 2, instr); 5835 CallRuntime(Runtime::kPushBlockContext, 2, instr);
5843 RecordSafepoint(Safepoint::kNoLazyDeopt); 5836 RecordSafepoint(Safepoint::kNoLazyDeopt);
5844 } 5837 }
5845 5838
5846 5839
5847 #undef __ 5840 #undef __
5848 5841
5849 } } // namespace v8::internal 5842 } } // namespace v8::internal
5850 5843
5851 #endif // V8_TARGET_ARCH_X64 5844 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x87/full-codegen-x87.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698