Changeset 47530 in webkit for trunk/JavaScriptCore/jit/JITOpcodes.cpp
- Timestamp:
- Aug 19, 2009, 5:02:24 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITOpcodes.cpp
r47412 r47530 238 238 #if COMPILER(MSVC) || PLATFORM(LINUX) 239 239 // ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register) 240 addPtr(Imm32(OBJECT_OFFSETOF(NativeCallFrameStructure, result)), stackPointerRegister, X86 ::ecx);240 addPtr(Imm32(OBJECT_OFFSETOF(NativeCallFrameStructure, result)), stackPointerRegister, X86Registers::ecx); 241 241 242 242 // Plant callee 243 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86 ::eax);244 storePtr(X86 ::eax, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, callee)));243 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86Registers::eax); 244 storePtr(X86Registers::eax, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, callee))); 245 245 246 246 // Plant callframe 247 move(callFrameRegister, X86 ::edx);248 249 call(Address(X86 ::eax, OBJECT_OFFSETOF(JSFunction, m_data)));247 move(callFrameRegister, X86Registers::edx); 248 249 call(Address(X86Registers::eax, OBJECT_OFFSETOF(JSFunction, m_data))); 250 250 251 251 // JSValue is a non-POD type, so eax points to it 252 emitLoad(0, regT1, regT0, X86 ::eax);252 emitLoad(0, regT1, regT0, X86Registers::eax); 253 253 #else 254 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86 ::edx); // callee255 move(callFrameRegister, X86 ::ecx); // callFrame256 call(Address(X86 ::edx, OBJECT_OFFSETOF(JSFunction, m_data)));254 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86Registers::edx); // callee 255 move(callFrameRegister, X86Registers::ecx); // callFrame 256 call(Address(X86Registers::edx, OBJECT_OFFSETOF(JSFunction, m_data))); 257 257 #endif 258 258 … … 1576 1576 1577 1577 #if PLATFORM(X86_64) 1578 emitGetFromCallFrameHeader32(RegisterFile::ArgumentCount, X86 ::ecx);1578 emitGetFromCallFrameHeader32(RegisterFile::ArgumentCount, X86Registers::ecx); 1579 1579 1580 1580 // Allocate stack space for our arglist … … 1583 1583 1584 1584 // Set up arguments 1585 subPtr(Imm32(1), X86 ::ecx); // Don't include 'this' in argcount1585 subPtr(Imm32(1), X86Registers::ecx); // Don't include 'this' in argcount 1586 1586 1587 1587 // Push argcount 1588 storePtr(X86 ::ecx, Address(stackPointerRegister, OBJECT_OFFSETOF(ArgList, m_argCount)));1588 storePtr(X86Registers::ecx, Address(stackPointerRegister, OBJECT_OFFSETOF(ArgList, m_argCount))); 1589 1589 1590 1590 // Calculate the start of the callframe header, and store in edx 1591 addPtr(Imm32(-RegisterFile::CallFrameHeaderSize * (int32_t)sizeof(Register)), callFrameRegister, X86 ::edx);1591 addPtr(Imm32(-RegisterFile::CallFrameHeaderSize * (int32_t)sizeof(Register)), callFrameRegister, X86Registers::edx); 1592 1592 1593 1593 // Calculate start of arguments as callframe header - sizeof(Register) * argcount (ecx) 1594 mul32(Imm32(sizeof(Register)), X86 ::ecx, X86::ecx);1595 subPtr(X86 ::ecx, X86::edx);1594 mul32(Imm32(sizeof(Register)), X86Registers::ecx, X86Registers::ecx); 1595 subPtr(X86Registers::ecx, X86Registers::edx); 1596 1596 1597 1597 // push pointer to arguments 1598 storePtr(X86 ::edx, Address(stackPointerRegister, OBJECT_OFFSETOF(ArgList, m_args)));1598 storePtr(X86Registers::edx, Address(stackPointerRegister, OBJECT_OFFSETOF(ArgList, m_args))); 1599 1599 1600 1600 // ArgList is passed by reference so is stackPointerRegister 1601 move(stackPointerRegister, X86 ::ecx);1601 move(stackPointerRegister, X86Registers::ecx); 1602 1602 1603 1603 // edx currently points to the first argument, edx-sizeof(Register) points to 'this' 1604 loadPtr(Address(X86 ::edx, -(int32_t)sizeof(Register)), X86::edx);1605 1606 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86 ::esi);1607 1608 move(callFrameRegister, X86 ::edi);1609 1610 call(Address(X86 ::esi, OBJECT_OFFSETOF(JSFunction, m_data)));1604 loadPtr(Address(X86Registers::edx, -(int32_t)sizeof(Register)), X86Registers::edx); 1605 1606 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86Registers::esi); 1607 1608 move(callFrameRegister, X86Registers::edi); 1609 1610 call(Address(X86Registers::esi, OBJECT_OFFSETOF(JSFunction, m_data))); 1611 1611 1612 1612 addPtr(Imm32(sizeof(ArgList)), stackPointerRegister); … … 1677 1677 #if COMPILER(MSVC) || PLATFORM(LINUX) 1678 1678 // ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register) 1679 addPtr(Imm32(OBJECT_OFFSETOF(NativeCallFrameStructure, result)), stackPointerRegister, X86 ::ecx);1679 addPtr(Imm32(OBJECT_OFFSETOF(NativeCallFrameStructure, result)), stackPointerRegister, X86Registers::ecx); 1680 1680 1681 1681 // Plant callee 1682 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86 ::eax);1683 storePtr(X86 ::eax, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, callee)));1682 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86Registers::eax); 1683 storePtr(X86Registers::eax, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, callee))); 1684 1684 1685 1685 // Plant callframe 1686 move(callFrameRegister, X86 ::edx);1687 1688 call(Address(X86 ::eax, OBJECT_OFFSETOF(JSFunction, m_data)));1686 move(callFrameRegister, X86Registers::edx); 1687 1688 call(Address(X86Registers::eax, OBJECT_OFFSETOF(JSFunction, m_data))); 1689 1689 1690 1690 // JSValue is a non-POD type 1691 loadPtr(Address(X86 ::eax), X86::eax);1691 loadPtr(Address(X86Registers::eax), X86Registers::eax); 1692 1692 #else 1693 1693 // Plant callee 1694 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86 ::edx);1694 emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86Registers::edx); 1695 1695 1696 1696 // Plant callframe 1697 move(callFrameRegister, X86 ::ecx);1698 call(Address(X86 ::edx, OBJECT_OFFSETOF(JSFunction, m_data)));1697 move(callFrameRegister, X86Registers::ecx); 1698 call(Address(X86Registers::edx, OBJECT_OFFSETOF(JSFunction, m_data))); 1699 1699 #endif 1700 1700 … … 1737 1737 1738 1738 // Setup arg4: This is a plain hack 1739 move(stackPointerRegister, ARM ::S0);1740 1741 move(ctiReturnRegister, ARM ::lr);1739 move(stackPointerRegister, ARMRegisters::S0); 1740 1741 move(ctiReturnRegister, ARMRegisters::lr); 1742 1742 call(Address(regT1, OBJECT_OFFSETOF(JSFunction, m_data))); 1743 1743
Note:
See TracChangeset
for help on using the changeset viewer.