Index: src/compiler/js-intrinsic-lowering.cc |
diff --git a/src/compiler/js-intrinsic-lowering.cc b/src/compiler/js-intrinsic-lowering.cc |
index ebe2e4e72330e8101e546d6cef0ca3c1ce25397c..df56ce67b36835457d76c1601da671ae7e6e7979 100644 |
--- a/src/compiler/js-intrinsic-lowering.cc |
+++ b/src/compiler/js-intrinsic-lowering.cc |
@@ -32,6 +32,8 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) { |
return ReduceInlineIsInstanceType(node, JS_ARRAY_TYPE); |
case Runtime::kInlineIsFunction: |
return ReduceInlineIsInstanceType(node, JS_FUNCTION_TYPE); |
+ case Runtime::kInlineJSValueValue: |
+ return ReduceInlineJSValueValue(node); |
case Runtime::kInlineConstructDouble: |
return ReduceInlineConstructDouble(node); |
case Runtime::kInlineDoubleLo: |
@@ -44,6 +46,8 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) { |
return ReduceInlineMathFloor(node); |
case Runtime::kInlineMathSqrt: |
return ReduceInlineMathSqrt(node); |
+ case Runtime::kInlineStringLength: |
+ return ReduceInlineStringLength(node); |
case Runtime::kInlineValueOf: |
return ReduceInlineValueOf(node); |
default: |
@@ -103,6 +107,19 @@ Reduction JSIntrinsicLowering::ReduceInlineIsNonNegativeSmi(Node* node) { |
} |
+Reduction JSIntrinsicLowering::ReduceInlineJSValueValue(Node* node) { |
+ Node* value = NodeProperties::GetValueInput(node, 0); |
+ Node* effect = NodeProperties::GetEffectInput(node); |
+ Node* control = NodeProperties::GetControlInput(node); |
+ |
+ Node* result = |
+ graph()->NewNode(simplified()->LoadField(AccessBuilder::ForValue()), |
+ value, effect, control); |
+ NodeProperties::ReplaceWithValue(node, result); |
+ return Replace(value); |
+} |
+ |
+ |
Reduction JSIntrinsicLowering::ReduceInlineConstructDouble(Node* node) { |
Node* high = NodeProperties::GetValueInput(node, 0); |
Node* low = NodeProperties::GetValueInput(node, 1); |
@@ -177,6 +194,19 @@ Reduction JSIntrinsicLowering::ReduceInlineMathSqrt(Node* node) { |
} |
+Reduction JSIntrinsicLowering::ReduceInlineStringLength(Node* node) { |
+ Node* value = NodeProperties::GetValueInput(node, 0); |
+ Node* effect = NodeProperties::GetEffectInput(node); |
+ Node* control = NodeProperties::GetControlInput(node); |
+ |
+ Node* result = graph()->NewNode( |
+ simplified()->LoadField(AccessBuilder::ForStringLength()), value, effect, |
+ control); |
+ NodeProperties::ReplaceWithValue(node, result); |
+ return Replace(value); |
+} |
+ |
+ |
Reduction JSIntrinsicLowering::ReduceInlineValueOf(Node* node) { |
// if (%_IsSmi(value)) { |
// return value; |