| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 // Load the global function with the given index. | 161 // Load the global function with the given index. |
| 162 void LoadGlobalFunction(int index, Register function); | 162 void LoadGlobalFunction(int index, Register function); |
| 163 | 163 |
| 164 // Load the initial map from the global function. The registers | 164 // Load the initial map from the global function. The registers |
| 165 // function and map can be the same. | 165 // function and map can be the same. |
| 166 void LoadGlobalFunctionInitialMap(Register function, Register map); | 166 void LoadGlobalFunctionInitialMap(Register function, Register map); |
| 167 | 167 |
| 168 // Push and pop the registers that can hold pointers. | 168 // Push and pop the registers that can hold pointers. |
| 169 void PushSafepointRegisters() { pushad(); } | 169 void PushSafepointRegisters() { pushad(); } |
| 170 void PopSafepointRegisters() { popad(); } | 170 void PopSafepointRegisters() { popad(); } |
| 171 static int SafepointRegisterStackIndex(int reg_code); | 171 // Store the value in register/immediate src in the safepoint |
| 172 // register stack slot for register dst. |
| 173 void StoreToSafepointRegisterSlot(Register dst, Register src); |
| 174 void StoreToSafepointRegisterSlot(Register dst, Immediate src); |
| 175 void LoadFromSafepointRegisterSlot(Register dst, Register src); |
| 172 | 176 |
| 173 // --------------------------------------------------------------------------- | 177 // --------------------------------------------------------------------------- |
| 174 // JavaScript invokes | 178 // JavaScript invokes |
| 175 | 179 |
| 176 // Invoke the JavaScript function code by either calling or jumping. | 180 // Invoke the JavaScript function code by either calling or jumping. |
| 177 void InvokeCode(const Operand& code, | 181 void InvokeCode(const Operand& code, |
| 178 const ParameterCount& expected, | 182 const ParameterCount& expected, |
| 179 const ParameterCount& actual, | 183 const ParameterCount& actual, |
| 180 InvokeFlag flag, | 184 InvokeFlag flag, |
| 181 PostCallGenerator* post_call_generator = NULL); | 185 PostCallGenerator* post_call_generator = NULL); |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 660 bool generating_stub_; | 664 bool generating_stub_; |
| 661 bool allow_stub_calls_; | 665 bool allow_stub_calls_; |
| 662 // This handle will be patched with the code object on installation. | 666 // This handle will be patched with the code object on installation. |
| 663 Handle<Object> code_object_; | 667 Handle<Object> code_object_; |
| 664 | 668 |
| 665 // Helper functions for generating invokes. | 669 // Helper functions for generating invokes. |
| 666 void InvokePrologue(const ParameterCount& expected, | 670 void InvokePrologue(const ParameterCount& expected, |
| 667 const ParameterCount& actual, | 671 const ParameterCount& actual, |
| 668 Handle<Code> code_constant, | 672 Handle<Code> code_constant, |
| 669 const Operand& code_operand, | 673 const Operand& code_operand, |
| 670 Label* done, | 674 NearLabel* done, |
| 671 InvokeFlag flag, | 675 InvokeFlag flag, |
| 672 PostCallGenerator* post_call_generator = NULL); | 676 PostCallGenerator* post_call_generator = NULL); |
| 673 | 677 |
| 674 // Activation support. | 678 // Activation support. |
| 675 void EnterFrame(StackFrame::Type type); | 679 void EnterFrame(StackFrame::Type type); |
| 676 void LeaveFrame(StackFrame::Type type); | 680 void LeaveFrame(StackFrame::Type type); |
| 677 | 681 |
| 678 void EnterExitFramePrologue(); | 682 void EnterExitFramePrologue(); |
| 679 void EnterExitFrameEpilogue(int argc, bool save_doubles); | 683 void EnterExitFrameEpilogue(int argc, bool save_doubles); |
| 680 | 684 |
| 681 void LeaveExitFrameEpilogue(); | 685 void LeaveExitFrameEpilogue(); |
| 682 | 686 |
| 683 // Allocation support helpers. | 687 // Allocation support helpers. |
| 684 void LoadAllocationTopHelper(Register result, | 688 void LoadAllocationTopHelper(Register result, |
| 685 Register scratch, | 689 Register scratch, |
| 686 AllocationFlags flags); | 690 AllocationFlags flags); |
| 687 void UpdateAllocationTopHelper(Register result_end, Register scratch); | 691 void UpdateAllocationTopHelper(Register result_end, Register scratch); |
| 688 | 692 |
| 689 // Helper for PopHandleScope. Allowed to perform a GC and returns | 693 // Helper for PopHandleScope. Allowed to perform a GC and returns |
| 690 // NULL if gc_allowed. Does not perform a GC if !gc_allowed, and | 694 // NULL if gc_allowed. Does not perform a GC if !gc_allowed, and |
| 691 // possibly returns a failure object indicating an allocation failure. | 695 // possibly returns a failure object indicating an allocation failure. |
| 692 MUST_USE_RESULT MaybeObject* PopHandleScopeHelper(Register saved, | 696 MUST_USE_RESULT MaybeObject* PopHandleScopeHelper(Register saved, |
| 693 Register scratch, | 697 Register scratch, |
| 694 bool gc_allowed); | 698 bool gc_allowed); |
| 699 |
| 700 |
| 701 // Compute memory operands for safepoint stack slots. |
| 702 Operand SafepointRegisterSlot(Register reg); |
| 703 static int SafepointRegisterStackIndex(int reg_code); |
| 704 |
| 705 // Needs access to SafepointRegisterStackIndex for optimized frame |
| 706 // traversal. |
| 707 friend class OptimizedFrame; |
| 695 }; | 708 }; |
| 696 | 709 |
| 697 | 710 |
| 698 template <typename LabelType> | 711 template <typename LabelType> |
| 699 void MacroAssembler::InNewSpace(Register object, | 712 void MacroAssembler::InNewSpace(Register object, |
| 700 Register scratch, | 713 Register scratch, |
| 701 Condition cc, | 714 Condition cc, |
| 702 LabelType* branch) { | 715 LabelType* branch) { |
| 703 ASSERT(cc == equal || cc == not_equal); | 716 ASSERT(cc == equal || cc == not_equal); |
| 704 if (Serializer::enabled()) { | 717 if (Serializer::enabled()) { |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 } \ | 814 } \ |
| 802 masm-> | 815 masm-> |
| 803 #else | 816 #else |
| 804 #define ACCESS_MASM(masm) masm-> | 817 #define ACCESS_MASM(masm) masm-> |
| 805 #endif | 818 #endif |
| 806 | 819 |
| 807 | 820 |
| 808 } } // namespace v8::internal | 821 } } // namespace v8::internal |
| 809 | 822 |
| 810 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ | 823 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
| OLD | NEW |