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

Unified Diff: src/compiler/linkage.cc

Issue 2259883002: [turbofan] Inline calls to CPP builtins (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@builtin-descriptors
Patch Set: Address comments Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/linkage.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/linkage.cc
diff --git a/src/compiler/linkage.cc b/src/compiler/linkage.cc
index 58f9826369d495354c7c88719895d1d529e88da3..e4df58d0f7928569b39bd0a5bdfd5a05a1090090 100644
--- a/src/compiler/linkage.cc
+++ b/src/compiler/linkage.cc
@@ -2,12 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "src/compiler/linkage.h"
+
#include "src/ast/scopes.h"
+#include "src/builtins/builtins-utils.h"
#include "src/code-stubs.h"
#include "src/compiler.h"
#include "src/compiler/common-operator.h"
#include "src/compiler/frame.h"
-#include "src/compiler/linkage.h"
#include "src/compiler/node.h"
#include "src/compiler/osr.h"
#include "src/compiler/pipeline.h"
@@ -222,6 +224,23 @@ bool CallDescriptor::UsesOnlyRegisters() const {
CallDescriptor* Linkage::GetRuntimeCallDescriptor(
Zone* zone, Runtime::FunctionId function_id, int js_parameter_count,
Operator::Properties properties, CallDescriptor::Flags flags) {
+ const Runtime::Function* function = Runtime::FunctionForId(function_id);
+ const int return_count = function->result_size;
+ const char* debug_name = function->name;
+
+ if (!Linkage::NeedsFrameStateInput(function_id)) {
+ flags = static_cast<CallDescriptor::Flags>(
+ flags & ~CallDescriptor::kNeedsFrameState);
+ }
+
+ return GetCEntryStubCallDescriptor(zone, return_count, js_parameter_count,
+ debug_name, properties, flags);
+}
+
+CallDescriptor* Linkage::GetCEntryStubCallDescriptor(
+ Zone* zone, int return_count, int js_parameter_count,
+ const char* debug_name, Operator::Properties properties,
+ CallDescriptor::Flags flags) {
const size_t function_count = 1;
const size_t num_args_count = 1;
const size_t context_count = 1;
@@ -229,10 +248,8 @@ CallDescriptor* Linkage::GetRuntimeCallDescriptor(
static_cast<size_t>(js_parameter_count) +
num_args_count + context_count;
- const Runtime::Function* function = Runtime::FunctionForId(function_id);
- const size_t return_count = static_cast<size_t>(function->result_size);
-
- LocationSignature::Builder locations(zone, return_count, parameter_count);
+ LocationSignature::Builder locations(zone, static_cast<size_t>(return_count),
+ static_cast<size_t>(parameter_count));
// Add returns.
if (locations.return_count_ > 0) {
@@ -261,11 +278,6 @@ CallDescriptor* Linkage::GetRuntimeCallDescriptor(
// Add context.
locations.AddParam(regloc(kContextRegister, MachineType::AnyTagged()));
- if (!Linkage::NeedsFrameStateInput(function_id)) {
- flags = static_cast<CallDescriptor::Flags>(
- flags & ~CallDescriptor::kNeedsFrameState);
- }
-
// The target for runtime calls is a code object.
MachineType target_type = MachineType::AnyTagged();
LinkageLocation target_loc =
@@ -280,10 +292,9 @@ CallDescriptor* Linkage::GetRuntimeCallDescriptor(
kNoCalleeSaved, // callee-saved
kNoCalleeSaved, // callee-saved fp
flags, // flags
- function->name); // debug name
+ debug_name); // debug name
}
-
CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr,
int js_parameter_count,
CallDescriptor::Flags flags) {
« no previous file with comments | « src/compiler/linkage.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698