OLD | NEW |
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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
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 3351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3362 EmitHasProperty(); | 3362 EmitHasProperty(); |
3363 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); | 3363 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); |
3364 __ CompareRoot(x0, Heap::kTrueValueRootIndex); | 3364 __ CompareRoot(x0, Heap::kTrueValueRootIndex); |
3365 Split(eq, if_true, if_false, fall_through); | 3365 Split(eq, if_true, if_false, fall_through); |
3366 break; | 3366 break; |
3367 | 3367 |
3368 case Token::INSTANCEOF: { | 3368 case Token::INSTANCEOF: { |
3369 VisitForAccumulatorValue(expr->right()); | 3369 VisitForAccumulatorValue(expr->right()); |
3370 SetExpressionPosition(expr); | 3370 SetExpressionPosition(expr); |
3371 PopOperand(x1); | 3371 PopOperand(x1); |
3372 __ EmitLoadTypeFeedbackVector(x3); | 3372 InstanceOfStub stub(isolate()); |
3373 __ Mov(x4, SlotToIndex(expr->CompareOperationFeedbackSlot())); | |
3374 InstanceOfWithFeedbackStub stub(isolate()); | |
3375 __ CallStub(&stub); | 3373 __ CallStub(&stub); |
3376 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); | 3374 PrepareForBailoutBeforeSplit(expr, false, NULL, NULL); |
3377 __ CompareRoot(x0, Heap::kTrueValueRootIndex); | 3375 __ CompareRoot(x0, Heap::kTrueValueRootIndex); |
3378 Split(eq, if_true, if_false, fall_through); | 3376 Split(eq, if_true, if_false, fall_through); |
3379 break; | 3377 break; |
3380 } | 3378 } |
3381 | 3379 |
3382 default: { | 3380 default: { |
3383 VisitForAccumulatorValue(expr->right()); | 3381 VisitForAccumulatorValue(expr->right()); |
3384 SetExpressionPosition(expr); | 3382 SetExpressionPosition(expr); |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3766 } | 3764 } |
3767 | 3765 |
3768 return INTERRUPT; | 3766 return INTERRUPT; |
3769 } | 3767 } |
3770 | 3768 |
3771 | 3769 |
3772 } // namespace internal | 3770 } // namespace internal |
3773 } // namespace v8 | 3771 } // namespace v8 |
3774 | 3772 |
3775 #endif // V8_TARGET_ARCH_ARM64 | 3773 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |