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

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

Issue 2365223003: Revert of [compiler] Properly guard the speculative optimizations for instanceof. (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #if V8_TARGET_ARCH_X64 5 #if V8_TARGET_ARCH_X64
6 6
7 #include "src/full-codegen/full-codegen.h" 7 #include "src/full-codegen/full-codegen.h"
8 #include "src/ast/compile-time-value.h" 8 #include "src/ast/compile-time-value.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 3307 matching lines...) Expand 10 before | Expand all | Expand 10 after
3318 EmitHasProperty(); 3318 EmitHasProperty();
3319 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); 3319 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
3320 __ CompareRoot(rax, Heap::kTrueValueRootIndex); 3320 __ CompareRoot(rax, Heap::kTrueValueRootIndex);
3321 Split(equal, if_true, if_false, fall_through); 3321 Split(equal, if_true, if_false, fall_through);
3322 break; 3322 break;
3323 3323
3324 case Token::INSTANCEOF: { 3324 case Token::INSTANCEOF: {
3325 VisitForAccumulatorValue(expr->right()); 3325 VisitForAccumulatorValue(expr->right());
3326 SetExpressionPosition(expr); 3326 SetExpressionPosition(expr);
3327 PopOperand(rdx); 3327 PopOperand(rdx);
3328 __ EmitLoadTypeFeedbackVector(rbx); 3328 InstanceOfStub stub(isolate());
3329 __ Set(rdi, SlotToIndex(expr->CompareOperationFeedbackSlot()));
3330 InstanceOfWithFeedbackStub stub(isolate());
3331 __ CallStub(&stub); 3329 __ CallStub(&stub);
3332 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); 3330 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL);
3333 __ CompareRoot(rax, Heap::kTrueValueRootIndex); 3331 __ CompareRoot(rax, Heap::kTrueValueRootIndex);
3334 Split(equal, if_true, if_false, fall_through); 3332 Split(equal, if_true, if_false, fall_through);
3335 break; 3333 break;
3336 } 3334 }
3337 3335
3338 default: { 3336 default: {
3339 VisitForAccumulatorValue(expr->right()); 3337 VisitForAccumulatorValue(expr->right());
3340 SetExpressionPosition(expr); 3338 SetExpressionPosition(expr);
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
3575 DCHECK_EQ( 3573 DCHECK_EQ(
3576 isolate->builtins()->OnStackReplacement()->entry(), 3574 isolate->builtins()->OnStackReplacement()->entry(),
3577 Assembler::target_address_at(call_target_address, unoptimized_code)); 3575 Assembler::target_address_at(call_target_address, unoptimized_code));
3578 return ON_STACK_REPLACEMENT; 3576 return ON_STACK_REPLACEMENT;
3579 } 3577 }
3580 3578
3581 } // namespace internal 3579 } // namespace internal
3582 } // namespace v8 3580 } // namespace v8
3583 3581
3584 #endif // V8_TARGET_ARCH_X64 3582 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/full-codegen/mips64/full-codegen-mips64.cc ('k') | src/interpreter/bytecode-array-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698