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

Unified Diff: src/compiler/js-native-context-specialization.cc

Issue 2588363002: Disable API call inline in TF when gather runtime stats (Closed)
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/js-native-context-specialization.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-native-context-specialization.cc
diff --git a/src/compiler/js-native-context-specialization.cc b/src/compiler/js-native-context-specialization.cc
index 408a6cda39ac3f4a343acf831b13afb843779ee5..e531c584e1815193269ddfe9627a6324247055c3 100644
--- a/src/compiler/js-native-context-specialization.cc
+++ b/src/compiler/js-native-context-specialization.cc
@@ -1011,14 +1011,7 @@ JSNativeContextSpecialization::BuildPropertyAccess(
context, target, frame_state);
// Introduce the call to the getter function.
- if (access_info.constant()->IsJSFunction()) {
- value = effect = graph()->NewNode(
- javascript()->CallFunction(
- 2, 0.0f, VectorSlotPair(),
- ConvertReceiverMode::kNotNullOrUndefined),
- target, receiver, context, frame_state0, effect, control);
- control = graph()->NewNode(common()->IfSuccess(), value);
- } else {
+ if (CanInlineApiCall(access_info)) {
DCHECK(access_info.constant()->IsFunctionTemplateInfo());
Handle<FunctionTemplateInfo> function_template_info(
Handle<FunctionTemplateInfo>::cast(access_info.constant()));
@@ -1029,6 +1022,13 @@ JSNativeContextSpecialization::BuildPropertyAccess(
value = value_effect_control.value();
effect = value_effect_control.effect();
control = value_effect_control.control();
+ } else {
Toon Verwaest 2017/01/10 13:34:57 This is broken; if CanInlineApiCall returns false
+ value = effect = graph()->NewNode(
+ javascript()->CallFunction(
+ 2, 0.0f, VectorSlotPair(),
+ ConvertReceiverMode::kNotNullOrUndefined),
+ target, receiver, context, frame_state0, effect, control);
+ control = graph()->NewNode(common()->IfSuccess(), value);
}
break;
}
@@ -1047,14 +1047,7 @@ JSNativeContextSpecialization::BuildPropertyAccess(
context, target, frame_state);
// Introduce the call to the setter function.
- if (access_info.constant()->IsJSFunction()) {
- effect = graph()->NewNode(
- javascript()->CallFunction(
- 3, 0.0f, VectorSlotPair(),
- ConvertReceiverMode::kNotNullOrUndefined),
- target, receiver, value, context, frame_state0, effect, control);
- control = graph()->NewNode(common()->IfSuccess(), effect);
- } else {
+ if (CanInlineApiCall(access_info)) {
DCHECK(access_info.constant()->IsFunctionTemplateInfo());
Handle<FunctionTemplateInfo> function_template_info(
Handle<FunctionTemplateInfo>::cast(access_info.constant()));
@@ -1065,6 +1058,13 @@ JSNativeContextSpecialization::BuildPropertyAccess(
value = value_effect_control.value();
effect = value_effect_control.effect();
control = value_effect_control.control();
+ } else {
+ effect = graph()->NewNode(
+ javascript()->CallFunction(
+ 3, 0.0f, VectorSlotPair(),
+ ConvertReceiverMode::kNotNullOrUndefined),
+ target, receiver, value, context, frame_state0, effect, control);
+ control = graph()->NewNode(common()->IfSuccess(), effect);
}
break;
}
@@ -1558,6 +1558,13 @@ JSNativeContextSpecialization::BuildElementAccess(
return ValueEffectControl(value, effect, control);
}
+bool JSNativeContextSpecialization::CanInlineApiCall(
+ PropertyAccessInfo const& access_info) {
+ if (V8_UNLIKELY(FLAG_runtime_stats)) return false;
+ return access_info.IsAccessorConstant() &&
+ access_info.constant()->IsFunctionTemplateInfo();
+}
+
JSNativeContextSpecialization::ValueEffectControl
JSNativeContextSpecialization::InlineApiCall(
Node* receiver, Node* context, Node* target, Node* frame_state, Node* value,
« no previous file with comments | « src/compiler/js-native-context-specialization.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698