OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 break; | 675 break; |
676 case kIeee754Float64Log1p: | 676 case kIeee754Float64Log1p: |
677 ASSEMBLE_IEEE754_UNOP(log1p); | 677 ASSEMBLE_IEEE754_UNOP(log1p); |
678 break; | 678 break; |
679 case kIeee754Float64Log2: | 679 case kIeee754Float64Log2: |
680 ASSEMBLE_IEEE754_UNOP(log2); | 680 ASSEMBLE_IEEE754_UNOP(log2); |
681 break; | 681 break; |
682 case kIeee754Float64Log10: | 682 case kIeee754Float64Log10: |
683 ASSEMBLE_IEEE754_UNOP(log10); | 683 ASSEMBLE_IEEE754_UNOP(log10); |
684 break; | 684 break; |
| 685 case kIeee754Float64Pow: { |
| 686 // TODO(bmeurer): Improve integration of the stub. |
| 687 if (!i.InputDoubleRegister(1).is(xmm2)) { |
| 688 __ movaps(xmm2, i.InputDoubleRegister(0)); |
| 689 __ movaps(xmm1, i.InputDoubleRegister(1)); |
| 690 } else { |
| 691 __ movaps(xmm0, i.InputDoubleRegister(0)); |
| 692 __ movaps(xmm1, xmm2); |
| 693 __ movaps(xmm2, xmm0); |
| 694 } |
| 695 MathPowStub stub(isolate(), MathPowStub::DOUBLE); |
| 696 __ CallStub(&stub); |
| 697 __ movaps(i.OutputDoubleRegister(), xmm3); |
| 698 break; |
| 699 } |
685 case kIeee754Float64Sin: | 700 case kIeee754Float64Sin: |
686 ASSEMBLE_IEEE754_UNOP(sin); | 701 ASSEMBLE_IEEE754_UNOP(sin); |
687 break; | 702 break; |
688 case kIeee754Float64Tan: | 703 case kIeee754Float64Tan: |
689 ASSEMBLE_IEEE754_UNOP(tan); | 704 ASSEMBLE_IEEE754_UNOP(tan); |
690 break; | 705 break; |
691 case kIA32Add: | 706 case kIA32Add: |
692 if (HasImmediateInput(instr, 1)) { | 707 if (HasImmediateInput(instr, 1)) { |
693 __ add(i.InputOperand(0), i.InputImmediate(1)); | 708 __ add(i.InputOperand(0), i.InputImmediate(1)); |
694 } else { | 709 } else { |
(...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2037 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; | 2052 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; |
2038 __ Nop(padding_size); | 2053 __ Nop(padding_size); |
2039 } | 2054 } |
2040 } | 2055 } |
2041 | 2056 |
2042 #undef __ | 2057 #undef __ |
2043 | 2058 |
2044 } // namespace compiler | 2059 } // namespace compiler |
2045 } // namespace internal | 2060 } // namespace internal |
2046 } // namespace v8 | 2061 } // namespace v8 |
OLD | NEW |