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

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

Issue 1370303004: Distinction between FeedbackVectorICSlot and FeedbackVectorSlot eliminated. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed release builds Created 5 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
« 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/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/compiler.h" 10 #include "src/compiler.h"
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 } else { 1235 } else {
1236 __ Push(info); 1236 __ Push(info);
1237 __ CallRuntime( 1237 __ CallRuntime(
1238 pretenure ? Runtime::kNewClosure_Tenured : Runtime::kNewClosure, 1); 1238 pretenure ? Runtime::kNewClosure_Tenured : Runtime::kNewClosure, 1);
1239 } 1239 }
1240 context()->Plug(x0); 1240 context()->Plug(x0);
1241 } 1241 }
1242 1242
1243 1243
1244 void FullCodeGenerator::EmitSetHomeObject(Expression* initializer, int offset, 1244 void FullCodeGenerator::EmitSetHomeObject(Expression* initializer, int offset,
1245 FeedbackVectorICSlot slot) { 1245 FeedbackVectorSlot slot) {
1246 DCHECK(NeedsHomeObject(initializer)); 1246 DCHECK(NeedsHomeObject(initializer));
1247 __ Peek(StoreDescriptor::ReceiverRegister(), 0); 1247 __ Peek(StoreDescriptor::ReceiverRegister(), 0);
1248 __ Mov(StoreDescriptor::NameRegister(), 1248 __ Mov(StoreDescriptor::NameRegister(),
1249 Operand(isolate()->factory()->home_object_symbol())); 1249 Operand(isolate()->factory()->home_object_symbol()));
1250 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize); 1250 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize);
1251 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot); 1251 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
1252 CallStoreIC(); 1252 CallStoreIC();
1253 } 1253 }
1254 1254
1255 1255
1256 void FullCodeGenerator::EmitSetHomeObjectAccumulator( 1256 void FullCodeGenerator::EmitSetHomeObjectAccumulator(Expression* initializer,
1257 Expression* initializer, int offset, FeedbackVectorICSlot slot) { 1257 int offset,
1258 FeedbackVectorSlot slot) {
1258 DCHECK(NeedsHomeObject(initializer)); 1259 DCHECK(NeedsHomeObject(initializer));
1259 __ Move(StoreDescriptor::ReceiverRegister(), x0); 1260 __ Move(StoreDescriptor::ReceiverRegister(), x0);
1260 __ Mov(StoreDescriptor::NameRegister(), 1261 __ Mov(StoreDescriptor::NameRegister(),
1261 Operand(isolate()->factory()->home_object_symbol())); 1262 Operand(isolate()->factory()->home_object_symbol()));
1262 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize); 1263 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize);
1263 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot); 1264 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
1264 CallStoreIC(); 1265 CallStoreIC();
1265 } 1266 }
1266 1267
1267 1268
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after
2201 } 2202 }
2202 } 2203 }
2203 2204
2204 // Set both the prototype and constructor to have fast properties, and also 2205 // Set both the prototype and constructor to have fast properties, and also
2205 // freeze them in strong mode. 2206 // freeze them in strong mode.
2206 __ CallRuntime(Runtime::kFinalizeClassDefinition, 2); 2207 __ CallRuntime(Runtime::kFinalizeClassDefinition, 2);
2207 } 2208 }
2208 2209
2209 2210
2210 void FullCodeGenerator::EmitAssignment(Expression* expr, 2211 void FullCodeGenerator::EmitAssignment(Expression* expr,
2211 FeedbackVectorICSlot slot) { 2212 FeedbackVectorSlot slot) {
2212 DCHECK(expr->IsValidReferenceExpressionOrThis()); 2213 DCHECK(expr->IsValidReferenceExpressionOrThis());
2213 2214
2214 Property* prop = expr->AsProperty(); 2215 Property* prop = expr->AsProperty();
2215 LhsKind assign_type = Property::GetAssignType(prop); 2216 LhsKind assign_type = Property::GetAssignType(prop);
2216 2217
2217 switch (assign_type) { 2218 switch (assign_type) {
2218 case VARIABLE: { 2219 case VARIABLE: {
2219 Variable* var = expr->AsVariableProxy()->var(); 2220 Variable* var = expr->AsVariableProxy()->var();
2220 EffectContext context(this); 2221 EffectContext context(this);
2221 EmitVariableAssignment(var, Token::ASSIGN, slot); 2222 EmitVariableAssignment(var, Token::ASSIGN, slot);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2296 // RecordWrite may destroy all its register arguments. 2297 // RecordWrite may destroy all its register arguments.
2297 __ Mov(x10, result_register()); 2298 __ Mov(x10, result_register());
2298 int offset = Context::SlotOffset(var->index()); 2299 int offset = Context::SlotOffset(var->index());
2299 __ RecordWriteContextSlot( 2300 __ RecordWriteContextSlot(
2300 x1, offset, x10, x11, kLRHasBeenSaved, kDontSaveFPRegs); 2301 x1, offset, x10, x11, kLRHasBeenSaved, kDontSaveFPRegs);
2301 } 2302 }
2302 } 2303 }
2303 2304
2304 2305
2305 void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op, 2306 void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op,
2306 FeedbackVectorICSlot slot) { 2307 FeedbackVectorSlot slot) {
2307 ASM_LOCATION("FullCodeGenerator::EmitVariableAssignment"); 2308 ASM_LOCATION("FullCodeGenerator::EmitVariableAssignment");
2308 if (var->IsUnallocated()) { 2309 if (var->IsUnallocated()) {
2309 // Global var, const, or let. 2310 // Global var, const, or let.
2310 __ Mov(StoreDescriptor::NameRegister(), Operand(var->name())); 2311 __ Mov(StoreDescriptor::NameRegister(), Operand(var->name()));
2311 __ Ldr(StoreDescriptor::ReceiverRegister(), GlobalObjectMemOperand()); 2312 __ Ldr(StoreDescriptor::ReceiverRegister(), GlobalObjectMemOperand());
2312 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot); 2313 if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
2313 CallStoreIC(); 2314 CallStoreIC();
2314 2315
2315 } else if (var->IsGlobalSlot()) { 2316 } else if (var->IsGlobalSlot()) {
2316 // Global var, const, or let. 2317 // Global var, const, or let.
(...skipping 2832 matching lines...) Expand 10 before | Expand all | Expand 10 after
5149 void FullCodeGenerator::ClearPendingMessage() { 5150 void FullCodeGenerator::ClearPendingMessage() {
5150 DCHECK(!result_register().is(x10)); 5151 DCHECK(!result_register().is(x10));
5151 ExternalReference pending_message_obj = 5152 ExternalReference pending_message_obj =
5152 ExternalReference::address_of_pending_message_obj(isolate()); 5153 ExternalReference::address_of_pending_message_obj(isolate());
5153 __ LoadRoot(x10, Heap::kTheHoleValueRootIndex); 5154 __ LoadRoot(x10, Heap::kTheHoleValueRootIndex);
5154 __ Mov(x13, pending_message_obj); 5155 __ Mov(x13, pending_message_obj);
5155 __ Str(x10, MemOperand(x13)); 5156 __ Str(x10, MemOperand(x13));
5156 } 5157 }
5157 5158
5158 5159
5159 void FullCodeGenerator::EmitLoadStoreICSlot(FeedbackVectorICSlot slot) { 5160 void FullCodeGenerator::EmitLoadStoreICSlot(FeedbackVectorSlot slot) {
5160 DCHECK(FLAG_vector_stores && !slot.IsInvalid()); 5161 DCHECK(FLAG_vector_stores && !slot.IsInvalid());
5161 __ Mov(VectorStoreICTrampolineDescriptor::SlotRegister(), SmiFromSlot(slot)); 5162 __ Mov(VectorStoreICTrampolineDescriptor::SlotRegister(), SmiFromSlot(slot));
5162 } 5163 }
5163 5164
5164 5165
5165 #undef __ 5166 #undef __
5166 5167
5167 5168
5168 void BackEdgeTable::PatchAt(Code* unoptimized_code, 5169 void BackEdgeTable::PatchAt(Code* unoptimized_code,
5169 Address pc, 5170 Address pc,
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
5257 } 5258 }
5258 5259
5259 return INTERRUPT; 5260 return INTERRUPT;
5260 } 5261 }
5261 5262
5262 5263
5263 } // namespace internal 5264 } // namespace internal
5264 } // namespace v8 5265 } // namespace v8
5265 5266
5266 #endif // V8_TARGET_ARCH_ARM64 5267 #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