diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/JavaScriptCore/dfg/DFGCapabilities.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGCapabilities.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGCapabilities.cpp | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGCapabilities.cpp b/Source/JavaScriptCore/dfg/DFGCapabilities.cpp index 869751372..1f58e1cc8 100644 --- a/Source/JavaScriptCore/dfg/DFGCapabilities.cpp +++ b/Source/JavaScriptCore/dfg/DFGCapabilities.cpp @@ -33,6 +33,41 @@ namespace JSC { namespace DFG { #if ENABLE(DFG_JIT) +bool mightCompileEval(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); +} +bool mightCompileProgram(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); +} +bool mightCompileFunctionForCall(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); +} +bool mightCompileFunctionForConstruct(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); +} + +bool mightInlineFunctionForCall(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumFunctionForCallInlineCandidateInstructionCount() + && !codeBlock->ownerExecutable()->needsActivation() + && codeBlock->ownerExecutable()->isInliningCandidate(); +} +bool mightInlineFunctionForClosureCall(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumFunctionForClosureCallInlineCandidateInstructionCount() + && !codeBlock->ownerExecutable()->needsActivation() + && codeBlock->ownerExecutable()->isInliningCandidate(); +} +bool mightInlineFunctionForConstruct(CodeBlock* codeBlock) +{ + return codeBlock->instructionCount() <= Options::maximumFunctionForConstructInlineCandidateInstructionCount() + && !codeBlock->ownerExecutable()->needsActivation() + && codeBlock->ownerExecutable()->isInliningCandidate(); +} static inline void debugFail(CodeBlock* codeBlock, OpcodeID opcodeID, bool result) { @@ -53,7 +88,6 @@ static inline void debugFail(CodeBlock* codeBlock, OpcodeID opcodeID, Capability if (result == CannotCompile) dataLogF("Cannot handle code block %p because of opcode %s.\n", codeBlock, opcodeNames[opcodeID]); else { - ASSERT(result == ShouldProfile); dataLogF("Cannot compile code block %p because of opcode %s, but inlining might be possible.\n", codeBlock, opcodeNames[opcodeID]); } #else @@ -66,7 +100,7 @@ static inline void debugFail(CodeBlock* codeBlock, OpcodeID opcodeID, Capability template<typename ReturnType, ReturnType (*canHandleOpcode)(OpcodeID, CodeBlock*, Instruction*)> ReturnType canHandleOpcodes(CodeBlock* codeBlock, ReturnType initialValue) { - Interpreter* interpreter = codeBlock->globalData()->interpreter; + Interpreter* interpreter = codeBlock->vm()->interpreter; Instruction* instructionsBegin = codeBlock->instructions().begin(); unsigned instructionCount = codeBlock->instructions().size(); ReturnType result = initialValue; @@ -87,7 +121,7 @@ ReturnType canHandleOpcodes(CodeBlock* codeBlock, ReturnType initialValue) FOR_EACH_OPCODE_ID(DEFINE_OP) #undef DEFINE_OP default: - ASSERT_NOT_REACHED(); + RELEASE_ASSERT_NOT_REACHED(); break; } } |