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

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

Issue 292993003: Revert "Refactor transitioning stores." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « src/arm/lithium-arm.cc ('k') | src/arm64/lithium-arm64.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 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 #include "v8.h" 5 #include "v8.h"
6 6
7 #include "arm/lithium-codegen-arm.h" 7 #include "arm/lithium-codegen-arm.h"
8 #include "arm/lithium-gap-resolver-arm.h" 8 #include "arm/lithium-gap-resolver-arm.h"
9 #include "code-stubs.h" 9 #include "code-stubs.h"
10 #include "stub-cache.h" 10 #include "stub-cache.h"
(...skipping 4079 matching lines...) Expand 10 before | Expand all | Expand 10 after
4090 Register value = ToRegister(instr->value()); 4090 Register value = ToRegister(instr->value());
4091 if (!instr->hydrogen()->value()->type().IsHeapObject()) { 4091 if (!instr->hydrogen()->value()->type().IsHeapObject()) {
4092 __ SmiTst(value); 4092 __ SmiTst(value);
4093 DeoptimizeIf(eq, instr->environment()); 4093 DeoptimizeIf(eq, instr->environment());
4094 4094
4095 // We know now that value is not a smi, so we can omit the check below. 4095 // We know now that value is not a smi, so we can omit the check below.
4096 check_needed = OMIT_SMI_CHECK; 4096 check_needed = OMIT_SMI_CHECK;
4097 } 4097 }
4098 } else if (representation.IsDouble()) { 4098 } else if (representation.IsDouble()) {
4099 ASSERT(access.IsInobject()); 4099 ASSERT(access.IsInobject());
4100 ASSERT(!instr->hydrogen()->has_transition());
4100 ASSERT(!instr->hydrogen()->NeedsWriteBarrier()); 4101 ASSERT(!instr->hydrogen()->NeedsWriteBarrier());
4101 DwVfpRegister value = ToDoubleRegister(instr->value()); 4102 DwVfpRegister value = ToDoubleRegister(instr->value());
4102 __ vstr(value, FieldMemOperand(object, offset)); 4103 __ vstr(value, FieldMemOperand(object, offset));
4103 return; 4104 return;
4104 } 4105 }
4105 4106
4107 if (instr->hydrogen()->has_transition()) {
4108 Handle<Map> transition = instr->hydrogen()->transition_map();
4109 AddDeprecationDependency(transition);
4110 __ mov(scratch, Operand(transition));
4111 __ str(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
4112 if (instr->hydrogen()->NeedsWriteBarrierForMap()) {
4113 Register temp = ToRegister(instr->temp());
4114 // Update the write barrier for the map field.
4115 __ RecordWriteField(object,
4116 HeapObject::kMapOffset,
4117 scratch,
4118 temp,
4119 GetLinkRegisterState(),
4120 kSaveFPRegs,
4121 OMIT_REMEMBERED_SET,
4122 OMIT_SMI_CHECK);
4123 }
4124 }
4125
4106 // Do the store. 4126 // Do the store.
4107 Register value = ToRegister(instr->value()); 4127 Register value = ToRegister(instr->value());
4108 if (access.IsInobject()) { 4128 if (access.IsInobject()) {
4109 MemOperand operand = FieldMemOperand(object, offset); 4129 MemOperand operand = FieldMemOperand(object, offset);
4110 __ Store(value, operand, representation); 4130 __ Store(value, operand, representation);
4111 if (instr->hydrogen()->NeedsWriteBarrier()) { 4131 if (instr->hydrogen()->NeedsWriteBarrier()) {
4112 // Update the write barrier for the object for in-object properties. 4132 // Update the write barrier for the object for in-object properties.
4113 __ RecordWriteField(object, 4133 __ RecordWriteField(object,
4114 offset, 4134 offset,
4115 value, 4135 value,
(...skipping 1720 matching lines...) Expand 10 before | Expand all | Expand 10 after
5836 __ ldr(result, FieldMemOperand(scratch, 5856 __ ldr(result, FieldMemOperand(scratch,
5837 FixedArray::kHeaderSize - kPointerSize)); 5857 FixedArray::kHeaderSize - kPointerSize));
5838 __ bind(deferred->exit()); 5858 __ bind(deferred->exit());
5839 __ bind(&done); 5859 __ bind(&done);
5840 } 5860 }
5841 5861
5842 5862
5843 #undef __ 5863 #undef __
5844 5864
5845 } } // namespace v8::internal 5865 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/lithium-arm.cc ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698