Changeset 179478 in webkit for trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
- Timestamp:
- Feb 2, 2015, 10:38:08 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r179392 r179478 1 1 /* 2 * Copyright (C) 2008 , 2009, 2010, 2012, 2013, 2014Apple Inc. All rights reserved.2 * Copyright (C) 2008-2010, 2012-2015 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <[email protected]> 4 4 * … … 2175 2175 while (m_incomingCalls.begin() != m_incomingCalls.end()) 2176 2176 m_incomingCalls.begin()->remove(); 2177 while (m_incomingPolymorphicCalls.begin() != m_incomingPolymorphicCalls.end()) 2178 m_incomingPolymorphicCalls.begin()->remove(); 2177 2179 2178 2180 // Note that our outgoing calls will be removed from other CodeBlocks' … … 3041 3043 m_incomingCalls.push(incoming); 3042 3044 } 3045 3046 void CodeBlock::linkIncomingPolymorphicCall(ExecState* callerFrame, PolymorphicCallNode* incoming) 3047 { 3048 noticeIncomingCall(callerFrame); 3049 m_incomingPolymorphicCalls.push(incoming); 3050 } 3043 3051 #endif // ENABLE(JIT) 3044 3052 … … 3048 3056 m_incomingLLIntCalls.begin()->unlink(); 3049 3057 #if ENABLE(JIT) 3050 if (m_incomingCalls.isEmpty() )3058 if (m_incomingCalls.isEmpty() && m_incomingPolymorphicCalls.isEmpty()) 3051 3059 return; 3052 3060 RepatchBuffer repatchBuffer(this); 3053 3061 while (m_incomingCalls.begin() != m_incomingCalls.end()) 3054 3062 m_incomingCalls.begin()->unlink(repatchBuffer); 3063 while (m_incomingPolymorphicCalls.begin() != m_incomingPolymorphicCalls.end()) 3064 m_incomingPolymorphicCalls.begin()->unlink(repatchBuffer); 3055 3065 #endif // ENABLE(JIT) 3056 3066 } … … 3246 3256 3247 3257 if (Options::verboseCallLink()) 3248 dataLog("Noticing call link from ", *callerCodeBlock, " to ", *this, "\n"); 3249 3258 dataLog("Noticing call link from ", pointerDump(callerCodeBlock), " to ", *this, "\n"); 3259 3260 #if ENABLE(DFG_JIT) 3250 3261 if (!m_shouldAlwaysBeInlined) 3251 3262 return; 3252 3253 #if ENABLE(DFG_JIT) 3263 3264 if (!callerCodeBlock) { 3265 m_shouldAlwaysBeInlined = false; 3266 if (Options::verboseCallLink()) 3267 dataLog(" Clearing SABI because caller is native.\n"); 3268 return; 3269 } 3270 3254 3271 if (!hasBaselineJITProfiling()) 3255 3272 return; … … 3279 3296 } 3280 3297 3298 if (JITCode::isOptimizingJIT(callerCodeBlock->jitType())) { 3299 m_shouldAlwaysBeInlined = false; 3300 if (Options::verboseCallLink()) 3301 dataLog(" Clearing SABI bcause caller was already optimized.\n"); 3302 return; 3303 } 3304 3281 3305 if (callerCodeBlock->codeType() != FunctionCode) { 3282 3306 // If the caller is either eval or global code, assume that that won't be … … 3299 3323 return; 3300 3324 } 3301 3302 RELEASE_ASSERT(callerCodeBlock->m_capabilityLevelState != DFG::CapabilityLevelNotSet); 3325 3326 if (callerCodeBlock->m_capabilityLevelState == DFG::CapabilityLevelNotSet) { 3327 dataLog("In call from ", *callerCodeBlock, " ", callerFrame->codeOrigin(), " to ", *this, ": caller's DFG capability level is not set.\n"); 3328 CRASH(); 3329 } 3303 3330 3304 3331 if (canCompile(callerCodeBlock->m_capabilityLevelState))
Note:
See TracChangeset
for help on using the changeset viewer.