Diff
Modified: trunk/LayoutTests/ChangeLog (155089 => 155090)
--- trunk/LayoutTests/ChangeLog 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/LayoutTests/ChangeLog 2013-09-05 03:09:57 UTC (rev 155090)
@@ -1,3 +1,15 @@
+2013-09-04 Filip Pizlo <[email protected]>
+
+ run-fast-jsc should work with new-school fast/js tests that loop until the DFG tiers up
+ https://bugs.webkit.org/show_bug.cgi?id=120697
+
+ Reviewed by Mark Hahnenberg.
+
+ * fast/js/resources/standalone-pre.js:
+ (testPassed):
+ (testFailed):
+ (dfgCompiled):
+
2013-09-04 Samuel White <[email protected]>
AX: when no other label on provided on form elements, WebKit should fall back to using @title
Modified: trunk/LayoutTests/fast/js/resources/standalone-pre.js (155089 => 155090)
--- trunk/LayoutTests/fast/js/resources/standalone-pre.js 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/LayoutTests/fast/js/resources/standalone-pre.js 2013-09-05 03:09:57 UTC (rev 155090)
@@ -2,6 +2,16 @@
var errorMessage;
var self = this;
+self.testRunner = {
+ neverInlineFunction: neverInlineFunction,
+ numberOfDFGCompiles: numberOfDFGCompiles
+};
+
+var silentTestPass, didPassSomeTestsSilently, didFailSomeTests;
+silentTestPass = false;
+didPassSomeTestsSilenty = false;
+didFaileSomeTests = false;
+
function description(msg)
{
print(msg);
@@ -21,11 +31,15 @@
function testPassed(msg)
{
- print("PASS", escapeString(msg));
+ if (silentTestPass)
+ didPassSomeTestsSilently = true;
+ else
+ print("PASS", escapeString(msg));
}
function testFailed(msg)
{
+ didFailSomeTests = true;
errorMessage = msg;
print("FAIL", escapeString(msg));
}
@@ -183,6 +197,10 @@
if (!errorMessage)
successfullyParsed = true;
shouldBeTrue("successfullyParsed");
+ if (silentTestPass && didPassSomeTestsSilently)
+ debug("Passed some tests silently.");
+ if (silentTestPass && didFailSomeTests)
+ debug("Some tests failed.");
debug("\nTEST COMPLETE\n");
}
Modified: trunk/Source/_javascript_Core/API/JSCTestRunnerUtils.cpp (155089 => 155090)
--- trunk/Source/_javascript_Core/API/JSCTestRunnerUtils.cpp 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/API/JSCTestRunnerUtils.cpp 2013-09-05 03:09:57 UTC (rev 155090)
@@ -27,55 +27,21 @@
#include "JSCTestRunnerUtils.h"
#include "APICast.h"
-#include "CodeBlock.h"
#include "Operations.h"
+#include "TestRunnerUtils.h"
namespace JSC {
-static FunctionExecutable* getExecutable(JSContextRef context, JSValueRef theFunctionValueRef)
-{
- ExecState* exec = toJS(context);
- JSValue theFunctionValue = toJS(exec, theFunctionValueRef);
-
- JSFunction* theFunction = jsDynamicCast<JSFunction*>(theFunctionValue);
- if (!theFunction)
- return 0;
-
- FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(
- theFunction->executable());
- return executable;
-}
-
JSValueRef numberOfDFGCompiles(JSContextRef context, JSValueRef theFunctionValueRef)
{
- bool pretendToHaveManyCompiles = false;
-#if ENABLE(DFG_JIT)
- if (!Options::useJIT() || !Options::useDFGJIT())
- pretendToHaveManyCompiles = true;
-#else
- pretendToHaveManyCompiles = true;
-#endif
-
- if (FunctionExecutable* executable = getExecutable(context, theFunctionValueRef)) {
- CodeBlock* baselineCodeBlock = executable->baselineCodeBlockFor(CodeForCall);
-
- if (!baselineCodeBlock)
- return JSValueMakeNumber(context, 0);
-
- if (pretendToHaveManyCompiles)
- return JSValueMakeNumber(context, 1000000.0);
- return JSValueMakeNumber(context, baselineCodeBlock->numberOfDFGCompiles());
- }
-
- return JSValueMakeUndefined(context);
+ ExecState* exec= toJS(context);
+ return toRef(exec, numberOfDFGCompiles(toJS(exec, theFunctionValueRef)));
}
JSValueRef setNeverInline(JSContextRef context, JSValueRef theFunctionValueRef)
{
- if (FunctionExecutable* executable = getExecutable(context, theFunctionValueRef))
- executable->setNeverInline(true);
-
- return JSValueMakeUndefined(context);
+ ExecState* exec= toJS(context);
+ return toRef(exec, setNeverInline(toJS(exec, theFunctionValueRef)));
}
} // namespace JSC
Modified: trunk/Source/_javascript_Core/CMakeLists.txt (155089 => 155090)
--- trunk/Source/_javascript_Core/CMakeLists.txt 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/CMakeLists.txt 2013-09-05 03:09:57 UTC (rev 155090)
@@ -390,6 +390,7 @@
runtime/StructureChain.cpp
runtime/StructureRareData.cpp
runtime/SymbolTable.cpp
+ runtime/TestRunnerUtils.cpp
runtime/TypedArrayController.cpp
runtime/TypedArrayType.cpp
runtime/VM.cpp
Modified: trunk/Source/_javascript_Core/ChangeLog (155089 => 155090)
--- trunk/Source/_javascript_Core/ChangeLog 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-09-05 03:09:57 UTC (rev 155090)
@@ -1,3 +1,28 @@
+2013-09-04 Filip Pizlo <[email protected]>
+
+ run-fast-jsc should work with new-school fast/js tests that loop until the DFG tiers up
+ https://bugs.webkit.org/show_bug.cgi?id=120697
+
+ Reviewed by Mark Hahnenberg.
+
+ * API/JSCTestRunnerUtils.cpp:
+ (JSC::numberOfDFGCompiles):
+ (JSC::setNeverInline):
+ * CMakeLists.txt:
+ * GNUmakefile.list.am:
+ * _javascript_Core.vcxproj/_javascript_Core.vcxproj:
+ * _javascript_Core.xcodeproj/project.pbxproj:
+ * Target.pri:
+ * jsc.cpp:
+ (GlobalObject::finishCreation):
+ (functionNeverInlineFunction):
+ (functionNumberOfDFGCompiles):
+ * runtime/TestRunnerUtils.cpp: Added.
+ (JSC::getExecutable):
+ (JSC::numberOfDFGCompiles):
+ (JSC::setNeverInline):
+ * runtime/TestRunnerUtils.h: Added.
+
2013-09-04 Mark Lam <[email protected]>
Renamed StackIterator to StackVisitor.
Modified: trunk/Source/_javascript_Core/GNUmakefile.list.am (155089 => 155090)
--- trunk/Source/_javascript_Core/GNUmakefile.list.am 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/GNUmakefile.list.am 2013-09-05 03:09:57 UTC (rev 155090)
@@ -1040,6 +1040,8 @@
Source/_javascript_Core/runtime/StructureTransitionTable.h \
Source/_javascript_Core/runtime/SymbolTable.cpp \
Source/_javascript_Core/runtime/SymbolTable.h \
+ Source/_javascript_Core/runtime/TestRunnerUtils.cpp \
+ Source/_javascript_Core/runtime/TestRunnerUtils.h \
Source/_javascript_Core/runtime/ToNativeFromValue.h \
Source/_javascript_Core/runtime/Tracing.h \
Source/_javascript_Core/runtime/TypedArrayAdaptors.h \
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj (155089 => 155090)
--- trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj 2013-09-05 03:09:57 UTC (rev 155090)
@@ -540,6 +540,7 @@
<ClCompile Include="..\runtime\StructureChain.cpp" />
<ClCompile Include="..\runtime\StructureRareData.cpp" />
<ClCompile Include="..\runtime\SymbolTable.cpp" />
+ <ClCompile Include="..\runtime\TestRunnerUtils.cpp" />
<ClCompile Include="..\runtime\TypedArrayController.cpp" />
<ClCompile Include="..\runtime\TypedArrayType.cpp" />
<ClCompile Include="..\runtime\VM.cpp" />
@@ -993,6 +994,7 @@
<ClInclude Include="..\runtime\StructureRareDataInlines.h" />
<ClInclude Include="..\runtime\StructureTransitionTable.h" />
<ClInclude Include="..\runtime\SymbolTable.h" />
+ <ClInclude Include="..\runtime\TestRunnerUtils.h" />
<ClInclude Include="..\runtime\Tracing.h" />
<ClInclude Include="..\runtime\ToNativeFromValue.h" />
<ClInclude Include="..\runtime\TypedArrayAdaptors.h" />
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (155089 => 155090)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2013-09-05 03:09:57 UTC (rev 155090)
@@ -303,6 +303,8 @@
0F9FC8C314E1B5FE00D52AE0 /* PolymorphicPutByIdList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */; };
0F9FC8C414E1B60000D52AE0 /* PolymorphicPutByIdList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F9FC8C514E1B60400D52AE0 /* PutKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9FC8C114E1B5FB00D52AE0 /* PutKind.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 0FA2C17B17D7CF84009D015F /* TestRunnerUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA2C17917D7CF84009D015F /* TestRunnerUtils.cpp */; };
+ 0FA2C17C17D7CF84009D015F /* TestRunnerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA2C17A17D7CF84009D015F /* TestRunnerUtils.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FA581BA150E952C00B9A2D9 /* DFGNodeFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */; };
0FA581BB150E953000B9A2D9 /* DFGNodeFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */; settings = {ATTRIBUTES = (Private, ); }; };
0FA581BC150E953000B9A2D9 /* DFGNodeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -1490,6 +1492,8 @@
0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolymorphicPutByIdList.cpp; sourceTree = "<group>"; };
0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolymorphicPutByIdList.h; sourceTree = "<group>"; };
0F9FC8C114E1B5FB00D52AE0 /* PutKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutKind.h; sourceTree = "<group>"; };
+ 0FA2C17917D7CF84009D015F /* TestRunnerUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestRunnerUtils.cpp; sourceTree = "<group>"; };
+ 0FA2C17A17D7CF84009D015F /* TestRunnerUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestRunnerUtils.h; sourceTree = "<group>"; };
0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNodeFlags.cpp; path = dfg/DFGNodeFlags.cpp; sourceTree = "<group>"; };
0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeFlags.h; path = dfg/DFGNodeFlags.h; sourceTree = "<group>"; };
0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeType.h; path = dfg/DFGNodeType.h; sourceTree = "<group>"; };
@@ -3350,6 +3354,8 @@
BC9041470EB9250900FE26FA /* StructureTransitionTable.h */,
0F919D2715856770004A4E7D /* SymbolTable.cpp */,
14A396A60CD2933100B5B4FF /* SymbolTable.h */,
+ 0FA2C17917D7CF84009D015F /* TestRunnerUtils.cpp */,
+ 0FA2C17A17D7CF84009D015F /* TestRunnerUtils.h */,
0F55989717C86C5600A1E543 /* ToNativeFromValue.h */,
5D53726D0E1C546B0021E549 /* Tracing.d */,
5D53726E0E1C54880021E549 /* Tracing.h */,
@@ -3836,6 +3842,7 @@
0F63945515D07057006A597C /* ArrayProfile.h in Headers */,
BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */,
BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */,
+ 0FA2C17C17D7CF84009D015F /* TestRunnerUtils.h in Headers */,
0FB7F39615ED8E4600F167B2 /* ArrayStorage.h in Headers */,
9688CB150ED12B4E001D649F /* AssemblerBuffer.h in Headers */,
86D3B2C510156BDE002865E7 /* AssemblerBufferWithConstantPool.h in Headers */,
@@ -5140,6 +5147,7 @@
0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */,
0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */,
0FF729B1166AD35C000F5BA3 /* ProfilerCompiledBytecode.cpp in Sources */,
+ 0FA2C17B17D7CF84009D015F /* TestRunnerUtils.cpp in Sources */,
0FF729B2166AD35C000F5BA3 /* ProfilerDatabase.cpp in Sources */,
0FF729B3166AD35C000F5BA3 /* ProfilerOrigin.cpp in Sources */,
0FF729B4166AD35C000F5BA3 /* ProfilerOriginStack.cpp in Sources */,
Modified: trunk/Source/_javascript_Core/Target.pri (155089 => 155090)
--- trunk/Source/_javascript_Core/Target.pri 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/Target.pri 2013-09-05 03:09:57 UTC (rev 155090)
@@ -398,6 +398,7 @@
runtime/StructureChain.cpp \
runtime/StructureRareData.cpp \
runtime/SymbolTable.cpp \
+ runtime/TestRunnerUtils.cpp \
runtime/TypedArrayController.cpp \
runtime/TypedArrayType.cpp \
runtime/VM.cpp \
Modified: trunk/Source/_javascript_Core/jsc.cpp (155089 => 155090)
--- trunk/Source/_javascript_Core/jsc.cpp 2013-09-05 03:04:58 UTC (rev 155089)
+++ trunk/Source/_javascript_Core/jsc.cpp 2013-09-05 03:09:57 UTC (rev 155090)
@@ -41,6 +41,7 @@
#include "SamplingTool.h"
#include "StackVisitor.h"
#include "StructureRareDataInlines.h"
+#include "TestRunnerUtils.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
@@ -115,6 +116,8 @@
static EncodedJSValue JSC_HOST_CALL functionCheckSyntax(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionReadline(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionPreciseTime(ExecState*);
+static EncodedJSValue JSC_HOST_CALL functionNeverInlineFunction(ExecState*);
+static EncodedJSValue JSC_HOST_CALL functionNumberOfDFGCompiles(ExecState*);
static NO_RETURN_WITH_VALUE EncodedJSValue JSC_HOST_CALL functionQuit(ExecState*);
#if ENABLE(SAMPLING_FLAGS)
@@ -232,6 +235,8 @@
addFunction(vm, "jscStack", functionJSCStack, 1);
addFunction(vm, "readline", functionReadline, 0);
addFunction(vm, "preciseTime", functionPreciseTime, 0);
+ addFunction(vm, "neverInlineFunction", functionNeverInlineFunction, 1);
+ addFunction(vm, "numberOfDFGCompiles", functionNumberOfDFGCompiles, 1);
#if ENABLE(SAMPLING_FLAGS)
addFunction(vm, "setSamplingFlags", functionSetSamplingFlags, 1);
addFunction(vm, "clearSamplingFlags", functionClearSamplingFlags, 1);
@@ -478,6 +483,16 @@
return JSValue::encode(jsNumber(currentTime()));
}
+EncodedJSValue JSC_HOST_CALL functionNeverInlineFunction(ExecState* exec)
+{
+ return JSValue::encode(setNeverInline(exec));
+}
+
+EncodedJSValue JSC_HOST_CALL functionNumberOfDFGCompiles(ExecState* exec)
+{
+ return JSValue::encode(numberOfDFGCompiles(exec));
+}
+
EncodedJSValue JSC_HOST_CALL functionQuit(ExecState*)
{
exit(EXIT_SUCCESS);
Added: trunk/Source/_javascript_Core/runtime/TestRunnerUtils.cpp (0 => 155090)
--- trunk/Source/_javascript_Core/runtime/TestRunnerUtils.cpp (rev 0)
+++ trunk/Source/_javascript_Core/runtime/TestRunnerUtils.cpp 2013-09-05 03:09:57 UTC (rev 155090)
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "TestRunnerUtils.h"
+
+#include "CodeBlock.h"
+#include "Operations.h"
+
+namespace JSC {
+
+static FunctionExecutable* getExecutable(JSValue theFunctionValue)
+{
+ JSFunction* theFunction = jsDynamicCast<JSFunction*>(theFunctionValue);
+ if (!theFunction)
+ return 0;
+
+ FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(
+ theFunction->executable());
+ return executable;
+}
+
+JSValue numberOfDFGCompiles(JSValue theFunctionValue)
+{
+ bool pretendToHaveManyCompiles = false;
+#if ENABLE(DFG_JIT)
+ if (!Options::useJIT() || !Options::useDFGJIT())
+ pretendToHaveManyCompiles = true;
+#else
+ pretendToHaveManyCompiles = true;
+#endif
+
+ if (FunctionExecutable* executable = getExecutable(theFunctionValue)) {
+ CodeBlock* baselineCodeBlock = executable->baselineCodeBlockFor(CodeForCall);
+
+ if (!baselineCodeBlock)
+ return jsNumber(0);
+
+ if (pretendToHaveManyCompiles)
+ return jsNumber(1000000.0);
+ return jsNumber(baselineCodeBlock->numberOfDFGCompiles());
+ }
+
+ return jsUndefined();
+}
+
+JSValue setNeverInline(JSValue theFunctionValue)
+{
+ if (FunctionExecutable* executable = getExecutable(theFunctionValue))
+ executable->setNeverInline(true);
+
+ return jsUndefined();
+}
+
+JSValue numberOfDFGCompiles(ExecState* exec)
+{
+ if (exec->argumentCount() < 1)
+ return jsUndefined();
+ return numberOfDFGCompiles(exec->argument(0));
+}
+
+JSValue setNeverInline(ExecState* exec)
+{
+ if (exec->argumentCount() < 1)
+ return jsUndefined();
+ return setNeverInline(exec->argument(0));
+}
+
+} // namespace JSC
+
Added: trunk/Source/_javascript_Core/runtime/TestRunnerUtils.h (0 => 155090)
--- trunk/Source/_javascript_Core/runtime/TestRunnerUtils.h (rev 0)
+++ trunk/Source/_javascript_Core/runtime/TestRunnerUtils.h 2013-09-05 03:09:57 UTC (rev 155090)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TestRunnerUtils_h
+#define TestRunnerUtils_h
+
+#include "JSCJSValue.h"
+
+namespace JSC {
+
+JS_EXPORT_PRIVATE JSValue numberOfDFGCompiles(JSValue function);
+JS_EXPORT_PRIVATE JSValue setNeverInline(JSValue function);
+
+JS_EXPORT_PRIVATE JSValue numberOfDFGCompiles(ExecState*);
+JS_EXPORT_PRIVATE JSValue setNeverInline(ExecState*);
+
+} // namespace JSC
+
+#endif // TestRunnerUtils_h