| OLD | NEW | 
|---|
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/compiler/js-builtin-reducer.h" | 5 #include "src/compiler/js-builtin-reducer.h" | 
| 6 #include "src/compiler/js-graph.h" | 6 #include "src/compiler/js-graph.h" | 
| 7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" | 
| 8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" | 
| 9 #include "src/compiler/simplified-operator.h" | 9 #include "src/compiler/simplified-operator.h" | 
| 10 #include "src/objects-inl.h" | 10 #include "src/objects-inl.h" | 
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 110       value = graph()->NewNode( | 110       value = graph()->NewNode( | 
| 111           common()->Select(MachineRepresentation::kNone), | 111           common()->Select(MachineRepresentation::kNone), | 
| 112           graph()->NewNode(simplified()->NumberLessThan(), input, value), value, | 112           graph()->NewNode(simplified()->NumberLessThan(), input, value), value, | 
| 113           input); | 113           input); | 
| 114     } | 114     } | 
| 115     return Replace(value); | 115     return Replace(value); | 
| 116   } | 116   } | 
| 117   return NoChange(); | 117   return NoChange(); | 
| 118 } | 118 } | 
| 119 | 119 | 
| 120 | 120 // ES6 section 20.2.2.19 Math.imul ( x, y ) | 
| 121 // ES6 draft 08-24-14, section 20.2.2.19. |  | 
| 122 Reduction JSBuiltinReducer::ReduceMathImul(Node* node) { | 121 Reduction JSBuiltinReducer::ReduceMathImul(Node* node) { | 
| 123   JSCallReduction r(node); | 122   JSCallReduction r(node); | 
| 124   if (r.InputsMatchTwo(Type::Integral32(), Type::Integral32())) { | 123   if (r.InputsMatchTwo(Type::Number(), Type::Number())) { | 
| 125     // Math.imul(a:int32, b:int32) -> Int32Mul(a, b) | 124     // Math.imul(a:number, b:number) -> NumberImul(NumberToUint32(a), | 
| 126     Node* value = graph()->NewNode(machine()->Int32Mul(), r.left(), r.right()); | 125     //                                             NumberToUint32(b)) | 
|  | 126     Node* a = graph()->NewNode(simplified()->NumberToUint32(), r.left()); | 
|  | 127     Node* b = graph()->NewNode(simplified()->NumberToUint32(), r.right()); | 
|  | 128     Node* value = graph()->NewNode(simplified()->NumberImul(), a, b); | 
| 127     return Replace(value); | 129     return Replace(value); | 
| 128   } | 130   } | 
| 129   return NoChange(); | 131   return NoChange(); | 
| 130 } | 132 } | 
| 131 | 133 | 
| 132 // ES6 section 20.2.2.10 Math.ceil ( x ) | 134 // ES6 section 20.2.2.10 Math.ceil ( x ) | 
| 133 Reduction JSBuiltinReducer::ReduceMathCeil(Node* node) { | 135 Reduction JSBuiltinReducer::ReduceMathCeil(Node* node) { | 
| 134   JSCallReduction r(node); | 136   JSCallReduction r(node); | 
| 135   if (r.InputsMatchOne(Type::Number())) { | 137   if (r.InputsMatchOne(Type::Number())) { | 
| 136     // Math.ceil(a:number) -> NumberCeil(a) | 138     // Math.ceil(a:number) -> NumberCeil(a) | 
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 276 } | 278 } | 
| 277 | 279 | 
| 278 | 280 | 
| 279 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { | 281 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { | 
| 280   return jsgraph()->simplified(); | 282   return jsgraph()->simplified(); | 
| 281 } | 283 } | 
| 282 | 284 | 
| 283 }  // namespace compiler | 285 }  // namespace compiler | 
| 284 }  // namespace internal | 286 }  // namespace internal | 
| 285 }  // namespace v8 | 287 }  // namespace v8 | 
| OLD | NEW | 
|---|