Changeset 117620 in webkit for trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp
- Timestamp:
- May 18, 2012, 1:42:14 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp
r117198 r117620 33 33 #include "DFGOperations.h" 34 34 #include "DFGRegisterBank.h" 35 #include "DFGSlowPathGenerator.h" 35 36 #include "DFGSpeculativeJIT.h" 36 37 #include "DFGThunks.h" … … 79 80 bool compiledSpeculative = speculative.compile(); 80 81 ASSERT_UNUSED(compiledSpeculative, compiledSpeculative); 81 82 linkOSRExits(); 83 82 } 83 84 void JITCompiler::compileExceptionHandlers() 85 { 84 86 // Iterate over the m_calls vector, checking for jumps to link. 85 87 bool didLinkExceptionCheck = false; … … 149 151 for (unsigned i = 0; i < m_propertyAccesses.size(); ++i) { 150 152 StructureStubInfo& info = m_codeBlock->structureStubInfo(i); 151 CodeLocationCall callReturnLocation = linkBuffer.locationOf(m_propertyAccesses[i].m_ functionCall);153 CodeLocationCall callReturnLocation = linkBuffer.locationOf(m_propertyAccesses[i].m_slowPathGenerator->call()); 152 154 info.codeOrigin = m_propertyAccesses[i].m_codeOrigin; 153 155 info.callReturnLocation = callReturnLocation; 154 info.patch.dfg.deltaCheckImmToCall = differenceBetweenCodePtr(linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCheckImmToCall), callReturnLocation);155 info.patch.dfg.deltaCallToStructCheck = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCallToStructCheck));156 info.patch.dfg.deltaCheckImmToCall = differenceBetweenCodePtr(linkBuffer.locationOf(m_propertyAccesses[i].m_structureImm), callReturnLocation); 157 info.patch.dfg.deltaCallToStructCheck = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_structureCheck)); 156 158 #if USE(JSVALUE64) 157 info.patch.dfg.deltaCallToLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCallToLoadOrStore));159 info.patch.dfg.deltaCallToLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_loadOrStore)); 158 160 #else 159 info.patch.dfg.deltaCallToTagLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCallToTagLoadOrStore));160 info.patch.dfg.deltaCallToPayloadLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCallToPayloadLoadOrStore));161 #endif 162 info.patch.dfg.deltaCallToSlowCase = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_ deltaCallToSlowCase));163 info.patch.dfg.deltaCallToDone = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_d eltaCallToDone));161 info.patch.dfg.deltaCallToTagLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_tagLoadOrStore)); 162 info.patch.dfg.deltaCallToPayloadLoadOrStore = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_payloadLoadOrStore)); 163 #endif 164 info.patch.dfg.deltaCallToSlowCase = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_slowPathGenerator->label())); 165 info.patch.dfg.deltaCallToDone = differenceBetweenCodePtr(callReturnLocation, linkBuffer.locationOf(m_propertyAccesses[i].m_done)); 164 166 info.patch.dfg.baseGPR = m_propertyAccesses[i].m_baseGPR; 165 167 #if USE(JSVALUE64) … … 200 202 compileBody(speculative); 201 203 204 // Generate slow path code. 205 speculative.runSlowPathGenerators(); 206 207 compileExceptionHandlers(); 208 linkOSRExits(); 209 202 210 // Create OSR entry trampolines if necessary. 203 211 speculative.createOSREntries(); … … 269 277 jump(fromArityCheck); 270 278 279 // Generate slow path code. 280 speculative.runSlowPathGenerators(); 281 282 compileExceptionHandlers(); 283 linkOSRExits(); 284 271 285 // Create OSR entry trampolines if necessary. 272 286 speculative.createOSREntries();
Note:
See TracChangeset
for help on using the changeset viewer.