summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt
diff options
context:
space:
mode:
authorfpizlo@apple.com <fpizlo@apple.com@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2012-01-17 00:53:40 +0000
committerfpizlo@apple.com <fpizlo@apple.com@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2012-01-17 00:53:40 +0000
commiteec0581e00a676f3d726ddfc99212c8b8fc7e4c7 (patch)
treefcba0ec7c1e67ec877fbd2327e01fb27a038b6ab /third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt
parenta83b5dfc2b8e3e7541c82df4daafadbb23e204ae (diff)
downloadchromium_src-eec0581e00a676f3d726ddfc99212c8b8fc7e4c7.zip
chromium_src-eec0581e00a676f3d726ddfc99212c8b8fc7e4c7.tar.gz
chromium_src-eec0581e00a676f3d726ddfc99212c8b8fc7e4c7.tar.bz2
DFG should be able to do JS and custom getter caching
https://bugs.webkit.org/show_bug.cgi?id=76361 <rdar://problem/10698060> Source/JavaScriptCore: Reviewed by Geoff Garen. Added the ability to cache JS getter calls and custom getter calls in the DFG. Most of this is pretty mundane, since the old JIT supported this functionality as well. But a couple interesting things had to happen: - There are now two variants of GetById: GetById, which works as before, and GetByIdFlush, which flushes registers prior to doing the GetById. Only GetByIdFlush can be used for caching getters. We detect which GetById style to use by looking at the inline caches of the old JIT. - Exception handling for getter calls planted in stubs uses a separate lookup handler routine, which uses the CodeOrigin stored in the StructureStubInfo. This is a 40% speed-up in the Dromaeo DOM Traversal average. It removes all of the DFG regressions we saw in Dromaeo. This is neutral on SunSpider, V8, and Kraken. * bytecode/StructureStubInfo.h: * dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::execute): * dfg/DFGAssemblyHelpers.h: (JSC::DFG::AssemblyHelpers::emitExceptionCheck): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::willNeedFlush): (JSC::DFG::ByteCodeParser::parseBlock): * dfg/DFGCCallHelpers.h: (JSC::DFG::CCallHelpers::setupResults): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::link): * dfg/DFGJITCompiler.h: (JSC::DFG::PropertyAccessRecord::PropertyAccessRecord): (JSC::DFG::JITCompiler::addExceptionCheck): * dfg/DFGNode.h: (JSC::DFG::Node::hasIdentifier): (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPropagator.cpp: (JSC::DFG::Propagator::propagateNodePredictions): * dfg/DFGRepatch.cpp: (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheckSetResult): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::compile): LayoutTests: Reviewed by Geoff Garen. * fast/js/dfg-custom-getter-expected.txt: Added. * fast/js/dfg-custom-getter-throw-expected.txt: Added. * fast/js/dfg-custom-getter-throw-inlined-expected.txt: Added. * fast/js/dfg-custom-getter-throw-inlined.html: Added. * fast/js/dfg-custom-getter-throw.html: Added. * fast/js/dfg-custom-getter.html: Added. * fast/js/dfg-getter-expected.txt: Added. * fast/js/dfg-getter-throw-expected.txt: Added. * fast/js/dfg-getter-throw.html: Added. * fast/js/dfg-getter.html: Added. * fast/js/script-tests/dfg-custom-getter-throw-inlined.js: Added. (foo): (baz): (bar): * fast/js/script-tests/dfg-custom-getter-throw.js: Added. (foo): (bar): * fast/js/script-tests/dfg-custom-getter.js: Added. (foo): * fast/js/script-tests/dfg-getter-throw.js: Added. (foo): (bar): * fast/js/script-tests/dfg-getter.js: Added. (foo): git-svn-id: svn://svn.chromium.org/blink/trunk@105107 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt')
-rw-r--r--third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt210
1 files changed, 210 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt b/third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt
new file mode 100644
index 0000000..bf9e3b1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/js/dfg-custom-getter-expected.txt
@@ -0,0 +1,210 @@
+Tests that DFG custom getter caching does not break the world.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS foo() is " DIV #text DIV #text SCRIPT"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Some stuff
+More stuff