Changeset 120175 in webkit for trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
- Timestamp:
- Jun 13, 2012, 2:38:42 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
r120172 r120175 1415 1415 return appendCallWithExceptionCheck(operation); 1416 1416 } 1417 JITCompiler::Call callOperation(V_DFGOperation_W operation, WatchpointSet* watchpointSet)1418 {1419 m_jit.setupArguments(TrustedImmPtr(watchpointSet));1420 return appendCall(operation);1421 }1422 1417 template<typename FunctionType, typename ArgumentType1> 1423 1418 JITCompiler::Call callOperation(FunctionType operation, NoResultTag, ArgumentType1 arg1) … … 1678 1673 return appendCallWithExceptionCheck(operation); 1679 1674 } 1680 JITCompiler::Call callOperation(V_DFGOperation_W operation, WatchpointSet* watchpointSet)1681 {1682 m_jit.setupArguments(TrustedImmPtr(watchpointSet));1683 return appendCall(operation);1684 }1685 1675 template<typename FunctionType, typename ArgumentType1> 1686 1676 JITCompiler::Call callOperation(FunctionType operation, NoResultTag, ArgumentType1 arg1) … … 1803 1793 m_jit.move(GPRInfo::returnValueGPR, result); 1804 1794 return call; 1805 }1806 JITCompiler::Call appendCall(const FunctionPtr& function)1807 {1808 prepareForExternalCall();1809 return m_jit.appendCall(function);1810 1795 } 1811 1796 JITCompiler::Call appendCallWithExceptionCheckSetResult(const FunctionPtr& function, GPRReg result1, GPRReg result2) … … 2209 2194 speculationCheck(kind, jsValueSource, nodeUse.index(), jumpToFail, recovery); 2210 2195 } 2211 // Use this like you would use speculationCheck(), except that you don't pass it a jump2212 // (because you don't have to execute a branch; that's kind of the whole point), and you2213 // must register the returned Watchpoint with something relevant. In general, this should2214 // be used with extreme care. Use speculationCheck() unless you've got an amazing reason2215 // not to.2216 Watchpoint* speculationWatchpoint(ExitKind kind, JSValueSource jsValueSource, NodeIndex nodeIndex)2217 {2218 if (!m_compileOkay)2219 return 0;2220 ASSERT(at(m_compileIndex).canExit() || m_isCheckingArgumentTypes);2221 OSRExit& exit = m_jit.codeBlock()->osrExit(2222 m_jit.codeBlock()->appendOSRExit(2223 OSRExit(kind, jsValueSource,2224 m_jit.graph().methodOfGettingAValueProfileFor(nodeIndex),2225 JITCompiler::Jump(), this)));2226 exit.m_watchpointIndex = m_jit.codeBlock()->appendWatchpoint(2227 Watchpoint(m_jit.watchpointLabel()));2228 return &m_jit.codeBlock()->watchpoint(exit.m_watchpointIndex);2229 }2230 // The default for speculation watchpoints is that they're uncounted, because the2231 // act of firing a watchpoint invalidates it. So, future recompilations will not2232 // attempt to set this watchpoint again.2233 Watchpoint* speculationWatchpoint()2234 {2235 return speculationWatchpoint(UncountableWatchpoint, JSValueSource(), NoNode);2236 }2237 2196 void forwardSpeculationCheck(ExitKind kind, JSValueSource jsValueSource, NodeIndex nodeIndex, MacroAssembler::Jump jumpToFail, const ValueRecovery& valueRecovery) 2238 2197 {
Note:
See TracChangeset
for help on using the changeset viewer.