| Index: src/compiler/js-builtin-reducer.cc
|
| diff --git a/src/compiler/js-builtin-reducer.cc b/src/compiler/js-builtin-reducer.cc
|
| index 7be3a50ed07f95dbef8a1bc534e562afd003c48f..6b8c25d72665bb0c3a6cd97d3dcb8e1e6533622e 100644
|
| --- a/src/compiler/js-builtin-reducer.cc
|
| +++ b/src/compiler/js-builtin-reducer.cc
|
| @@ -129,6 +129,18 @@ Reduction JSBuiltinReducer::ReduceMathImul(Node* node) {
|
| return NoChange();
|
| }
|
|
|
| +// ES6 draft 08-24-14, section 20.2.2.16.
|
| +Reduction JSBuiltinReducer::ReduceMathFloor(Node* node) {
|
| + JSCallReduction r(node);
|
| + if (r.InputsMatchOne(Type::Number()) &&
|
| + machine()->Float64RoundDown().IsSupported()) {
|
| + // Math.floor(a:number) -> Float64RoundDown(a)
|
| + Node* value =
|
| + graph()->NewNode(machine()->Float64RoundDown().op(), r.left());
|
| + return Replace(value);
|
| + }
|
| + return NoChange();
|
| +}
|
|
|
| // ES6 draft 08-24-14, section 20.2.2.17.
|
| Reduction JSBuiltinReducer::ReduceMathFround(Node* node) {
|
| @@ -192,6 +204,9 @@ Reduction JSBuiltinReducer::Reduce(Node* node) {
|
| case kMathImul:
|
| reduction = ReduceMathImul(node);
|
| break;
|
| + case kMathFloor:
|
| + reduction = ReduceMathFloor(node);
|
| + break;
|
| case kMathFround:
|
| reduction = ReduceMathFround(node);
|
| break;
|
|
|