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

Side by Side Diff: src/compiler/linkage.cc

Issue 1475953002: [stubs] A new approach to TF stubs (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix Win64 build Created 5 years 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/compiler/linkage.h ('k') | src/compiler/pipeline.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/ast/scopes.h" 5 #include "src/ast/scopes.h"
6 #include "src/code-stubs.h" 6 #include "src/code-stubs.h"
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/compiler/common-operator.h" 8 #include "src/compiler/common-operator.h"
9 #include "src/compiler/frame.h" 9 #include "src/compiler/frame.h"
10 #include "src/compiler/linkage.h" 10 #include "src/compiler/linkage.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 case Runtime::kReThrow: 169 case Runtime::kReThrow:
170 case Runtime::kStringCompare: 170 case Runtime::kStringCompare:
171 case Runtime::kStringEquals: 171 case Runtime::kStringEquals:
172 case Runtime::kToFastProperties: // TODO(jarin): Is it safe? 172 case Runtime::kToFastProperties: // TODO(jarin): Is it safe?
173 case Runtime::kTraceEnter: 173 case Runtime::kTraceEnter:
174 case Runtime::kTraceExit: 174 case Runtime::kTraceExit:
175 return 0; 175 return 0;
176 case Runtime::kInlineArguments: 176 case Runtime::kInlineArguments:
177 case Runtime::kInlineArgumentsLength: 177 case Runtime::kInlineArgumentsLength:
178 case Runtime::kInlineDefaultConstructorCallSuper: 178 case Runtime::kInlineDefaultConstructorCallSuper:
179 case Runtime::kInlineGetCallerJSFunction:
180 case Runtime::kInlineGetPrototype: 179 case Runtime::kInlineGetPrototype:
181 case Runtime::kInlineRegExpExec: 180 case Runtime::kInlineRegExpExec:
182 case Runtime::kInlineSubString: 181 case Runtime::kInlineSubString:
183 case Runtime::kInlineToInteger: 182 case Runtime::kInlineToInteger:
184 case Runtime::kInlineToLength: 183 case Runtime::kInlineToLength:
185 case Runtime::kInlineToName: 184 case Runtime::kInlineToName:
186 case Runtime::kInlineToNumber: 185 case Runtime::kInlineToNumber:
187 case Runtime::kInlineToObject: 186 case Runtime::kInlineToObject:
188 case Runtime::kInlineToPrimitive_Number: 187 case Runtime::kInlineToPrimitive_Number:
189 case Runtime::kInlineToPrimitive_String: 188 case Runtime::kInlineToPrimitive_String:
(...skipping 24 matching lines...) Expand all
214 } 213 }
215 for (size_t i = 0; i < ReturnCount(); ++i) { 214 for (size_t i = 0; i < ReturnCount(); ++i) {
216 if (!GetReturnLocation(i).IsRegister()) return false; 215 if (!GetReturnLocation(i).IsRegister()) return false;
217 } 216 }
218 return true; 217 return true;
219 } 218 }
220 219
221 220
222 CallDescriptor* Linkage::GetRuntimeCallDescriptor( 221 CallDescriptor* Linkage::GetRuntimeCallDescriptor(
223 Zone* zone, Runtime::FunctionId function_id, int js_parameter_count, 222 Zone* zone, Runtime::FunctionId function_id, int js_parameter_count,
224 Operator::Properties properties, bool needs_frame_state) { 223 Operator::Properties properties, CallDescriptor::Flags flags) {
225 const size_t function_count = 1; 224 const size_t function_count = 1;
226 const size_t num_args_count = 1; 225 const size_t num_args_count = 1;
227 const size_t context_count = 1; 226 const size_t context_count = 1;
228 const size_t parameter_count = function_count + 227 const size_t parameter_count = function_count +
229 static_cast<size_t>(js_parameter_count) + 228 static_cast<size_t>(js_parameter_count) +
230 num_args_count + context_count; 229 num_args_count + context_count;
231 230
232 const Runtime::Function* function = Runtime::FunctionForId(function_id); 231 const Runtime::Function* function = Runtime::FunctionForId(function_id);
233 const size_t return_count = static_cast<size_t>(function->result_size); 232 const size_t return_count = static_cast<size_t>(function->result_size);
234 233
(...skipping 22 matching lines...) Expand all
257 types.AddParam(kMachAnyTagged); 256 types.AddParam(kMachAnyTagged);
258 257
259 // Add runtime call argument count. 258 // Add runtime call argument count.
260 locations.AddParam(regloc(kRuntimeCallArgCountRegister)); 259 locations.AddParam(regloc(kRuntimeCallArgCountRegister));
261 types.AddParam(kMachPtr); 260 types.AddParam(kMachPtr);
262 261
263 // Add context. 262 // Add context.
264 locations.AddParam(regloc(kContextRegister)); 263 locations.AddParam(regloc(kContextRegister));
265 types.AddParam(kMachAnyTagged); 264 types.AddParam(kMachAnyTagged);
266 265
267 CallDescriptor::Flags flags = 266 if (Linkage::FrameStateInputCount(function_id) == 0) {
268 needs_frame_state && (Linkage::FrameStateInputCount(function_id) > 0) 267 flags = static_cast<CallDescriptor::Flags>(
269 ? CallDescriptor::kNeedsFrameState 268 flags & ~CallDescriptor::kNeedsFrameState);
270 : CallDescriptor::kNoFlags; 269 }
271 270
272 // The target for runtime calls is a code object. 271 // The target for runtime calls is a code object.
273 MachineType target_type = kMachAnyTagged; 272 MachineType target_type = kMachAnyTagged;
274 LinkageLocation target_loc = LinkageLocation::ForAnyRegister(); 273 LinkageLocation target_loc = LinkageLocation::ForAnyRegister();
275 return new (zone) CallDescriptor( // -- 274 return new (zone) CallDescriptor( // --
276 CallDescriptor::kCallCodeObject, // kind 275 CallDescriptor::kCallCodeObject, // kind
277 target_type, // target MachineType 276 target_type, // target MachineType
278 target_loc, // target location 277 target_loc, // target location
279 types.Build(), // machine_sig 278 types.Build(), // machine_sig
280 locations.Build(), // location_sig 279 locations.Build(), // location_sig
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 } else { 522 } else {
524 DCHECK(loc == regloc(kContextRegister)); 523 DCHECK(loc == regloc(kContextRegister));
525 return LinkageLocation::ForCalleeFrameSlot(Frame::kContextSlot); 524 return LinkageLocation::ForCalleeFrameSlot(Frame::kContextSlot);
526 } 525 }
527 } 526 }
528 527
529 528
530 } // namespace compiler 529 } // namespace compiler
531 } // namespace internal 530 } // namespace internal
532 } // namespace v8 531 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/linkage.h ('k') | src/compiler/pipeline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698