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 7730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7741 // Note that this is one more "argument" than the function expects | 7741 // Note that this is one more "argument" than the function expects |
7742 // so the out cell will have to be popped explicitly after returning | 7742 // so the out cell will have to be popped explicitly after returning |
7743 // from the function. | 7743 // from the function. |
7744 __ mov(Operand(esp, 1 * kPointerSize), ebx); // name. | 7744 __ mov(Operand(esp, 1 * kPointerSize), ebx); // name. |
7745 __ mov(Operand(esp, 2 * kPointerSize), eax); // arguments pointer. | 7745 __ mov(Operand(esp, 2 * kPointerSize), eax); // arguments pointer. |
7746 __ mov(ebx, esp); | 7746 __ mov(ebx, esp); |
7747 __ add(Operand(ebx), Immediate(3 * kPointerSize)); | 7747 __ add(Operand(ebx), Immediate(3 * kPointerSize)); |
7748 __ mov(Operand(esp, 0 * kPointerSize), ebx); // output | 7748 __ mov(Operand(esp, 0 * kPointerSize), ebx); // output |
7749 __ mov(Operand(esp, 3 * kPointerSize), Immediate(0)); // out cell. | 7749 __ mov(Operand(esp, 3 * kPointerSize), Immediate(0)); // out cell. |
7750 } | 7750 } |
7751 __ mov(eax, Immediate(ExternalReference(fun()))); | |
7752 // Call the api function! | 7751 // Call the api function! |
7753 __ call(Operand(eax)); | 7752 __ call(fun()->address(), RelocInfo::RUNTIME_ENTRY); |
7754 // Check if the function scheduled an exception. | 7753 // Check if the function scheduled an exception. |
7755 ExternalReference scheduled_exception_address = | 7754 ExternalReference scheduled_exception_address = |
7756 ExternalReference::scheduled_exception_address(); | 7755 ExternalReference::scheduled_exception_address(); |
7757 __ cmp(Operand::StaticVariable(scheduled_exception_address), | 7756 __ cmp(Operand::StaticVariable(scheduled_exception_address), |
7758 Immediate(Factory::the_hole_value())); | 7757 Immediate(Factory::the_hole_value())); |
7759 __ j(not_equal, &promote_scheduled_exception, not_taken); | 7758 __ j(not_equal, &promote_scheduled_exception, not_taken); |
7760 if (!kPassHandlesDirectly) { | 7759 if (!kPassHandlesDirectly) { |
7761 // The returned value is a pointer to the handle holding the result. | 7760 // The returned value is a pointer to the handle holding the result. |
7762 // Dereference this to get to the location. | 7761 // Dereference this to get to the location. |
7763 __ mov(eax, Operand(eax, 0)); | 7762 __ mov(eax, Operand(eax, 0)); |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8150 | 8149 |
8151 int CompareStub::MinorKey() { | 8150 int CompareStub::MinorKey() { |
8152 // Encode the two parameters in a unique 16 bit value. | 8151 // Encode the two parameters in a unique 16 bit value. |
8153 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); | 8152 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); |
8154 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); | 8153 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); |
8155 } | 8154 } |
8156 | 8155 |
8157 #undef __ | 8156 #undef __ |
8158 | 8157 |
8159 } } // namespace v8::internal | 8158 } } // namespace v8::internal |
OLD | NEW |