OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 if (extra_args == NEEDS_CALLED_FUNCTION) { | 56 if (extra_args == NEEDS_CALLED_FUNCTION) { |
57 num_extra_args = 1; | 57 num_extra_args = 1; |
58 Register scratch = ebx; | 58 Register scratch = ebx; |
59 __ pop(scratch); // Save return address. | 59 __ pop(scratch); // Save return address. |
60 __ push(edi); | 60 __ push(edi); |
61 __ push(scratch); // Restore return address. | 61 __ push(scratch); // Restore return address. |
62 } else { | 62 } else { |
63 ASSERT(extra_args == NO_EXTRA_ARGUMENTS); | 63 ASSERT(extra_args == NO_EXTRA_ARGUMENTS); |
64 } | 64 } |
65 | 65 |
66 // JumpToRuntime expects eax to contain the number of arguments | 66 // JumpToExternalReference expects eax to contain the number of arguments |
67 // including the receiver and the extra arguments. | 67 // including the receiver and the extra arguments. |
68 __ add(Operand(eax), Immediate(num_extra_args + 1)); | 68 __ add(Operand(eax), Immediate(num_extra_args + 1)); |
69 __ JumpToRuntime(ExternalReference(id)); | 69 __ JumpToExternalReference(ExternalReference(id)); |
70 } | 70 } |
71 | 71 |
72 | 72 |
73 void Builtins::Generate_JSConstructCall(MacroAssembler* masm) { | 73 void Builtins::Generate_JSConstructCall(MacroAssembler* masm) { |
74 // ----------- S t a t e ------------- | 74 // ----------- S t a t e ------------- |
75 // -- eax: number of arguments | 75 // -- eax: number of arguments |
76 // -- edi: constructor function | 76 // -- edi: constructor function |
77 // ----------------------------------- | 77 // ----------------------------------- |
78 | 78 |
79 Label non_function_call; | 79 Label non_function_call; |
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1249 // Dont adapt arguments. | 1249 // Dont adapt arguments. |
1250 // ------------------------------------------- | 1250 // ------------------------------------------- |
1251 __ bind(&dont_adapt_arguments); | 1251 __ bind(&dont_adapt_arguments); |
1252 __ jmp(Operand(edx)); | 1252 __ jmp(Operand(edx)); |
1253 } | 1253 } |
1254 | 1254 |
1255 | 1255 |
1256 #undef __ | 1256 #undef __ |
1257 | 1257 |
1258 } } // namespace v8::internal | 1258 } } // namespace v8::internal |
OLD | NEW |