Commit f1473c9b authored by bmeurer's avatar bmeurer Committed by Commit bot

[turbofan] Inline calls to Date.now builtin.

Call the %DateCurrentTime runtime function directly instead, which is
cheaper than calling the C++ builtin.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2612513003
Cr-Commit-Position: refs/heads/master@{#42028}
parent 35a393f8
...@@ -950,6 +950,14 @@ bool HasInstanceTypeWitness(Node* receiver, Node* effect, ...@@ -950,6 +950,14 @@ bool HasInstanceTypeWitness(Node* receiver, Node* effect,
} // namespace } // namespace
// ES6 section 20.3.3.1 Date.now ( )
Reduction JSBuiltinReducer::ReduceDateNow(Node* node) {
NodeProperties::RemoveValueInputs(node);
NodeProperties::ChangeOp(
node, javascript()->CallRuntime(Runtime::kDateCurrentTime));
return Changed(node);
}
// ES6 section 20.3.4.10 Date.prototype.getTime ( ) // ES6 section 20.3.4.10 Date.prototype.getTime ( )
Reduction JSBuiltinReducer::ReduceDateGetTime(Node* node) { Reduction JSBuiltinReducer::ReduceDateGetTime(Node* node) {
Node* receiver = NodeProperties::GetValueInput(node, 1); Node* receiver = NodeProperties::GetValueInput(node, 1);
...@@ -1858,6 +1866,8 @@ Reduction JSBuiltinReducer::Reduce(Node* node) { ...@@ -1858,6 +1866,8 @@ Reduction JSBuiltinReducer::Reduce(Node* node) {
return ReduceArrayPop(node); return ReduceArrayPop(node);
case kArrayPush: case kArrayPush:
return ReduceArrayPush(node); return ReduceArrayPush(node);
case kDateNow:
return ReduceDateNow(node);
case kDateGetTime: case kDateGetTime:
return ReduceDateGetTime(node); return ReduceDateGetTime(node);
case kGlobalIsFinite: case kGlobalIsFinite:
......
...@@ -57,6 +57,7 @@ class V8_EXPORT_PRIVATE JSBuiltinReducer final ...@@ -57,6 +57,7 @@ class V8_EXPORT_PRIVATE JSBuiltinReducer final
IterationKind kind); IterationKind kind);
Reduction ReduceArrayPop(Node* node); Reduction ReduceArrayPop(Node* node);
Reduction ReduceArrayPush(Node* node); Reduction ReduceArrayPush(Node* node);
Reduction ReduceDateNow(Node* node);
Reduction ReduceDateGetTime(Node* node); Reduction ReduceDateGetTime(Node* node);
Reduction ReduceGlobalIsFinite(Node* node); Reduction ReduceGlobalIsFinite(Node* node);
Reduction ReduceGlobalIsNaN(Node* node); Reduction ReduceGlobalIsNaN(Node* node);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment