| OLD | NEW | 
|     1 // Copyright 2016 the V8 project authors. All rights reserved. |     1 // Copyright 2016 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/builtins/builtins-utils.h" |     5 #include "src/builtins/builtins-utils.h" | 
|     6 #include "src/builtins/builtins.h" |     6 #include "src/builtins/builtins.h" | 
|     7 #include "src/code-factory.h" |     7 #include "src/code-factory.h" | 
|     8  |     8  | 
|     9 namespace v8 { |     9 namespace v8 { | 
|    10 namespace internal { |    10 namespace internal { | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    61                            assembler->HeapNumberMapConstant()), |    61                            assembler->HeapNumberMapConstant()), | 
|    62       &return_false); |    62       &return_false); | 
|    63  |    63  | 
|    64   // Load the actual value of {number}. |    64   // Load the actual value of {number}. | 
|    65   Node* number_value = assembler->LoadHeapNumberValue(number); |    65   Node* number_value = assembler->LoadHeapNumberValue(number); | 
|    66  |    66  | 
|    67   // Truncate the value of {number} to an integer (or an infinity). |    67   // Truncate the value of {number} to an integer (or an infinity). | 
|    68   Node* integer = assembler->Float64Trunc(number_value); |    68   Node* integer = assembler->Float64Trunc(number_value); | 
|    69  |    69  | 
|    70   // Check if {number}s value matches the integer (ruling out the infinities). |    70   // Check if {number}s value matches the integer (ruling out the infinities). | 
|    71   assembler->BranchIfFloat64Equal(assembler->Float64Sub(number_value, integer), |    71   assembler->Branch( | 
|    72                                   assembler->Float64Constant(0.0), &return_true, |    72       assembler->Float64Equal(assembler->Float64Sub(number_value, integer), | 
|    73                                   &return_false); |    73                               assembler->Float64Constant(0.0)), | 
 |    74       &return_true, &return_false); | 
|    74  |    75  | 
|    75   assembler->Bind(&return_true); |    76   assembler->Bind(&return_true); | 
|    76   assembler->Return(assembler->BooleanConstant(true)); |    77   assembler->Return(assembler->BooleanConstant(true)); | 
|    77  |    78  | 
|    78   assembler->Bind(&return_false); |    79   assembler->Bind(&return_false); | 
|    79   assembler->Return(assembler->BooleanConstant(false)); |    80   assembler->Return(assembler->BooleanConstant(false)); | 
|    80 } |    81 } | 
|    81  |    82  | 
|    82 // ES6 section 20.1.2.4 Number.isNaN ( number ) |    83 // ES6 section 20.1.2.4 Number.isNaN ( number ) | 
|    83 void Builtins::Generate_NumberIsNaN(CodeStubAssembler* assembler) { |    84 void Builtins::Generate_NumberIsNaN(CodeStubAssembler* assembler) { | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   132   // Truncate the value of {number} to an integer (or an infinity). |   133   // Truncate the value of {number} to an integer (or an infinity). | 
|   133   Node* integer = assembler->Float64Trunc(number_value); |   134   Node* integer = assembler->Float64Trunc(number_value); | 
|   134  |   135  | 
|   135   // Check if {number}s value matches the integer (ruling out the infinities). |   136   // Check if {number}s value matches the integer (ruling out the infinities). | 
|   136   assembler->GotoUnless( |   137   assembler->GotoUnless( | 
|   137       assembler->Float64Equal(assembler->Float64Sub(number_value, integer), |   138       assembler->Float64Equal(assembler->Float64Sub(number_value, integer), | 
|   138                               assembler->Float64Constant(0.0)), |   139                               assembler->Float64Constant(0.0)), | 
|   139       &return_false); |   140       &return_false); | 
|   140  |   141  | 
|   141   // Check if the {integer} value is in safe integer range. |   142   // Check if the {integer} value is in safe integer range. | 
|   142   assembler->BranchIfFloat64LessThanOrEqual( |   143   assembler->Branch(assembler->Float64LessThanOrEqual( | 
|   143       assembler->Float64Abs(integer), |   144                         assembler->Float64Abs(integer), | 
|   144       assembler->Float64Constant(kMaxSafeInteger), &return_true, &return_false); |   145                         assembler->Float64Constant(kMaxSafeInteger)), | 
 |   146                     &return_true, &return_false); | 
|   145  |   147  | 
|   146   assembler->Bind(&return_true); |   148   assembler->Bind(&return_true); | 
|   147   assembler->Return(assembler->BooleanConstant(true)); |   149   assembler->Return(assembler->BooleanConstant(true)); | 
|   148  |   150  | 
|   149   assembler->Bind(&return_false); |   151   assembler->Bind(&return_false); | 
|   150   assembler->Return(assembler->BooleanConstant(false)); |   152   assembler->Return(assembler->BooleanConstant(false)); | 
|   151 } |   153 } | 
|   152  |   154  | 
|   153 // ES6 section 20.1.2.12 Number.parseFloat ( string ) |   155 // ES6 section 20.1.2.12 Number.parseFloat ( string ) | 
|   154 void Builtins::Generate_NumberParseFloat(CodeStubAssembler* assembler) { |   156 void Builtins::Generate_NumberParseFloat(CodeStubAssembler* assembler) { | 
| (...skipping 1555 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1710   compiler::Node* lhs = assembler->Parameter(0); |  1712   compiler::Node* lhs = assembler->Parameter(0); | 
|  1711   compiler::Node* rhs = assembler->Parameter(1); |  1713   compiler::Node* rhs = assembler->Parameter(1); | 
|  1712   compiler::Node* context = assembler->Parameter(2); |  1714   compiler::Node* context = assembler->Parameter(2); | 
|  1713  |  1715  | 
|  1714   assembler->Return(assembler->StrictEqual(CodeStubAssembler::kNegateResult, |  1716   assembler->Return(assembler->StrictEqual(CodeStubAssembler::kNegateResult, | 
|  1715                                            lhs, rhs, context)); |  1717                                            lhs, rhs, context)); | 
|  1716 } |  1718 } | 
|  1717  |  1719  | 
|  1718 }  // namespace internal |  1720 }  // namespace internal | 
|  1719 }  // namespace v8 |  1721 }  // namespace v8 | 
| OLD | NEW |