OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 // Retrieve smi-tagged arguments count from the stack. | 326 // Retrieve smi-tagged arguments count from the stack. |
327 __ mov(eax, Operand(esp, 0)); | 327 __ mov(eax, Operand(esp, 0)); |
328 __ SmiUntag(eax); | 328 __ SmiUntag(eax); |
329 | 329 |
330 // Push the allocated receiver to the stack. We need two copies | 330 // Push the allocated receiver to the stack. We need two copies |
331 // because we may have to return the original one and the calling | 331 // because we may have to return the original one and the calling |
332 // conventions dictate that the called function pops the receiver. | 332 // conventions dictate that the called function pops the receiver. |
333 __ push(ebx); | 333 __ push(ebx); |
334 __ push(ebx); | 334 __ push(ebx); |
335 | 335 |
336 // Setup pointer to last argument. | 336 // Set up pointer to last argument. |
337 __ lea(ebx, Operand(ebp, StandardFrameConstants::kCallerSPOffset)); | 337 __ lea(ebx, Operand(ebp, StandardFrameConstants::kCallerSPOffset)); |
338 | 338 |
339 // Copy arguments and receiver to the expression stack. | 339 // Copy arguments and receiver to the expression stack. |
340 Label loop, entry; | 340 Label loop, entry; |
341 __ mov(ecx, eax); | 341 __ mov(ecx, eax); |
342 __ jmp(&entry); | 342 __ jmp(&entry); |
343 __ bind(&loop); | 343 __ bind(&loop); |
344 __ push(Operand(ebx, ecx, times_4, 0)); | 344 __ push(Operand(ebx, ecx, times_4, 0)); |
345 __ bind(&entry); | 345 __ bind(&entry); |
346 __ dec(ecx); | 346 __ dec(ecx); |
(...skipping 1377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 Deoptimizer::EntryGenerator generator(masm, Deoptimizer::OSR); | 1724 Deoptimizer::EntryGenerator generator(masm, Deoptimizer::OSR); |
1725 generator.Generate(); | 1725 generator.Generate(); |
1726 } | 1726 } |
1727 | 1727 |
1728 | 1728 |
1729 #undef __ | 1729 #undef __ |
1730 } | 1730 } |
1731 } // namespace v8::internal | 1731 } // namespace v8::internal |
1732 | 1732 |
1733 #endif // V8_TARGET_ARCH_IA32 | 1733 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |