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

Side by Side Diff: src/mips64/builtins-mips64.cc

Issue 2122183002: [Interpreter] Collect type feedback for calls in the bytecode handler (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updated cctest.status to mark the tests fail with ignition. Created 4 years, 5 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/mips/builtins-mips.cc ('k') | src/x64/builtins-x64.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_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/debug/debug.h" 8 #include "src/debug/debug.h"
9 #include "src/deoptimizer.h" 9 #include "src/deoptimizer.h"
10 #include "src/full-codegen/full-codegen.h" 10 #include "src/full-codegen/full-codegen.h"
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1112 __ CallRuntime(Runtime::kCompileBaseline); 1112 __ CallRuntime(Runtime::kCompileBaseline);
1113 1113
1114 // Restore return value. 1114 // Restore return value.
1115 __ pop(v0); 1115 __ pop(v0);
1116 } 1116 }
1117 __ Jump(ra); 1117 __ Jump(ra);
1118 } 1118 }
1119 1119
1120 // static 1120 // static
1121 void Builtins::Generate_InterpreterPushArgsAndCallImpl( 1121 void Builtins::Generate_InterpreterPushArgsAndCallImpl(
1122 MacroAssembler* masm, TailCallMode tail_call_mode) { 1122 MacroAssembler* masm, TailCallMode tail_call_mode,
1123 CallableType function_type) {
1123 // ----------- S t a t e ------------- 1124 // ----------- S t a t e -------------
1124 // -- a0 : the number of arguments (not including the receiver) 1125 // -- a0 : the number of arguments (not including the receiver)
1125 // -- a2 : the address of the first argument to be pushed. Subsequent 1126 // -- a2 : the address of the first argument to be pushed. Subsequent
1126 // arguments should be consecutive above this, in the same order as 1127 // arguments should be consecutive above this, in the same order as
1127 // they are to be pushed onto the stack. 1128 // they are to be pushed onto the stack.
1128 // -- a1 : the target to call (can be any Object). 1129 // -- a1 : the target to call (can be any Object).
1129 // ----------------------------------- 1130 // -----------------------------------
1130 1131
1131 // Find the address of the last argument. 1132 // Find the address of the last argument.
1132 __ Daddu(a3, a0, Operand(1)); // Add one for receiver. 1133 __ Daddu(a3, a0, Operand(1)); // Add one for receiver.
1133 __ dsll(a3, a3, kPointerSizeLog2); 1134 __ dsll(a3, a3, kPointerSizeLog2);
1134 __ Dsubu(a3, a2, Operand(a3)); 1135 __ Dsubu(a3, a2, Operand(a3));
1135 1136
1136 // Push the arguments. 1137 // Push the arguments.
1137 Label loop_header, loop_check; 1138 Label loop_header, loop_check;
1138 __ Branch(&loop_check); 1139 __ Branch(&loop_check);
1139 __ bind(&loop_header); 1140 __ bind(&loop_header);
1140 __ ld(t0, MemOperand(a2)); 1141 __ ld(t0, MemOperand(a2));
1141 __ Daddu(a2, a2, Operand(-kPointerSize)); 1142 __ Daddu(a2, a2, Operand(-kPointerSize));
1142 __ push(t0); 1143 __ push(t0);
1143 __ bind(&loop_check); 1144 __ bind(&loop_check);
1144 __ Branch(&loop_header, gt, a2, Operand(a3)); 1145 __ Branch(&loop_header, gt, a2, Operand(a3));
1145 1146
1146 // Call the target. 1147 // Call the target.
1147 __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny, 1148 if (function_type == CallableType::kJSFunction) {
1148 tail_call_mode), 1149 __ Jump(masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny,
1149 RelocInfo::CODE_TARGET); 1150 tail_call_mode),
1151 RelocInfo::CODE_TARGET);
1152 } else {
1153 DCHECK_EQ(function_type, CallableType::kAny);
1154 __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny,
1155 tail_call_mode),
1156 RelocInfo::CODE_TARGET);
1157 }
1150 } 1158 }
1151 1159
1152 // static 1160 // static
1153 void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) { 1161 void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) {
1154 // ----------- S t a t e ------------- 1162 // ----------- S t a t e -------------
1155 // -- a0 : argument count (not including receiver) 1163 // -- a0 : argument count (not including receiver)
1156 // -- a3 : new target 1164 // -- a3 : new target
1157 // -- a1 : constructor to call 1165 // -- a1 : constructor to call
1158 // -- a2 : address of the first argument 1166 // -- a2 : address of the first argument
1159 // ----------------------------------- 1167 // -----------------------------------
(...skipping 1840 matching lines...) Expand 10 before | Expand all | Expand 10 after
3000 } 3008 }
3001 } 3009 }
3002 3010
3003 3011
3004 #undef __ 3012 #undef __
3005 3013
3006 } // namespace internal 3014 } // namespace internal
3007 } // namespace v8 3015 } // namespace v8
3008 3016
3009 #endif // V8_TARGET_ARCH_MIPS64 3017 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips/builtins-mips.cc ('k') | src/x64/builtins-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698