Changeset 121073 in webkit for trunk/Source/JavaScriptCore/jit/JITStubs.cpp
- Timestamp:
- Jun 22, 2012, 4:32:59 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/jit/JITStubs.cpp
r120499 r121073 1920 1920 1921 1921 #if ENABLE(DFG_JIT) 1922 DEFINE_STUB_FUNCTION(void, optimize _from_loop)1922 DEFINE_STUB_FUNCTION(void, optimize) 1923 1923 { 1924 1924 STUB_INIT_STACK_FRAME(stackFrame); … … 1926 1926 CallFrame* callFrame = stackFrame.callFrame; 1927 1927 CodeBlock* codeBlock = callFrame->codeBlock(); 1928 1929 1928 unsigned bytecodeIndex = stackFrame.args[0].int32(); 1930 1929 1931 1930 #if ENABLE(JIT_VERBOSE_OSR) 1932 dataLog("%p: Entered optimize _from_loop with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u\n", codeBlock, codeBlock->jitExecuteCounter(), codeBlock->reoptimizationRetryCounter(), codeBlock->optimizationDelayCounter());1931 dataLog("%p: Entered optimize with bytecodeIndex = %u, executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u\n", codeBlock, bytecodeIndex, codeBlock->jitExecuteCounter(), codeBlock->reoptimizationRetryCounter(), codeBlock->optimizationDelayCounter()); 1933 1932 #endif 1934 1933 … … 1938 1937 if (codeBlock->hasOptimizedReplacement()) { 1939 1938 #if ENABLE(JIT_VERBOSE_OSR) 1940 dataLog("Considering loopOSR into %p(%p) with success/fail %u/%u.\n", codeBlock, codeBlock->replacement(), codeBlock->replacement()->speculativeSuccessCounter(), codeBlock->replacement()->speculativeFailCounter());1939 dataLog("Considering OSR into %p(%p) with success/fail %u/%u.\n", codeBlock, codeBlock->replacement(), codeBlock->replacement()->speculativeSuccessCounter(), codeBlock->replacement()->speculativeFailCounter()); 1941 1940 #endif 1942 1941 if (codeBlock->replacement()->shouldReoptimizeFromLoopNow()) { … … 1960 1959 #if ENABLE(JIT_VERBOSE_OSR) 1961 1960 if (error) 1962 dataLog("WARNING: optimized compilation f rom loop failed.\n");1961 dataLog("WARNING: optimized compilation failed.\n"); 1963 1962 #else 1964 1963 UNUSED_PARAM(error); … … 1967 1966 if (codeBlock->replacement() == codeBlock) { 1968 1967 #if ENABLE(JIT_VERBOSE_OSR) 1969 dataLog("Optimizing %p f rom loop failed.\n", codeBlock);1968 dataLog("Optimizing %p failed.\n", codeBlock); 1970 1969 #endif 1971 1970 … … 1981 1980 if (void* address = DFG::prepareOSREntry(callFrame, optimizedCodeBlock, bytecodeIndex)) { 1982 1981 #if ENABLE(JIT_VERBOSE_OSR) 1983 dataLog("Optimizing %p from loopsucceeded, performing OSR after a delay of %u.\n", codeBlock, codeBlock->optimizationDelayCounter());1982 dataLog("Optimizing %p succeeded, performing OSR after a delay of %u.\n", codeBlock, codeBlock->optimizationDelayCounter()); 1984 1983 #endif 1985 1984 … … 1991 1990 1992 1991 #if ENABLE(JIT_VERBOSE_OSR) 1993 dataLog("Optimizing %p from loopsucceeded, OSR failed, after a delay of %u.\n", codeBlock, codeBlock->optimizationDelayCounter());1992 dataLog("Optimizing %p succeeded, OSR failed, after a delay of %u.\n", codeBlock, codeBlock->optimizationDelayCounter()); 1994 1993 #endif 1995 1994 … … 1999 1998 2000 1999 #if ENABLE(JIT_VERBOSE_OSR) 2001 dataLog("Encountered loopOSR failure into %p(%p) with success/fail %u/%u.\n", codeBlock, codeBlock->replacement(), codeBlock->replacement()->speculativeSuccessCounter(), codeBlock->replacement()->speculativeFailCounter());2000 dataLog("Encountered OSR failure into %p(%p) with success/fail %u/%u.\n", codeBlock, codeBlock->replacement(), codeBlock->replacement()->speculativeSuccessCounter(), codeBlock->replacement()->speculativeFailCounter()); 2002 2001 #endif 2003 2002 … … 2012 2011 if (optimizedCodeBlock->shouldReoptimizeNow()) { 2013 2012 #if ENABLE(JIT_VERBOSE_OSR) 2014 dataLog("Triggering reoptimization of %p(%p) ( in loopafter OSR fail).\n", codeBlock, codeBlock->replacement());2013 dataLog("Triggering reoptimization of %p(%p) (after OSR fail).\n", codeBlock, codeBlock->replacement()); 2015 2014 #endif 2016 2015 codeBlock->reoptimize(); … … 2021 2020 // longer and then try again. 2022 2021 codeBlock->optimizeAfterWarmUp(); 2023 }2024 2025 DEFINE_STUB_FUNCTION(void, optimize_from_ret)2026 {2027 STUB_INIT_STACK_FRAME(stackFrame);2028 2029 CallFrame* callFrame = stackFrame.callFrame;2030 CodeBlock* codeBlock = callFrame->codeBlock();2031 2032 #if ENABLE(JIT_VERBOSE_OSR)2033 dataLog("Entered optimize_from_ret with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u\n", codeBlock->jitExecuteCounter(), codeBlock->reoptimizationRetryCounter(), codeBlock->optimizationDelayCounter());2034 #endif2035 2036 if (!codeBlock->checkIfOptimizationThresholdReached())2037 return;2038 2039 if (codeBlock->hasOptimizedReplacement()) {2040 #if ENABLE(JIT_VERBOSE_OSR)2041 dataLog("Returning from old JIT call frame with optimized replacement %p(%p), with success/fail %u/%u", codeBlock, codeBlock->replacement(), codeBlock->replacement()->speculativeSuccessCounter(), codeBlock->replacement()->speculativeFailCounter());2042 CallFrame* callerFrame = callFrame->callerFrame();2043 if (callerFrame)2044 dataLog(", callerFrame = %p, returnPC = %p, caller code block = %p", callerFrame, callFrame->returnPC().value(), callerFrame->codeBlock());2045 dataLog("\n");2046 #endif2047 if (codeBlock->replacement()->shouldReoptimizeNow()) {2048 #if ENABLE(JIT_VERBOSE_OSR)2049 dataLog("Triggering reoptimization of %p(%p) (in return).\n", codeBlock, codeBlock->replacement());2050 #endif2051 codeBlock->reoptimize();2052 }2053 2054 codeBlock->optimizeSoon();2055 return;2056 }2057 2058 if (!codeBlock->shouldOptimizeNow()) {2059 #if ENABLE(JIT_VERBOSE_OSR)2060 dataLog("Delaying optimization for %p (in return) because of insufficient profiling.\n", codeBlock);2061 #endif2062 return;2063 }2064 2065 ScopeChainNode* scopeChain = callFrame->scopeChain();2066 2067 JSObject* error = codeBlock->compileOptimized(callFrame, scopeChain);2068 if (error)2069 dataLog("WARNING: optimized compilation from ret failed.\n");2070 2071 if (codeBlock->replacement() == codeBlock) {2072 #if ENABLE(JIT_VERBOSE_OSR)2073 dataLog("Optimizing %p from return failed.\n", codeBlock);2074 #endif2075 2076 ASSERT(codeBlock->getJITType() == JITCode::BaselineJIT);2077 codeBlock->dontOptimizeAnytimeSoon();2078 return;2079 }2080 2081 ASSERT(codeBlock->replacement()->getJITType() == JITCode::DFGJIT);2082 2083 #if ENABLE(JIT_VERBOSE_OSR)2084 dataLog("Optimizing %p from return succeeded after a delay of %u.\n", codeBlock, codeBlock->optimizationDelayCounter());2085 #endif2086 2087 codeBlock->optimizeSoon();2088 2022 } 2089 2023 #endif // ENABLE(DFG_JIT)
Note:
See TracChangeset
for help on using the changeset viewer.