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

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

Issue 1848553002: [full-codegen] Reload context register after intrinsic call. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix missing include Created 4 years, 8 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
« no previous file with comments | « src/full-codegen/arm/full-codegen-arm.cc ('k') | src/full-codegen/full-codegen.h » ('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 #if V8_TARGET_ARCH_ARM64 5 #if V8_TARGET_ARCH_ARM64
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 3731 matching lines...) Expand 10 before | Expand all | Expand 10 after
3742 __ Ldr(x0, FieldMemOperand(x0, HeapObject::kMapOffset)); 3742 __ Ldr(x0, FieldMemOperand(x0, HeapObject::kMapOffset));
3743 __ Ldrb(x1, FieldMemOperand(x0, Map::kBitFieldOffset)); 3743 __ Ldrb(x1, FieldMemOperand(x0, Map::kBitFieldOffset));
3744 __ TestAndSplit(x1, 1 << Map::kIsUndetectable, if_false, if_true, 3744 __ TestAndSplit(x1, 1 << Map::kIsUndetectable, if_false, if_true,
3745 fall_through); 3745 fall_through);
3746 } 3746 }
3747 3747
3748 context()->Plug(if_true, if_false); 3748 context()->Plug(if_true, if_false);
3749 } 3749 }
3750 3750
3751 3751
3752 void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) {
3753 __ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
3754 context()->Plug(x0);
3755 }
3756
3757
3758 void FullCodeGenerator::VisitYield(Yield* expr) { 3752 void FullCodeGenerator::VisitYield(Yield* expr) {
3759 Comment cmnt(masm_, "[ Yield"); 3753 Comment cmnt(masm_, "[ Yield");
3760 SetExpressionPosition(expr); 3754 SetExpressionPosition(expr);
3761 3755
3762 // Evaluate yielded value first; the initial iterator definition depends on 3756 // Evaluate yielded value first; the initial iterator definition depends on
3763 // this. It stays on the stack while we update the iterator. 3757 // this. It stays on the stack while we update the iterator.
3764 VisitForStackValue(expr->expression()); 3758 VisitForStackValue(expr->expression());
3765 3759
3766 // TODO(jbramley): Tidy this up once the merge is done, using named registers 3760 // TODO(jbramley): Tidy this up once the merge is done, using named registers
3767 // and suchlike. The implementation changes a little by bleeding_edge so I 3761 // and suchlike. The implementation changes a little by bleeding_edge so I
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
3988 // performance benefit, I think the existence of this function is debatable. 3982 // performance benefit, I think the existence of this function is debatable.
3989 Register FullCodeGenerator::result_register() { 3983 Register FullCodeGenerator::result_register() {
3990 return x0; 3984 return x0;
3991 } 3985 }
3992 3986
3993 3987
3994 Register FullCodeGenerator::context_register() { 3988 Register FullCodeGenerator::context_register() {
3995 return cp; 3989 return cp;
3996 } 3990 }
3997 3991
3992 void FullCodeGenerator::LoadFromFrameField(int frame_offset, Register value) {
3993 DCHECK(POINTER_SIZE_ALIGN(frame_offset) == frame_offset);
3994 __ Ldr(value, MemOperand(fp, frame_offset));
3995 }
3998 3996
3999 void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) { 3997 void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) {
4000 DCHECK(POINTER_SIZE_ALIGN(frame_offset) == frame_offset); 3998 DCHECK(POINTER_SIZE_ALIGN(frame_offset) == frame_offset);
4001 __ Str(value, MemOperand(fp, frame_offset)); 3999 __ Str(value, MemOperand(fp, frame_offset));
4002 } 4000 }
4003 4001
4004 4002
4005 void FullCodeGenerator::LoadContextField(Register dst, int context_index) { 4003 void FullCodeGenerator::LoadContextField(Register dst, int context_index) {
4006 __ Ldr(dst, ContextMemOperand(cp, context_index)); 4004 __ Ldr(dst, ContextMemOperand(cp, context_index));
4007 } 4005 }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
4172 } 4170 }
4173 4171
4174 return INTERRUPT; 4172 return INTERRUPT;
4175 } 4173 }
4176 4174
4177 4175
4178 } // namespace internal 4176 } // namespace internal
4179 } // namespace v8 4177 } // namespace v8
4180 4178
4181 #endif // V8_TARGET_ARCH_ARM64 4179 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/full-codegen/arm/full-codegen-arm.cc ('k') | src/full-codegen/full-codegen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698