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 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 // multiplying with pointer size. | 462 // multiplying with pointer size. |
463 if (length > 0x800000) { | 463 if (length > 0x800000) { |
464 throw %MakeRangeError('stack_overflow', []); | 464 throw %MakeRangeError('stack_overflow', []); |
465 } | 465 } |
466 | 466 |
467 if (!IS_SPEC_FUNCTION(this)) { | 467 if (!IS_SPEC_FUNCTION(this)) { |
468 throw %MakeTypeError('apply_non_function', [ %ToString(this), typeof this ])
; | 468 throw %MakeTypeError('apply_non_function', [ %ToString(this), typeof this ])
; |
469 } | 469 } |
470 | 470 |
471 // Make sure the arguments list has the right type. | 471 // Make sure the arguments list has the right type. |
472 if (args != null && !IS_ARRAY(args) && !IS_ARGUMENTS(args)) { | 472 if (args != null && !IS_SPEC_OBJECT(args)) { |
473 throw %MakeTypeError('apply_wrong_args', []); | 473 throw %MakeTypeError('apply_wrong_args', []); |
474 } | 474 } |
475 | 475 |
476 // Return the length which is the number of arguments to copy to the | 476 // Return the length which is the number of arguments to copy to the |
477 // stack. It is guaranteed to be a small integer at this point. | 477 // stack. It is guaranteed to be a small integer at this point. |
478 return length; | 478 return length; |
479 } | 479 } |
480 | 480 |
481 | 481 |
482 function APPLY_OVERFLOW(length) { | 482 function APPLY_OVERFLOW(length) { |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 throw %MakeTypeError('cannot_convert_to_primitive', []); | 664 throw %MakeTypeError('cannot_convert_to_primitive', []); |
665 } | 665 } |
666 | 666 |
667 | 667 |
668 // NOTE: Setting the prototype for Array must take place as early as | 668 // NOTE: Setting the prototype for Array must take place as early as |
669 // possible due to code generation for array literals. When | 669 // possible due to code generation for array literals. When |
670 // generating code for a array literal a boilerplate array is created | 670 // generating code for a array literal a boilerplate array is created |
671 // that is cloned when running the code. It is essential that the | 671 // that is cloned when running the code. It is essential that the |
672 // boilerplate gets the right prototype. | 672 // boilerplate gets the right prototype. |
673 %FunctionSetPrototype($Array, new $Array(0)); | 673 %FunctionSetPrototype($Array, new $Array(0)); |
OLD | NEW |