Changeset 179357 in webkit for trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
- Timestamp:
- Jan 29, 2015, 12:33:45 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r179015 r179357 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 * … … 2182 2182 while (m_incomingCalls.begin() != m_incomingCalls.end()) 2183 2183 m_incomingCalls.begin()->remove(); 2184 while (m_incomingPolymorphicCalls.begin() != m_incomingPolymorphicCalls.end()) 2185 m_incomingPolymorphicCalls.begin()->remove(); 2184 2186 2185 2187 // Note that our outgoing calls will be removed from other CodeBlocks' … … 3048 3050 m_incomingCalls.push(incoming); 3049 3051 } 3052 3053 void CodeBlock::linkIncomingPolymorphicCall(ExecState* callerFrame, PolymorphicCallNode* incoming) 3054 { 3055 noticeIncomingCall(callerFrame); 3056 m_incomingPolymorphicCalls.push(incoming); 3057 } 3050 3058 #endif // ENABLE(JIT) 3051 3059 … … 3055 3063 m_incomingLLIntCalls.begin()->unlink(); 3056 3064 #if ENABLE(JIT) 3057 if (m_incomingCalls.isEmpty() )3065 if (m_incomingCalls.isEmpty() && m_incomingPolymorphicCalls.isEmpty()) 3058 3066 return; 3059 3067 RepatchBuffer repatchBuffer(this); 3060 3068 while (m_incomingCalls.begin() != m_incomingCalls.end()) 3061 3069 m_incomingCalls.begin()->unlink(repatchBuffer); 3070 while (m_incomingPolymorphicCalls.begin() != m_incomingPolymorphicCalls.end()) 3071 m_incomingPolymorphicCalls.begin()->unlink(repatchBuffer); 3062 3072 #endif // ENABLE(JIT) 3063 3073 } … … 3253 3263 3254 3264 if (Options::verboseCallLink()) 3255 dataLog("Noticing call link from ", *callerCodeBlock, " to ", *this, "\n"); 3256 3265 dataLog("Noticing call link from ", pointerDump(callerCodeBlock), " to ", *this, "\n"); 3266 3267 #if ENABLE(DFG_JIT) 3257 3268 if (!m_shouldAlwaysBeInlined) 3258 3269 return; 3259 3260 #if ENABLE(DFG_JIT) 3270 3271 if (!callerCodeBlock) { 3272 m_shouldAlwaysBeInlined = false; 3273 if (Options::verboseCallLink()) 3274 dataLog(" Clearing SABI because caller is native.\n"); 3275 return; 3276 } 3277 3261 3278 if (!hasBaselineJITProfiling()) 3262 3279 return; … … 3286 3303 } 3287 3304 3305 if (JITCode::isOptimizingJIT(callerCodeBlock->jitType())) { 3306 m_shouldAlwaysBeInlined = false; 3307 if (Options::verboseCallLink()) 3308 dataLog(" Clearing SABI bcause caller was already optimized.\n"); 3309 return; 3310 } 3311 3288 3312 if (callerCodeBlock->codeType() != FunctionCode) { 3289 3313 // If the caller is either eval or global code, assume that that won't be … … 3306 3330 return; 3307 3331 } 3308 3309 RELEASE_ASSERT(callerCodeBlock->m_capabilityLevelState != DFG::CapabilityLevelNotSet); 3332 3333 if (callerCodeBlock->m_capabilityLevelState == DFG::CapabilityLevelNotSet) { 3334 dataLog("In call from ", *callerCodeBlock, " ", callerFrame->codeOrigin(), " to ", *this, ": caller's DFG capability level is not set.\n"); 3335 CRASH(); 3336 } 3310 3337 3311 3338 if (canCompile(callerCodeBlock->m_capabilityLevelState))
Note:
See TracChangeset
for help on using the changeset viewer.