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

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

Issue 1698173002: MIPS64: Fix '[runtime] Introduce FastNewStrictArgumentsStub to optimize strict arguments.' (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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/mips64/builtins-mips64.cc ('k') | no next file » | 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_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.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/ic/handler-compiler.h" 10 #include "src/ic/handler-compiler.h"
(...skipping 5156 matching lines...) Expand 10 before | Expand all | Expand 10 after
5167 } 5167 }
5168 5168
5169 // Check if we have an arguments adaptor frame below the function frame. 5169 // Check if we have an arguments adaptor frame below the function frame.
5170 Label arguments_adaptor, arguments_done; 5170 Label arguments_adaptor, arguments_done;
5171 __ ld(a3, MemOperand(a2, StandardFrameConstants::kCallerFPOffset)); 5171 __ ld(a3, MemOperand(a2, StandardFrameConstants::kCallerFPOffset));
5172 __ ld(a0, MemOperand(a3, StandardFrameConstants::kContextOffset)); 5172 __ ld(a0, MemOperand(a3, StandardFrameConstants::kContextOffset));
5173 __ Branch(&arguments_adaptor, eq, a0, 5173 __ Branch(&arguments_adaptor, eq, a0,
5174 Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); 5174 Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
5175 { 5175 {
5176 __ ld(a1, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); 5176 __ ld(a1, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset));
5177 __ ld(a0, 5177 __ lw(a0,
5178 FieldMemOperand(a1, SharedFunctionInfo::kFormalParameterCountOffset)); 5178 FieldMemOperand(a1, SharedFunctionInfo::kFormalParameterCountOffset));
5179 __ Dlsa(a2, a2, a0, kPointerSizeLog2); 5179 __ Dlsa(a2, a2, a0, kPointerSizeLog2);
5180 __ Daddu(a2, a2, Operand(StandardFrameConstants::kCallerSPOffset - 5180 __ Daddu(a2, a2, Operand(StandardFrameConstants::kCallerSPOffset -
5181 1 * kPointerSize)); 5181 1 * kPointerSize));
5182 } 5182 }
5183 __ Branch(&arguments_done); 5183 __ Branch(&arguments_done);
5184 __ bind(&arguments_adaptor); 5184 __ bind(&arguments_adaptor);
5185 { 5185 {
5186 __ SmiLoadUntag( 5186 __ SmiLoadUntag(
5187 a0, MemOperand(a2, ArgumentsAdaptorFrameConstants::kLengthOffset)); 5187 a0, MemOperand(a3, ArgumentsAdaptorFrameConstants::kLengthOffset));
5188 __ Dlsa(a2, a3, a0, kPointerSizeLog2); 5188 __ Dlsa(a2, a3, a0, kPointerSizeLog2);
5189 __ Daddu(a2, a2, Operand(StandardFrameConstants::kCallerSPOffset - 5189 __ Daddu(a2, a2, Operand(StandardFrameConstants::kCallerSPOffset -
5190 1 * kPointerSize)); 5190 1 * kPointerSize));
5191 } 5191 }
5192 __ bind(&arguments_done); 5192 __ bind(&arguments_done);
5193 5193
5194 // ----------- S t a t e ------------- 5194 // ----------- S t a t e -------------
5195 // -- cp : context 5195 // -- cp : context
5196 // -- a0 : number of rest parameters 5196 // -- a0 : number of rest parameters
5197 // -- a2 : pointer to first rest parameters 5197 // -- a2 : pointer to first rest parameters
(...skipping 17 matching lines...) Expand all
5215 __ Daddu(a3, v0, Operand(FixedArray::kHeaderSize)); 5215 __ Daddu(a3, v0, Operand(FixedArray::kHeaderSize));
5216 { 5216 {
5217 Label loop, done_loop; 5217 Label loop, done_loop;
5218 __ Dlsa(a1, a3, a0, kPointerSizeLog2); 5218 __ Dlsa(a1, a3, a0, kPointerSizeLog2);
5219 __ bind(&loop); 5219 __ bind(&loop);
5220 __ Branch(&done_loop, eq, a1, Operand(a3)); 5220 __ Branch(&done_loop, eq, a1, Operand(a3));
5221 __ ld(at, MemOperand(a2, 0 * kPointerSize)); 5221 __ ld(at, MemOperand(a2, 0 * kPointerSize));
5222 __ sd(at, FieldMemOperand(a3, 0 * kPointerSize)); 5222 __ sd(at, FieldMemOperand(a3, 0 * kPointerSize));
5223 __ Dsubu(a2, a2, Operand(1 * kPointerSize)); 5223 __ Dsubu(a2, a2, Operand(1 * kPointerSize));
5224 __ Daddu(a3, a3, Operand(1 * kPointerSize)); 5224 __ Daddu(a3, a3, Operand(1 * kPointerSize));
5225 __ b(&loop); 5225 __ Branch(&loop);
5226 __ bind(&done_loop); 5226 __ bind(&done_loop);
5227 } 5227 }
5228 5228
5229 // Setup the rest parameter array in a3. 5229 // Setup the rest parameter array in a3.
5230 __ LoadNativeContextSlot(Context::JS_ARRAY_FAST_ELEMENTS_MAP_INDEX, at); 5230 __ LoadNativeContextSlot(Context::JS_ARRAY_FAST_ELEMENTS_MAP_INDEX, at);
5231 __ sd(at, FieldMemOperand(a3, JSStrictArgumentsObject::kMapOffset)); 5231 __ sd(at, FieldMemOperand(a3, JSStrictArgumentsObject::kMapOffset));
5232 __ LoadRoot(at, Heap::kEmptyFixedArrayRootIndex); 5232 __ LoadRoot(at, Heap::kEmptyFixedArrayRootIndex);
5233 __ sd(at, FieldMemOperand(a3, JSStrictArgumentsObject::kPropertiesOffset)); 5233 __ sd(at, FieldMemOperand(a3, JSStrictArgumentsObject::kPropertiesOffset));
5234 __ sd(v0, FieldMemOperand(a3, JSStrictArgumentsObject::kElementsOffset)); 5234 __ sd(v0, FieldMemOperand(a3, JSStrictArgumentsObject::kElementsOffset));
5235 __ sd(a4, FieldMemOperand(a3, JSStrictArgumentsObject::kLengthOffset)); 5235 __ sd(a4, FieldMemOperand(a3, JSStrictArgumentsObject::kLengthOffset));
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
5711 return_value_operand, NULL); 5711 return_value_operand, NULL);
5712 } 5712 }
5713 5713
5714 5714
5715 #undef __ 5715 #undef __
5716 5716
5717 } // namespace internal 5717 } // namespace internal
5718 } // namespace v8 5718 } // namespace v8
5719 5719
5720 #endif // V8_TARGET_ARCH_MIPS64 5720 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips64/builtins-mips64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698