Changeset 39261 in webkit for trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
- Timestamp:
- Dec 12, 2008, 5:39:38 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
r39229 r39261 47 47 #if !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) 48 48 49 void JIT::compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ident, unsigned i, unsigned propertyAccessInstructionIndex)49 void JIT::compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ident, unsigned i, unsigned) 50 50 { 51 51 // As for put_by_id, get_by_id requires the offset of the Structure and the offset of the access to be repatched. … … 56 56 emitGetVirtualRegister(baseVReg, X86::eax, i); 57 57 58 #ifdef NDEBUG59 UNUSED_PARAM(propertyAccessInstructionIndex);60 #endif61 62 #ifndef NDEBUG63 JmpDst coldPathBegin = __ label();64 #endif65 58 emitPutCTIArg(X86::eax, 0); 66 59 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 67 JmpSrc call = emitCTICall(i, Interpreter::cti_op_get_by_id_generic); 68 ASSERT(X86Assembler::getDifferenceBetweenLabels(coldPathBegin, call) == repatchOffsetGetByIdSlowCaseCall); 60 emitCTICall(i, Interpreter::cti_op_get_by_id_generic); 69 61 emitPutVirtualRegister(resultVReg); 70 71 // Track the location of the call; this will be used to recover repatch information.72 m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].callReturnLocation = call;73 62 } 74 63 … … 79 68 } 80 69 81 void JIT::compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVReg, unsigned i, unsigned propertyAccessInstructionIndex)70 void JIT::compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVReg, unsigned i, unsigned) 82 71 { 83 72 // In order to be able to repatch both the Structure, and the object offset, we store one pointer, … … 90 79 emitPutCTIArg(X86::eax, 0); 91 80 emitPutCTIArg(X86::edx, 8); 92 JmpSrc call = emitCTICall(i, Interpreter::cti_op_put_by_id_generic); 93 94 // Track the location of the call; this will be used to recover repatch information. 95 m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].callReturnLocation = call; 81 emitCTICall(i, Interpreter::cti_op_put_by_id_generic); 96 82 } 97 83 … … 137 123 // the distance from the call to the head of the slow case. 138 124 139 if (linkSlowCaseIfNotJSCell(iter, baseVReg)) 140 ++iter; 141 __ link(iter->from, __ label()); 125 linkSlowCaseIfNotJSCell(iter, baseVReg); 126 linkSlowCase(iter); 142 127 143 128 #ifndef NDEBUG … … 181 166 void JIT::compilePutByIdSlowCase(int baseVReg, Identifier* ident, int, unsigned i, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex) 182 167 { 183 if (linkSlowCaseIfNotJSCell(iter, baseVReg)) 184 ++iter; 185 __ link(iter->from, __ label()); 168 linkSlowCaseIfNotJSCell(iter, baseVReg); 169 linkSlowCase(iter); 186 170 187 171 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
Note:
See TracChangeset
for help on using the changeset viewer.