OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 // This files contains runtime support implemented in JavaScript. | 5 // This files contains runtime support implemented in JavaScript. |
6 | 6 |
7 // CAUTION: Some of the functions specified in this file are called | 7 // CAUTION: Some of the functions specified in this file are called |
8 // directly from compiled code. These are the functions with names in | 8 // directly from compiled code. These are the functions with names in |
9 // ALL CAPS. The compiled code passes the first argument in 'this'. | 9 // ALL CAPS. The compiled code passes the first argument in 'this'. |
10 | 10 |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 if (%HasProperty(this, string)) return string; | 372 if (%HasProperty(this, string)) return string; |
373 return 0; | 373 return 0; |
374 } | 374 } |
375 | 375 |
376 | 376 |
377 function CALL_NON_FUNCTION() { | 377 function CALL_NON_FUNCTION() { |
378 var delegate = %GetFunctionDelegate(this); | 378 var delegate = %GetFunctionDelegate(this); |
379 if (!IS_FUNCTION(delegate)) { | 379 if (!IS_FUNCTION(delegate)) { |
380 var callsite = %RenderCallSite(); | 380 var callsite = %RenderCallSite(); |
381 if (callsite == "") callsite = typeof this; | 381 if (callsite == "") callsite = typeof this; |
382 throw %MakeTypeError(kCalledNonCallable, callsite); | 382 throw %MakeTypeError('called_non_callable', [callsite]); |
383 } | 383 } |
384 return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); | 384 return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); |
385 } | 385 } |
386 | 386 |
387 | 387 |
388 function CALL_NON_FUNCTION_AS_CONSTRUCTOR() { | 388 function CALL_NON_FUNCTION_AS_CONSTRUCTOR() { |
389 var delegate = %GetConstructorDelegate(this); | 389 var delegate = %GetConstructorDelegate(this); |
390 if (!IS_FUNCTION(delegate)) { | 390 if (!IS_FUNCTION(delegate)) { |
391 var callsite = %RenderCallSite(); | 391 var callsite = %RenderCallSite(); |
392 if (callsite == "") callsite = typeof this; | 392 if (callsite == "") callsite = typeof this; |
393 throw %MakeTypeError(kCalledNonCallable, callsite); | 393 throw %MakeTypeError('called_non_callable', [callsite]); |
394 } | 394 } |
395 return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); | 395 return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); |
396 } | 396 } |
397 | 397 |
398 | 398 |
399 function CALL_FUNCTION_PROXY() { | 399 function CALL_FUNCTION_PROXY() { |
400 var arity = %_ArgumentsLength() - 1; | 400 var arity = %_ArgumentsLength() - 1; |
401 var proxy = %_Arguments(arity); // The proxy comes in as an additional arg. | 401 var proxy = %_Arguments(arity); // The proxy comes in as an additional arg. |
402 var trap = %GetCallTrap(proxy); | 402 var trap = %GetCallTrap(proxy); |
403 return %Apply(trap, this, arguments, 0, arity); | 403 return %Apply(trap, this, arguments, 0, arity); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 // that takes care of more eventualities. | 456 // that takes care of more eventualities. |
457 if (IS_ARRAY(args)) { | 457 if (IS_ARRAY(args)) { |
458 length = args.length; | 458 length = args.length; |
459 if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength && | 459 if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength && |
460 IS_SPEC_FUNCTION(this)) { | 460 IS_SPEC_FUNCTION(this)) { |
461 return length; | 461 return length; |
462 } | 462 } |
463 } | 463 } |
464 | 464 |
465 if (!IS_SPEC_FUNCTION(this)) { | 465 if (!IS_SPEC_FUNCTION(this)) { |
466 throw %MakeTypeError(kCalledNonCallable, %ToString(this)); | 466 throw %MakeTypeError('called_non_callable', [ %ToString(this) ]); |
467 } | 467 } |
468 | 468 |
469 if (!IS_SPEC_OBJECT(args)) { | 469 if (!IS_SPEC_OBJECT(args)) { |
470 throw %MakeTypeError('reflect_apply_wrong_args', [ ]); | 470 throw %MakeTypeError('reflect_apply_wrong_args', [ ]); |
471 } | 471 } |
472 | 472 |
473 length = %ToLength(args.length); | 473 length = %ToLength(args.length); |
474 | 474 |
475 // We can handle any number of apply arguments if the stack is | 475 // We can handle any number of apply arguments if the stack is |
476 // big enough, but sanity check the value to avoid overflow when | 476 // big enough, but sanity check the value to avoid overflow when |
(...skipping 19 matching lines...) Expand all Loading... |
496 if (IS_ARRAY(args)) { | 496 if (IS_ARRAY(args)) { |
497 length = args.length; | 497 length = args.length; |
498 if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength && | 498 if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength && |
499 ctorOk && newTargetOk) { | 499 ctorOk && newTargetOk) { |
500 return length; | 500 return length; |
501 } | 501 } |
502 } | 502 } |
503 | 503 |
504 if (!ctorOk) { | 504 if (!ctorOk) { |
505 if (!IS_SPEC_FUNCTION(this)) { | 505 if (!IS_SPEC_FUNCTION(this)) { |
506 throw %MakeTypeError(kCalledNonCallable, %ToString(this)); | 506 throw %MakeTypeError('called_non_callable', [ %ToString(this) ]); |
507 } else { | 507 } else { |
508 throw %MakeTypeError('not_constructor', [ %ToString(this) ]); | 508 throw %MakeTypeError('not_constructor', [ %ToString(this) ]); |
509 } | 509 } |
510 } | 510 } |
511 | 511 |
512 if (!newTargetOk) { | 512 if (!newTargetOk) { |
513 if (!IS_SPEC_FUNCTION(newTarget)) { | 513 if (!IS_SPEC_FUNCTION(newTarget)) { |
514 throw %MakeTypeError(kCalledNonCallable, %ToString(newTarget)); | 514 throw %MakeTypeError('called_non_callable', [ %ToString(newTarget) ]); |
515 } else { | 515 } else { |
516 throw %MakeTypeError('not_constructor', [ %ToString(newTarget) ]); | 516 throw %MakeTypeError('not_constructor', [ %ToString(newTarget) ]); |
517 } | 517 } |
518 } | 518 } |
519 | 519 |
520 if (!IS_SPEC_OBJECT(args)) { | 520 if (!IS_SPEC_OBJECT(args)) { |
521 throw %MakeTypeError('reflect_construct_wrong_args', [ ]); | 521 throw %MakeTypeError('reflect_construct_wrong_args', [ ]); |
522 } | 522 } |
523 | 523 |
524 length = %ToLength(args.length); | 524 length = %ToLength(args.length); |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 | 785 |
786 /* ----------------------------------------------- | 786 /* ----------------------------------------------- |
787 - - - J a v a S c r i p t S t u b s - - - | 787 - - - J a v a S c r i p t S t u b s - - - |
788 ----------------------------------------------- | 788 ----------------------------------------------- |
789 */ | 789 */ |
790 | 790 |
791 function STRING_LENGTH_STUB(name) { | 791 function STRING_LENGTH_STUB(name) { |
792 var receiver = this; // implicit first parameter | 792 var receiver = this; // implicit first parameter |
793 return %_StringGetLength(%_JSValueGetValue(receiver)); | 793 return %_StringGetLength(%_JSValueGetValue(receiver)); |
794 } | 794 } |
OLD | NEW |