Modified: trunk/Source/_javascript_Core/ChangeLog (153353 => 153354)
--- trunk/Source/_javascript_Core/ChangeLog 2013-07-25 23:07:06 UTC (rev 153353)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-07-25 23:14:51 UTC (rev 153354)
@@ -1,3 +1,18 @@
+2013-07-25 Zan Dobersek <[email protected]>
+
+ REGRESSION(FTL): Most layout tests crashes
+ https://bugs.webkit.org/show_bug.cgi?id=119089
+
+ Reviewed by Oliver Hunt.
+
+ * runtime/ExecutionHarness.h:
+ (JSC::prepareForExecution): Move prepareForExecutionImpl call into its own statement. This prevents the GCC-compiled
+ code to create the PassOwnPtr<JSC::JITCode> (intended as a parameter to the installOptimizedCode call) from the jitCode
+ RefPtr<JSC::JITCode> parameter before the latter was actually given a proper value through the prepareForExecutionImpl call.
+ Currently it's created beforehand and therefor holds a null pointer before it's anchored as the JIT code in
+ JSC::CodeBlock::setJITCode, which later indirectly causes assertions in JSC::CodeBlock::jitCompile.
+ (JSC::prepareFunctionForExecution): Ditto for prepareFunctionForExecutionImpl.
+
2013-07-25 Brent Fulgham <[email protected]>
[Windows] Unreviewed build fix.
Modified: trunk/Source/_javascript_Core/runtime/ExecutionHarness.h (153353 => 153354)
--- trunk/Source/_javascript_Core/runtime/ExecutionHarness.h 2013-07-25 23:07:06 UTC (rev 153353)
+++ trunk/Source/_javascript_Core/runtime/ExecutionHarness.h 2013-07-25 23:14:51 UTC (rev 153354)
@@ -124,10 +124,8 @@
ExecState* exec, RefPtr<CodeBlockType>& sink, CodeBlockType* codeBlock,
RefPtr<JITCode>& jitCode, JITCode::JITType jitType, unsigned bytecodeIndex)
{
- return installOptimizedCode(
- prepareForExecutionImpl(
- exec, codeBlock, jitCode, jitType, bytecodeIndex),
- sink, codeBlock, jitCode, MacroAssemblerCodePtr(), 0);
+ CompilationResult result = prepareForExecutionImpl(exec, codeBlock, jitCode, jitType, bytecodeIndex);
+ return installOptimizedCode(result, sink, codeBlock, jitCode, MacroAssemblerCodePtr(), 0);
}
inline CompilationResult prepareFunctionForExecution(
@@ -136,11 +134,9 @@
int& numParameters, JITCode::JITType jitType, unsigned bytecodeIndex,
CodeSpecializationKind kind)
{
- return installOptimizedCode(
- prepareFunctionForExecutionImpl(
- exec, codeBlock, jitCode, jitCodeWithArityCheck, jitType,
- bytecodeIndex, kind),
- sink, codeBlock, jitCode, jitCodeWithArityCheck, &numParameters);
+ CompilationResult result = prepareFunctionForExecutionImpl(exec, codeBlock,
+ jitCode, jitCodeWithArityCheck, jitType, bytecodeIndex, kind);
+ return installOptimizedCode(result, sink, codeBlock, jitCode, jitCodeWithArityCheck, &numParameters);
}
#if ENABLE(DFG_JIT)