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

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

Issue 1016803002: Remove PropertyCell space (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 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/arm64/lithium-arm64.cc ('k') | src/code-stubs-hydrogen.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 #include "src/arm64/lithium-codegen-arm64.h" 7 #include "src/arm64/lithium-codegen-arm64.h"
8 #include "src/arm64/lithium-gap-resolver-arm64.h" 8 #include "src/arm64/lithium-gap-resolver-arm64.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 3377 matching lines...) Expand 10 before | Expand all | Expand 10 after
3388 __ B(ne, &done); 3388 __ B(ne, &done);
3389 3389
3390 // Get the prototype from the initial map. 3390 // Get the prototype from the initial map.
3391 __ Ldr(result, FieldMemOperand(result, Map::kPrototypeOffset)); 3391 __ Ldr(result, FieldMemOperand(result, Map::kPrototypeOffset));
3392 3392
3393 // All done. 3393 // All done.
3394 __ Bind(&done); 3394 __ Bind(&done);
3395 } 3395 }
3396 3396
3397 3397
3398 void LCodeGen::DoLoadGlobalCell(LLoadGlobalCell* instr) {
3399 Register result = ToRegister(instr->result());
3400 __ Mov(result, Operand(Handle<Object>(instr->hydrogen()->cell().handle())));
3401 __ Ldr(result, FieldMemOperand(result, Cell::kValueOffset));
3402 if (instr->hydrogen()->RequiresHoleCheck()) {
3403 DeoptimizeIfRoot(result, Heap::kTheHoleValueRootIndex, instr,
3404 Deoptimizer::kHole);
3405 }
3406 }
3407
3408
3409 template <class T> 3398 template <class T>
3410 void LCodeGen::EmitVectorLoadICRegisters(T* instr) { 3399 void LCodeGen::EmitVectorLoadICRegisters(T* instr) {
3411 DCHECK(FLAG_vector_ics); 3400 DCHECK(FLAG_vector_ics);
3412 Register vector_register = ToRegister(instr->temp_vector()); 3401 Register vector_register = ToRegister(instr->temp_vector());
3413 Register slot_register = VectorLoadICDescriptor::SlotRegister(); 3402 Register slot_register = VectorLoadICDescriptor::SlotRegister();
3414 DCHECK(vector_register.is(VectorLoadICDescriptor::VectorRegister())); 3403 DCHECK(vector_register.is(VectorLoadICDescriptor::VectorRegister()));
3415 DCHECK(slot_register.is(x0)); 3404 DCHECK(slot_register.is(x0));
3416 3405
3417 AllowDeferredHandleDereference vector_structure_check; 3406 AllowDeferredHandleDereference vector_structure_check;
3418 Handle<TypeFeedbackVector> vector = instr->hydrogen()->feedback_vector(); 3407 Handle<TypeFeedbackVector> vector = instr->hydrogen()->feedback_vector();
(...skipping 1756 matching lines...) Expand 10 before | Expand all | Expand 10 after
5175 scratch, 5164 scratch,
5176 GetLinkRegisterState(), 5165 GetLinkRegisterState(),
5177 kSaveFPRegs, 5166 kSaveFPRegs,
5178 EMIT_REMEMBERED_SET, 5167 EMIT_REMEMBERED_SET,
5179 check_needed); 5168 check_needed);
5180 } 5169 }
5181 __ Bind(&skip_assignment); 5170 __ Bind(&skip_assignment);
5182 } 5171 }
5183 5172
5184 5173
5185 void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) {
5186 Register value = ToRegister(instr->value());
5187 Register cell = ToRegister(instr->temp1());
5188
5189 // Load the cell.
5190 __ Mov(cell, Operand(instr->hydrogen()->cell().handle()));
5191
5192 // If the cell we are storing to contains the hole it could have
5193 // been deleted from the property dictionary. In that case, we need
5194 // to update the property details in the property dictionary to mark
5195 // it as no longer deleted. We deoptimize in that case.
5196 if (instr->hydrogen()->RequiresHoleCheck()) {
5197 Register payload = ToRegister(instr->temp2());
5198 __ Ldr(payload, FieldMemOperand(cell, Cell::kValueOffset));
5199 DeoptimizeIfRoot(payload, Heap::kTheHoleValueRootIndex, instr,
5200 Deoptimizer::kHole);
5201 }
5202
5203 // Store the value.
5204 __ Str(value, FieldMemOperand(cell, Cell::kValueOffset));
5205 // Cells are always rescanned, so no write barrier here.
5206 }
5207
5208
5209 void LCodeGen::DoStoreKeyedExternal(LStoreKeyedExternal* instr) { 5174 void LCodeGen::DoStoreKeyedExternal(LStoreKeyedExternal* instr) {
5210 Register ext_ptr = ToRegister(instr->elements()); 5175 Register ext_ptr = ToRegister(instr->elements());
5211 Register key = no_reg; 5176 Register key = no_reg;
5212 Register scratch; 5177 Register scratch;
5213 ElementsKind elements_kind = instr->elements_kind(); 5178 ElementsKind elements_kind = instr->elements_kind();
5214 5179
5215 bool key_is_smi = instr->hydrogen()->key()->representation().IsSmi(); 5180 bool key_is_smi = instr->hydrogen()->key()->representation().IsSmi();
5216 bool key_is_constant = instr->key()->IsConstantOperand(); 5181 bool key_is_constant = instr->key()->IsConstantOperand();
5217 int constant_key = 0; 5182 int constant_key = 0;
5218 if (key_is_constant) { 5183 if (key_is_constant) {
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
6097 Handle<ScopeInfo> scope_info = instr->scope_info(); 6062 Handle<ScopeInfo> scope_info = instr->scope_info();
6098 __ Push(scope_info); 6063 __ Push(scope_info);
6099 __ Push(ToRegister(instr->function())); 6064 __ Push(ToRegister(instr->function()));
6100 CallRuntime(Runtime::kPushBlockContext, 2, instr); 6065 CallRuntime(Runtime::kPushBlockContext, 2, instr);
6101 RecordSafepoint(Safepoint::kNoLazyDeopt); 6066 RecordSafepoint(Safepoint::kNoLazyDeopt);
6102 } 6067 }
6103 6068
6104 6069
6105 6070
6106 } } // namespace v8::internal 6071 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/code-stubs-hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698