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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/arguments.h" | 7 #include "src/arguments.h" |
8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 | 186 |
187 // Slower case. | 187 // Slower case. |
188 int flags = ALLOW_HEX; | 188 int flags = ALLOW_HEX; |
189 if (FLAG_harmony_numeric_literals) { | 189 if (FLAG_harmony_numeric_literals) { |
190 // The current spec draft has not updated "ToNumber Applied to the String | 190 // The current spec draft has not updated "ToNumber Applied to the String |
191 // Type", https://bugs.ecmascript.org/show_bug.cgi?id=1584 | 191 // Type", https://bugs.ecmascript.org/show_bug.cgi?id=1584 |
192 flags |= ALLOW_OCTAL | ALLOW_BINARY; | 192 flags |= ALLOW_OCTAL | ALLOW_BINARY; |
193 } | 193 } |
194 | 194 |
195 return *isolate->factory()->NewNumber( | 195 return *isolate->factory()->NewNumber( |
196 StringToDouble(isolate->unicode_cache(), *subject, flags)); | 196 StringToDouble(isolate->unicode_cache(), subject, flags)); |
197 } | 197 } |
198 | 198 |
199 | 199 |
200 RUNTIME_FUNCTION(Runtime_StringParseInt) { | 200 RUNTIME_FUNCTION(Runtime_StringParseInt) { |
201 HandleScope handle_scope(isolate); | 201 HandleScope handle_scope(isolate); |
202 DCHECK(args.length() == 2); | 202 DCHECK(args.length() == 2); |
203 CONVERT_ARG_HANDLE_CHECKED(String, subject, 0); | 203 CONVERT_ARG_HANDLE_CHECKED(String, subject, 0); |
204 CONVERT_NUMBER_CHECKED(int, radix, Int32, args[1]); | 204 CONVERT_NUMBER_CHECKED(int, radix, Int32, args[1]); |
205 RUNTIME_ASSERT(radix == 0 || (2 <= radix && radix <= 36)); | 205 RUNTIME_ASSERT(radix == 0 || (2 <= radix && radix <= 36)); |
206 | 206 |
(...skipping 15 matching lines...) Expand all Loading... |
222 | 222 |
223 return *isolate->factory()->NewNumber(value); | 223 return *isolate->factory()->NewNumber(value); |
224 } | 224 } |
225 | 225 |
226 | 226 |
227 RUNTIME_FUNCTION(Runtime_StringParseFloat) { | 227 RUNTIME_FUNCTION(Runtime_StringParseFloat) { |
228 HandleScope shs(isolate); | 228 HandleScope shs(isolate); |
229 DCHECK(args.length() == 1); | 229 DCHECK(args.length() == 1); |
230 CONVERT_ARG_HANDLE_CHECKED(String, subject, 0); | 230 CONVERT_ARG_HANDLE_CHECKED(String, subject, 0); |
231 | 231 |
232 subject = String::Flatten(subject); | 232 double value = StringToDouble(isolate->unicode_cache(), subject, |
233 double value = StringToDouble(isolate->unicode_cache(), *subject, | |
234 ALLOW_TRAILING_JUNK, base::OS::nan_value()); | 233 ALLOW_TRAILING_JUNK, base::OS::nan_value()); |
235 | 234 |
236 return *isolate->factory()->NewNumber(value); | 235 return *isolate->factory()->NewNumber(value); |
237 } | 236 } |
238 | 237 |
239 | 238 |
240 RUNTIME_FUNCTION(Runtime_NumberToStringRT) { | 239 RUNTIME_FUNCTION(Runtime_NumberToStringRT) { |
241 HandleScope scope(isolate); | 240 HandleScope scope(isolate); |
242 DCHECK(args.length() == 1); | 241 DCHECK(args.length() == 1); |
243 CONVERT_NUMBER_ARG_HANDLE_CHECKED(number, 0); | 242 CONVERT_NUMBER_ARG_HANDLE_CHECKED(number, 0); |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 | 587 |
589 RUNTIME_FUNCTION(RuntimeReference_IsNonNegativeSmi) { | 588 RUNTIME_FUNCTION(RuntimeReference_IsNonNegativeSmi) { |
590 SealHandleScope shs(isolate); | 589 SealHandleScope shs(isolate); |
591 DCHECK(args.length() == 1); | 590 DCHECK(args.length() == 1); |
592 CONVERT_ARG_CHECKED(Object, obj, 0); | 591 CONVERT_ARG_CHECKED(Object, obj, 0); |
593 return isolate->heap()->ToBoolean(obj->IsSmi() && | 592 return isolate->heap()->ToBoolean(obj->IsSmi() && |
594 Smi::cast(obj)->value() >= 0); | 593 Smi::cast(obj)->value() >= 0); |
595 } | 594 } |
596 } | 595 } |
597 } // namespace v8::internal | 596 } // namespace v8::internal |
OLD | NEW |