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

Side by Side Diff: src/compiler/js-builtin-reducer.cc

Issue 2083573002: [builtins] Unify Cosh, Sinh and Tanh as exports from flibm (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE and windows fix. Created 4 years, 5 months 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 unified diff | Download patch
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/compiler/machine-operator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 JSCallReduction r(node); 170 JSCallReduction r(node);
171 if (r.InputsMatchOne(Type::PlainPrimitive())) { 171 if (r.InputsMatchOne(Type::PlainPrimitive())) {
172 // Math.cos(a:plain-primitive) -> NumberCos(ToNumber(a)) 172 // Math.cos(a:plain-primitive) -> NumberCos(ToNumber(a))
173 Node* input = ToNumber(r.GetJSCallInput(0)); 173 Node* input = ToNumber(r.GetJSCallInput(0));
174 Node* value = graph()->NewNode(simplified()->NumberCos(), input); 174 Node* value = graph()->NewNode(simplified()->NumberCos(), input);
175 return Replace(value); 175 return Replace(value);
176 } 176 }
177 return NoChange(); 177 return NoChange();
178 } 178 }
179 179
180 // ES6 section 20.2.2.13 Math.cosh ( x )
181 Reduction JSBuiltinReducer::ReduceMathCosh(Node* node) {
182 JSCallReduction r(node);
183 if (r.InputsMatchOne(Type::PlainPrimitive())) {
184 // Math.cosh(a:plain-primitive) -> NumberCosh(ToNumber(a))
185 Node* input = ToNumber(r.GetJSCallInput(0));
186 Node* value = graph()->NewNode(simplified()->NumberCosh(), input);
187 return Replace(value);
188 }
189 return NoChange();
190 }
191
180 // ES6 section 20.2.2.14 Math.exp ( x ) 192 // ES6 section 20.2.2.14 Math.exp ( x )
181 Reduction JSBuiltinReducer::ReduceMathExp(Node* node) { 193 Reduction JSBuiltinReducer::ReduceMathExp(Node* node) {
182 JSCallReduction r(node); 194 JSCallReduction r(node);
183 if (r.InputsMatchOne(Type::PlainPrimitive())) { 195 if (r.InputsMatchOne(Type::PlainPrimitive())) {
184 // Math.exp(a:plain-primitive) -> NumberExp(ToNumber(a)) 196 // Math.exp(a:plain-primitive) -> NumberExp(ToNumber(a))
185 Node* input = ToNumber(r.GetJSCallInput(0)); 197 Node* input = ToNumber(r.GetJSCallInput(0));
186 Node* value = graph()->NewNode(simplified()->NumberExp(), input); 198 Node* value = graph()->NewNode(simplified()->NumberExp(), input);
187 return Replace(value); 199 return Replace(value);
188 } 200 }
189 return NoChange(); 201 return NoChange();
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 JSCallReduction r(node); 393 JSCallReduction r(node);
382 if (r.InputsMatchOne(Type::PlainPrimitive())) { 394 if (r.InputsMatchOne(Type::PlainPrimitive())) {
383 // Math.sin(a:plain-primitive) -> NumberSin(ToNumber(a)) 395 // Math.sin(a:plain-primitive) -> NumberSin(ToNumber(a))
384 Node* input = ToNumber(r.GetJSCallInput(0)); 396 Node* input = ToNumber(r.GetJSCallInput(0));
385 Node* value = graph()->NewNode(simplified()->NumberSin(), input); 397 Node* value = graph()->NewNode(simplified()->NumberSin(), input);
386 return Replace(value); 398 return Replace(value);
387 } 399 }
388 return NoChange(); 400 return NoChange();
389 } 401 }
390 402
403 // ES6 section 20.2.2.31 Math.sinh ( x )
404 Reduction JSBuiltinReducer::ReduceMathSinh(Node* node) {
405 JSCallReduction r(node);
406 if (r.InputsMatchOne(Type::PlainPrimitive())) {
407 // Math.sinh(a:plain-primitive) -> NumberSinh(ToNumber(a))
408 Node* input = ToNumber(r.GetJSCallInput(0));
409 Node* value = graph()->NewNode(simplified()->NumberSinh(), input);
410 return Replace(value);
411 }
412 return NoChange();
413 }
414
391 // ES6 section 20.2.2.32 Math.sqrt ( x ) 415 // ES6 section 20.2.2.32 Math.sqrt ( x )
392 Reduction JSBuiltinReducer::ReduceMathSqrt(Node* node) { 416 Reduction JSBuiltinReducer::ReduceMathSqrt(Node* node) {
393 JSCallReduction r(node); 417 JSCallReduction r(node);
394 if (r.InputsMatchOne(Type::PlainPrimitive())) { 418 if (r.InputsMatchOne(Type::PlainPrimitive())) {
395 // Math.sqrt(a:plain-primitive) -> NumberSqrt(ToNumber(a)) 419 // Math.sqrt(a:plain-primitive) -> NumberSqrt(ToNumber(a))
396 Node* input = ToNumber(r.GetJSCallInput(0)); 420 Node* input = ToNumber(r.GetJSCallInput(0));
397 Node* value = graph()->NewNode(simplified()->NumberSqrt(), input); 421 Node* value = graph()->NewNode(simplified()->NumberSqrt(), input);
398 return Replace(value); 422 return Replace(value);
399 } 423 }
400 return NoChange(); 424 return NoChange();
401 } 425 }
402 426
403 // ES6 section 20.2.2.33 Math.tan ( x ) 427 // ES6 section 20.2.2.33 Math.tan ( x )
404 Reduction JSBuiltinReducer::ReduceMathTan(Node* node) { 428 Reduction JSBuiltinReducer::ReduceMathTan(Node* node) {
405 JSCallReduction r(node); 429 JSCallReduction r(node);
406 if (r.InputsMatchOne(Type::PlainPrimitive())) { 430 if (r.InputsMatchOne(Type::PlainPrimitive())) {
407 // Math.tan(a:plain-primitive) -> NumberTan(ToNumber(a)) 431 // Math.tan(a:plain-primitive) -> NumberTan(ToNumber(a))
408 Node* input = ToNumber(r.GetJSCallInput(0)); 432 Node* input = ToNumber(r.GetJSCallInput(0));
409 Node* value = graph()->NewNode(simplified()->NumberTan(), input); 433 Node* value = graph()->NewNode(simplified()->NumberTan(), input);
410 return Replace(value); 434 return Replace(value);
411 } 435 }
412 return NoChange(); 436 return NoChange();
413 } 437 }
414 438
439 // ES6 section 20.2.2.34 Math.tanh ( x )
440 Reduction JSBuiltinReducer::ReduceMathTanh(Node* node) {
441 JSCallReduction r(node);
442 if (r.InputsMatchOne(Type::PlainPrimitive())) {
443 // Math.tanh(a:plain-primitive) -> NumberTanh(ToNumber(a))
444 Node* input = ToNumber(r.GetJSCallInput(0));
445 Node* value = graph()->NewNode(simplified()->NumberTanh(), input);
446 return Replace(value);
447 }
448 return NoChange();
449 }
450
415 // ES6 section 20.2.2.35 Math.trunc ( x ) 451 // ES6 section 20.2.2.35 Math.trunc ( x )
416 Reduction JSBuiltinReducer::ReduceMathTrunc(Node* node) { 452 Reduction JSBuiltinReducer::ReduceMathTrunc(Node* node) {
417 JSCallReduction r(node); 453 JSCallReduction r(node);
418 if (r.InputsMatchOne(Type::PlainPrimitive())) { 454 if (r.InputsMatchOne(Type::PlainPrimitive())) {
419 // Math.trunc(a:plain-primitive) -> NumberTrunc(ToNumber(a)) 455 // Math.trunc(a:plain-primitive) -> NumberTrunc(ToNumber(a))
420 Node* input = ToNumber(r.GetJSCallInput(0)); 456 Node* input = ToNumber(r.GetJSCallInput(0));
421 Node* value = graph()->NewNode(simplified()->NumberTrunc(), input); 457 Node* value = graph()->NewNode(simplified()->NumberTrunc(), input);
422 return Replace(value); 458 return Replace(value);
423 } 459 }
424 return NoChange(); 460 return NoChange();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 break; 496 break;
461 case kMathCeil: 497 case kMathCeil:
462 reduction = ReduceMathCeil(node); 498 reduction = ReduceMathCeil(node);
463 break; 499 break;
464 case kMathClz32: 500 case kMathClz32:
465 reduction = ReduceMathClz32(node); 501 reduction = ReduceMathClz32(node);
466 break; 502 break;
467 case kMathCos: 503 case kMathCos:
468 reduction = ReduceMathCos(node); 504 reduction = ReduceMathCos(node);
469 break; 505 break;
506 case kMathCosh:
507 reduction = ReduceMathCosh(node);
508 break;
470 case kMathExp: 509 case kMathExp:
471 reduction = ReduceMathExp(node); 510 reduction = ReduceMathExp(node);
472 break; 511 break;
473 case kMathExpm1: 512 case kMathExpm1:
474 reduction = ReduceMathExpm1(node); 513 reduction = ReduceMathExpm1(node);
475 break; 514 break;
476 case kMathFloor: 515 case kMathFloor:
477 reduction = ReduceMathFloor(node); 516 reduction = ReduceMathFloor(node);
478 break; 517 break;
479 case kMathFround: 518 case kMathFround:
(...skipping 22 matching lines...) Expand all
502 break; 541 break;
503 case kMathPow: 542 case kMathPow:
504 reduction = ReduceMathPow(node); 543 reduction = ReduceMathPow(node);
505 break; 544 break;
506 case kMathRound: 545 case kMathRound:
507 reduction = ReduceMathRound(node); 546 reduction = ReduceMathRound(node);
508 break; 547 break;
509 case kMathSin: 548 case kMathSin:
510 reduction = ReduceMathSin(node); 549 reduction = ReduceMathSin(node);
511 break; 550 break;
551 case kMathSinh:
552 reduction = ReduceMathSinh(node);
553 break;
512 case kMathSqrt: 554 case kMathSqrt:
513 reduction = ReduceMathSqrt(node); 555 reduction = ReduceMathSqrt(node);
514 break; 556 break;
515 case kMathTan: 557 case kMathTan:
516 reduction = ReduceMathTan(node); 558 reduction = ReduceMathTan(node);
517 break; 559 break;
560 case kMathTanh:
561 reduction = ReduceMathTanh(node);
562 break;
518 case kMathTrunc: 563 case kMathTrunc:
519 reduction = ReduceMathTrunc(node); 564 reduction = ReduceMathTrunc(node);
520 break; 565 break;
521 case kStringFromCharCode: 566 case kStringFromCharCode:
522 reduction = ReduceStringFromCharCode(node); 567 reduction = ReduceStringFromCharCode(node);
523 break; 568 break;
524 default: 569 default:
525 break; 570 break;
526 } 571 }
527 572
(...skipping 28 matching lines...) Expand all
556 } 601 }
557 602
558 603
559 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const { 604 SimplifiedOperatorBuilder* JSBuiltinReducer::simplified() const {
560 return jsgraph()->simplified(); 605 return jsgraph()->simplified();
561 } 606 }
562 607
563 } // namespace compiler 608 } // namespace compiler
564 } // namespace internal 609 } // namespace internal
565 } // namespace v8 610 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/compiler/machine-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698