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

Side by Side Diff: src/builtins/builtins-number.cc

Issue 2539093002: [runtime] Port simple String.prototype.indexOf cases to TF Builtin (Closed)
Patch Set: merging with master Created 4 years 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/builtins/builtins-math.cc ('k') | src/builtins/builtins-object.cc » ('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 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 #include "src/code-stub-assembler.h" 8 #include "src/code-stub-assembler.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 Bind(&if_generic); 329 Bind(&if_generic);
330 { 330 {
331 Node* result = CallRuntime(Runtime::kStringParseInt, context, input, radix); 331 Node* result = CallRuntime(Runtime::kStringParseInt, context, input, radix);
332 Return(result); 332 Return(result);
333 } 333 }
334 } 334 }
335 335
336 // ES6 section 20.1.3.2 Number.prototype.toExponential ( fractionDigits ) 336 // ES6 section 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
337 BUILTIN(NumberPrototypeToExponential) { 337 BUILTIN(NumberPrototypeToExponential) {
338 HandleScope scope(isolate); 338 HandleScope scope(isolate);
339 Handle<Object> value = args.at<Object>(0); 339 Handle<Object> value = args.at(0);
340 Handle<Object> fraction_digits = args.atOrUndefined(isolate, 1); 340 Handle<Object> fraction_digits = args.atOrUndefined(isolate, 1);
341 341
342 // Unwrap the receiver {value}. 342 // Unwrap the receiver {value}.
343 if (value->IsJSValue()) { 343 if (value->IsJSValue()) {
344 value = handle(Handle<JSValue>::cast(value)->value(), isolate); 344 value = handle(Handle<JSValue>::cast(value)->value(), isolate);
345 } 345 }
346 if (!value->IsNumber()) { 346 if (!value->IsNumber()) {
347 THROW_NEW_ERROR_RETURN_FAILURE( 347 THROW_NEW_ERROR_RETURN_FAILURE(
348 isolate, NewTypeError(MessageTemplate::kNotGeneric, 348 isolate, NewTypeError(MessageTemplate::kNotGeneric,
349 isolate->factory()->NewStringFromAsciiChecked( 349 isolate->factory()->NewStringFromAsciiChecked(
(...skipping 22 matching lines...) Expand all
372 : static_cast<int>(fraction_digits_number); 372 : static_cast<int>(fraction_digits_number);
373 char* const str = DoubleToExponentialCString(value_number, f); 373 char* const str = DoubleToExponentialCString(value_number, f);
374 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str); 374 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
375 DeleteArray(str); 375 DeleteArray(str);
376 return *result; 376 return *result;
377 } 377 }
378 378
379 // ES6 section 20.1.3.3 Number.prototype.toFixed ( fractionDigits ) 379 // ES6 section 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
380 BUILTIN(NumberPrototypeToFixed) { 380 BUILTIN(NumberPrototypeToFixed) {
381 HandleScope scope(isolate); 381 HandleScope scope(isolate);
382 Handle<Object> value = args.at<Object>(0); 382 Handle<Object> value = args.at(0);
383 Handle<Object> fraction_digits = args.atOrUndefined(isolate, 1); 383 Handle<Object> fraction_digits = args.atOrUndefined(isolate, 1);
384 384
385 // Unwrap the receiver {value}. 385 // Unwrap the receiver {value}.
386 if (value->IsJSValue()) { 386 if (value->IsJSValue()) {
387 value = handle(Handle<JSValue>::cast(value)->value(), isolate); 387 value = handle(Handle<JSValue>::cast(value)->value(), isolate);
388 } 388 }
389 if (!value->IsNumber()) { 389 if (!value->IsNumber()) {
390 THROW_NEW_ERROR_RETURN_FAILURE( 390 THROW_NEW_ERROR_RETURN_FAILURE(
391 isolate, NewTypeError(MessageTemplate::kNotGeneric, 391 isolate, NewTypeError(MessageTemplate::kNotGeneric,
392 isolate->factory()->NewStringFromAsciiChecked( 392 isolate->factory()->NewStringFromAsciiChecked(
(...skipping 22 matching lines...) Expand all
415 char* const str = DoubleToFixedCString( 415 char* const str = DoubleToFixedCString(
416 value_number, static_cast<int>(fraction_digits_number)); 416 value_number, static_cast<int>(fraction_digits_number));
417 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str); 417 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
418 DeleteArray(str); 418 DeleteArray(str);
419 return *result; 419 return *result;
420 } 420 }
421 421
422 // ES6 section 20.1.3.4 Number.prototype.toLocaleString ( [ r1 [ , r2 ] ] ) 422 // ES6 section 20.1.3.4 Number.prototype.toLocaleString ( [ r1 [ , r2 ] ] )
423 BUILTIN(NumberPrototypeToLocaleString) { 423 BUILTIN(NumberPrototypeToLocaleString) {
424 HandleScope scope(isolate); 424 HandleScope scope(isolate);
425 Handle<Object> value = args.at<Object>(0); 425 Handle<Object> value = args.at(0);
426 426
427 // Unwrap the receiver {value}. 427 // Unwrap the receiver {value}.
428 if (value->IsJSValue()) { 428 if (value->IsJSValue()) {
429 value = handle(Handle<JSValue>::cast(value)->value(), isolate); 429 value = handle(Handle<JSValue>::cast(value)->value(), isolate);
430 } 430 }
431 if (!value->IsNumber()) { 431 if (!value->IsNumber()) {
432 THROW_NEW_ERROR_RETURN_FAILURE( 432 THROW_NEW_ERROR_RETURN_FAILURE(
433 isolate, NewTypeError(MessageTemplate::kNotGeneric, 433 isolate, NewTypeError(MessageTemplate::kNotGeneric,
434 isolate->factory()->NewStringFromAsciiChecked( 434 isolate->factory()->NewStringFromAsciiChecked(
435 "Number.prototype.toLocaleString"))); 435 "Number.prototype.toLocaleString")));
436 } 436 }
437 437
438 // Turn the {value} into a String. 438 // Turn the {value} into a String.
439 return *isolate->factory()->NumberToString(value); 439 return *isolate->factory()->NumberToString(value);
440 } 440 }
441 441
442 // ES6 section 20.1.3.5 Number.prototype.toPrecision ( precision ) 442 // ES6 section 20.1.3.5 Number.prototype.toPrecision ( precision )
443 BUILTIN(NumberPrototypeToPrecision) { 443 BUILTIN(NumberPrototypeToPrecision) {
444 HandleScope scope(isolate); 444 HandleScope scope(isolate);
445 Handle<Object> value = args.at<Object>(0); 445 Handle<Object> value = args.at(0);
446 Handle<Object> precision = args.atOrUndefined(isolate, 1); 446 Handle<Object> precision = args.atOrUndefined(isolate, 1);
447 447
448 // Unwrap the receiver {value}. 448 // Unwrap the receiver {value}.
449 if (value->IsJSValue()) { 449 if (value->IsJSValue()) {
450 value = handle(Handle<JSValue>::cast(value)->value(), isolate); 450 value = handle(Handle<JSValue>::cast(value)->value(), isolate);
451 } 451 }
452 if (!value->IsNumber()) { 452 if (!value->IsNumber()) {
453 THROW_NEW_ERROR_RETURN_FAILURE( 453 THROW_NEW_ERROR_RETURN_FAILURE(
454 isolate, NewTypeError(MessageTemplate::kNotGeneric, 454 isolate, NewTypeError(MessageTemplate::kNotGeneric,
455 isolate->factory()->NewStringFromAsciiChecked( 455 isolate->factory()->NewStringFromAsciiChecked(
(...skipping 23 matching lines...) Expand all
479 char* const str = DoubleToPrecisionCString( 479 char* const str = DoubleToPrecisionCString(
480 value_number, static_cast<int>(precision_number)); 480 value_number, static_cast<int>(precision_number));
481 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str); 481 Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
482 DeleteArray(str); 482 DeleteArray(str);
483 return *result; 483 return *result;
484 } 484 }
485 485
486 // ES6 section 20.1.3.6 Number.prototype.toString ( [ radix ] ) 486 // ES6 section 20.1.3.6 Number.prototype.toString ( [ radix ] )
487 BUILTIN(NumberPrototypeToString) { 487 BUILTIN(NumberPrototypeToString) {
488 HandleScope scope(isolate); 488 HandleScope scope(isolate);
489 Handle<Object> value = args.at<Object>(0); 489 Handle<Object> value = args.at(0);
490 Handle<Object> radix = args.atOrUndefined(isolate, 1); 490 Handle<Object> radix = args.atOrUndefined(isolate, 1);
491 491
492 // Unwrap the receiver {value}. 492 // Unwrap the receiver {value}.
493 if (value->IsJSValue()) { 493 if (value->IsJSValue()) {
494 value = handle(Handle<JSValue>::cast(value)->value(), isolate); 494 value = handle(Handle<JSValue>::cast(value)->value(), isolate);
495 } 495 }
496 if (!value->IsNumber()) { 496 if (!value->IsNumber()) {
497 THROW_NEW_ERROR_RETURN_FAILURE( 497 THROW_NEW_ERROR_RETURN_FAILURE(
498 isolate, NewTypeError(MessageTemplate::kNotGeneric, 498 isolate, NewTypeError(MessageTemplate::kNotGeneric,
499 isolate->factory()->NewStringFromAsciiChecked( 499 isolate->factory()->NewStringFromAsciiChecked(
(...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 TF_BUILTIN(StrictNotEqual, CodeStubAssembler) { 1606 TF_BUILTIN(StrictNotEqual, CodeStubAssembler) {
1607 Node* lhs = Parameter(0); 1607 Node* lhs = Parameter(0);
1608 Node* rhs = Parameter(1); 1608 Node* rhs = Parameter(1);
1609 Node* context = Parameter(2); 1609 Node* context = Parameter(2);
1610 1610
1611 Return(StrictEqual(kNegateResult, lhs, rhs, context)); 1611 Return(StrictEqual(kNegateResult, lhs, rhs, context));
1612 } 1612 }
1613 1613
1614 } // namespace internal 1614 } // namespace internal
1615 } // namespace v8 1615 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins/builtins-math.cc ('k') | src/builtins/builtins-object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698