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

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 1424153003: VectorICs: Remove --vector-stores flag. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Response to Hannes comment. Created 5 years, 1 month 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 | « no previous file | src/arm64/code-stubs-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 #if V8_TARGET_ARCH_ARM 5 #if V8_TARGET_ARCH_ARM
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/bootstrapper.h" 8 #include "src/bootstrapper.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 4049 matching lines...) Expand 10 before | Expand all | Expand 10 after
4060 4060
4061 __ bind(&need_incremental_pop_scratch); 4061 __ bind(&need_incremental_pop_scratch);
4062 __ Pop(regs_.object(), regs_.address()); 4062 __ Pop(regs_.object(), regs_.address());
4063 4063
4064 __ bind(&need_incremental); 4064 __ bind(&need_incremental);
4065 4065
4066 // Fall through when we need to inform the incremental marker. 4066 // Fall through when we need to inform the incremental marker.
4067 } 4067 }
4068 4068
4069 4069
4070 void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) {
4071 // ----------- S t a t e -------------
4072 // -- r0 : element value to store
4073 // -- r3 : element index as smi
4074 // -- sp[0] : array literal index in function as smi
4075 // -- sp[4] : array literal
4076 // clobbers r1, r2, r4
4077 // -----------------------------------
4078
4079 Label element_done;
4080 Label double_elements;
4081 Label smi_element;
4082 Label slow_elements;
4083 Label fast_elements;
4084
4085 // Get array literal index, array literal and its map.
4086 __ ldr(r4, MemOperand(sp, 0 * kPointerSize));
4087 __ ldr(r1, MemOperand(sp, 1 * kPointerSize));
4088 __ ldr(r2, FieldMemOperand(r1, JSObject::kMapOffset));
4089
4090 __ CheckFastElements(r2, r5, &double_elements);
4091 // FAST_*_SMI_ELEMENTS or FAST_*_ELEMENTS
4092 __ JumpIfSmi(r0, &smi_element);
4093 __ CheckFastSmiElements(r2, r5, &fast_elements);
4094
4095 // Store into the array literal requires a elements transition. Call into
4096 // the runtime.
4097 __ bind(&slow_elements);
4098 // call.
4099 __ Push(r1, r3, r0);
4100 __ ldr(r5, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
4101 __ ldr(r5, FieldMemOperand(r5, JSFunction::kLiteralsOffset));
4102 __ Push(r5, r4);
4103 __ TailCallRuntime(Runtime::kStoreArrayLiteralElement, 5, 1);
4104
4105 // Array literal has ElementsKind of FAST_*_ELEMENTS and value is an object.
4106 __ bind(&fast_elements);
4107 __ ldr(r5, FieldMemOperand(r1, JSObject::kElementsOffset));
4108 __ add(r6, r5, Operand::PointerOffsetFromSmiKey(r3));
4109 __ add(r6, r6, Operand(FixedArray::kHeaderSize - kHeapObjectTag));
4110 __ str(r0, MemOperand(r6, 0));
4111 // Update the write barrier for the array store.
4112 __ RecordWrite(r5, r6, r0, kLRHasNotBeenSaved, kDontSaveFPRegs,
4113 EMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
4114 __ Ret();
4115
4116 // Array literal has ElementsKind of FAST_*_SMI_ELEMENTS or FAST_*_ELEMENTS,
4117 // and value is Smi.
4118 __ bind(&smi_element);
4119 __ ldr(r5, FieldMemOperand(r1, JSObject::kElementsOffset));
4120 __ add(r6, r5, Operand::PointerOffsetFromSmiKey(r3));
4121 __ str(r0, FieldMemOperand(r6, FixedArray::kHeaderSize));
4122 __ Ret();
4123
4124 // Array literal has ElementsKind of FAST_DOUBLE_ELEMENTS.
4125 __ bind(&double_elements);
4126 __ ldr(r5, FieldMemOperand(r1, JSObject::kElementsOffset));
4127 __ StoreNumberToDoubleElements(r0, r3, r5, r6, d0, &slow_elements);
4128 __ Ret();
4129 }
4130
4131
4132 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { 4070 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
4133 CEntryStub ces(isolate(), 1, kSaveFPRegs); 4071 CEntryStub ces(isolate(), 1, kSaveFPRegs);
4134 __ Call(ces.GetCode(), RelocInfo::CODE_TARGET); 4072 __ Call(ces.GetCode(), RelocInfo::CODE_TARGET);
4135 int parameter_count_offset = 4073 int parameter_count_offset =
4136 StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset; 4074 StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset;
4137 __ ldr(r1, MemOperand(fp, parameter_count_offset)); 4075 __ ldr(r1, MemOperand(fp, parameter_count_offset));
4138 if (function_mode() == JS_FUNCTION_STUB_MODE) { 4076 if (function_mode() == JS_FUNCTION_STUB_MODE) {
4139 __ add(r1, r1, Operand(1)); 4077 __ add(r1, r1, Operand(1));
4140 } 4078 }
4141 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); 4079 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE);
(...skipping 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after
5447 MemOperand(fp, 6 * kPointerSize), NULL); 5385 MemOperand(fp, 6 * kPointerSize), NULL);
5448 } 5386 }
5449 5387
5450 5388
5451 #undef __ 5389 #undef __
5452 5390
5453 } // namespace internal 5391 } // namespace internal
5454 } // namespace v8 5392 } // namespace v8
5455 5393
5456 #endif // V8_TARGET_ARCH_ARM 5394 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm64/code-stubs-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698