Changeset 141363 in webkit
- Timestamp:
- Jan 30, 2013 6:40:33 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r141362 r141363 1 2013-01-30 Adam Barth <abarth@webkit.org> 2 3 The background HTML parser should be able to parse speculatively 4 https://bugs.webkit.org/show_bug.cgi?id=107753 5 6 Reviewed by Eric Seidel. 7 8 * fast/parser/document-write-partial-script-expected.txt: Added. 9 * fast/parser/document-write-partial-script.html: Added. 10 1 11 2013-01-30 Jessie Berlin <jberlin@apple.com> 2 12 -
trunk/Source/WebCore/CMakeLists.txt
r141296 r141363 1533 1533 html/canvas/WebGLVertexArrayObjectOES.cpp 1534 1534 1535 html/parser/BackgroundHTMLInputStream.cpp 1535 1536 html/parser/BackgroundHTMLParser.cpp 1536 1537 html/parser/CSSPreloadScanner.cpp -
trunk/Source/WebCore/ChangeLog
r141360 r141363 1 2013-01-30 Adam Barth <abarth@webkit.org> 2 3 The background HTML parser should be able to parse speculatively 4 https://bugs.webkit.org/show_bug.cgi?id=107753 5 6 Reviewed by Eric Seidel. 7 8 This patch adds the ability for the foreground HTML parser to 9 invalidate speculative parsing done by the background HTML parser. 10 Currently, we're a bit overly agressive an invalidate all speculations 11 on document.write. We plan to refine that in the future. 12 13 Test: fast/parser/document-write-partial-script.html 14 15 * WebCore.gypi: 16 * html/parser/BackgroundHTMLInputStream.cpp: Added. 17 (WebCore): 18 (WebCore::BackgroundHTMLInputStream::BackgroundHTMLInputStream): 19 (WebCore::BackgroundHTMLInputStream::append): 20 (WebCore::BackgroundHTMLInputStream::close): 21 (WebCore::BackgroundHTMLInputStream::createCheckpoint): 22 (WebCore::BackgroundHTMLInputStream::rewindTo): 23 * html/parser/BackgroundHTMLInputStream.h: Added. 24 (WebCore): 25 (BackgroundHTMLInputStream): 26 (WebCore::BackgroundHTMLInputStream::current): 27 (WebCore::BackgroundHTMLInputStream::Checkpoint::Checkpoint): 28 (Checkpoint): 29 * html/parser/BackgroundHTMLParser.cpp: 30 (WebCore::BackgroundHTMLParser::append): 31 (WebCore): 32 (WebCore::BackgroundHTMLParser::resumeFrom): 33 (WebCore::BackgroundHTMLParser::markEndOfFile): 34 (WebCore::BackgroundHTMLParser::pumpTokenizer): 35 (WebCore::BackgroundHTMLParser::sendTokensToMainThread): 36 (WebCore::BackgroundHTMLParser::resumeFromPartial): 37 * html/parser/BackgroundHTMLParser.h: 38 (BackgroundHTMLParser): 39 * html/parser/HTMLDocumentParser.cpp: 40 (WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser): 41 (WebCore::HTMLDocumentParser::didFailSpeculation): 42 (WebCore::HTMLDocumentParser::processParsedChunkFromBackgroundParser): 43 (WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution): 44 * html/parser/HTMLDocumentParser.h: 45 (ParsedChunk): 46 (HTMLDocumentParser): 47 1 48 2013-01-30 Nils Barth <nbarth@google.com> 2 49 -
trunk/Source/WebCore/GNUmakefile.list.am
r141296 r141363 3544 3544 Source/WebCore/html/NumberInputType.cpp \ 3545 3545 Source/WebCore/html/NumberInputType.h \ 3546 Source/WebCore/html/parser/BackgroundHTMLInputStream.cpp \ 3547 Source/WebCore/html/parser/BackgroundHTMLInputStream.h \ 3546 3548 Source/WebCore/html/parser/BackgroundHTMLParser.cpp \ 3547 3549 Source/WebCore/html/parser/BackgroundHTMLParser.h \ -
trunk/Source/WebCore/Target.pri
r141296 r141363 712 712 html/canvas/CanvasStyle.cpp \ 713 713 html/canvas/DataView.cpp \ 714 html/parser/BackgroundHTMLInputStream.cpp \ 714 715 html/parser/BackgroundHTMLParser.cpp \ 715 716 html/parser/CSSPreloadScanner.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r141296 r141363 3349 3349 'html/parser/BackgroundHTMLParser.cpp', 3350 3350 'html/parser/BackgroundHTMLParser.h', 3351 'html/parser/BackgroundHTMLInputStream.cpp', 3352 'html/parser/BackgroundHTMLInputStream.h', 3351 3353 'html/parser/CSSPreloadScanner.cpp', 3352 3354 'html/parser/CSSPreloadScanner.h', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r141296 r141363 64758 64758 > 64759 64759 <File 64760 RelativePath="..\html\parser\BackgroundHTMLInputStream.cpp" 64761 > 64762 </File> 64763 <File 64764 RelativePath="..\html\parser\BackgroundHTMLInputStream.h" 64765 > 64766 </File> 64767 <File 64760 64768 RelativePath="..\html\parser\BackgroundHTMLParser.cpp" 64761 64769 > -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r141296 r141363 4866 4866 <ClCompile Include="..\html\ValidityState.cpp" /> 4867 4867 <ClCompile Include="..\html\WeekInputType.cpp" /> 4868 <ClCompile Include="..\html\parser\BackgroundHTMLInputStream.cpp" /> 4868 4869 <ClCompile Include="..\html\parser\BackgroundHTMLParser.cpp" /> 4869 4870 <ClCompile Include="..\html\parser\CompactHTMLToken.cpp" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r141296 r141363 5626 5626 <Filter>html</Filter> 5627 5627 </ClCompile> 5628 <ClCompile Include="..\html\parser\BackgroundHTMLInputStream.cpp"> 5629 <Filter>html\parser</Filter> 5630 </ClCompile> 5628 5631 <ClCompile Include="..\html\parser\BackgroundHTMLParser.cpp"> 5629 5632 <Filter>html\parser</Filter> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r141296 r141363 3690 3690 97B38E28151C4273004622E9 /* DOMWindowNotifications.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97B38E23151C4264004622E9 /* DOMWindowNotifications.cpp */; }; 3691 3691 97B8FFD116AE7F960038388D /* CharacterReferenceParserInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */; }; 3692 97BC69DA1505F076001B74AC /* DatabaseBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69D61505F076001B74AC /* DatabaseBackend.cpp */; }; 3693 97BC69DB1505F076001B74AC /* DatabaseBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69D71505F076001B74AC /* DatabaseBackend.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3692 3694 97BC69DC1505F076001B74AC /* ChangeVersionWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69D81505F076001B74AC /* ChangeVersionWrapper.cpp */; }; 3693 3695 97BC69DD1505F076001B74AC /* ChangeVersionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69D91505F076001B74AC /* ChangeVersionWrapper.h */; }; … … 3696 3698 97BC6A231505F081001B74AC /* DatabaseAuthorizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E11505F081001B74AC /* DatabaseAuthorizer.cpp */; }; 3697 3699 97BC6A241505F081001B74AC /* DatabaseAuthorizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E21505F081001B74AC /* DatabaseAuthorizer.h */; }; 3698 97BC69DA1505F076001B74AC /* DatabaseBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69D61505F076001B74AC /* DatabaseBackend.cpp */; };3699 97BC69DB1505F076001B74AC /* DatabaseBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69D71505F076001B74AC /* DatabaseBackend.h */; settings = {ATTRIBUTES = (Private, ); }; };3700 3700 97BC6A251505F081001B74AC /* DatabaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E31505F081001B74AC /* DatabaseCallback.h */; }; 3701 3701 97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E51505F081001B74AC /* DatabaseContext.cpp */; }; 3702 3702 97BC6A281505F081001B74AC /* DatabaseContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E61505F081001B74AC /* DatabaseContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3703 3703 97BC6A291505F081001B74AC /* DatabaseDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E71505F081001B74AC /* DatabaseDetails.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3704 FE09DB49169E2D6E00622557 /* DatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE09DB46169E2D6E00622557 /* DatabaseError.h */; settings = {ATTRIBUTES = (Private, ); }; };3705 FEB26D28167A8F2A00FDD26B /* DatabaseServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */; };3706 FEAF6654167970320062D0C5 /* DatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FEAF6653167970070062D0C5 /* DatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; };3707 3704 97BC6A2A1505F081001B74AC /* DatabaseSync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97BC69E81505F081001B74AC /* DatabaseSync.cpp */; }; 3708 3705 97BC6A2B1505F081001B74AC /* DatabaseSync.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BC69E91505F081001B74AC /* DatabaseSync.h */; }; … … 3757 3754 97D2AD0314B823A60093DF32 /* DOMWindowProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97D2AD0114B823A60093DF32 /* DOMWindowProperty.cpp */; }; 3758 3755 97D2AD0414B823A60093DF32 /* DOMWindowProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 97D2AD0214B823A60093DF32 /* DOMWindowProperty.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3756 97DC69EC16B9F529008CFD6F /* BackgroundHTMLInputStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */; }; 3757 97DC69ED16B9F52C008CFD6F /* BackgroundHTMLInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */; }; 3759 3758 97DCE20110807C750057D394 /* HistoryController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97DCE1FF10807C750057D394 /* HistoryController.cpp */; }; 3760 3759 97DCE20210807C750057D394 /* HistoryController.h in Headers */ = {isa = PBXBuildFile; fileRef = 97DCE20010807C750057D394 /* HistoryController.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 6730 6729 FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */; }; 6731 6730 FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */; }; 6731 FE09DB49169E2D6E00622557 /* DatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE09DB46169E2D6E00622557 /* DatabaseError.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6732 6732 FE115FAB167988CD00249134 /* AbstractDatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FE115FA9167988CD00249134 /* AbstractDatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6733 6733 FE3371A2167C11D400EDB752 /* DatabaseBasicTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = FE3371A0167C11D400EDB752 /* DatabaseBasicTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 6745 6745 FE80DA710E9C472F000D6F75 /* JSPositionError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */; }; 6746 6746 FE80DA720E9C472F000D6F75 /* JSPositionError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */; }; 6747 FEAF6654167970320062D0C5 /* DatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FEAF6653167970070062D0C5 /* DatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6748 FEB26D28167A8F2A00FDD26B /* DatabaseServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */; }; 6747 6749 FEDEF84116797108000E444A /* DatabaseStrategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */; }; 6748 6750 FEDEF84216797108000E444A /* DatabaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = FEDEF84016797108000E444A /* DatabaseStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 11091 11093 97B38E25151C4264004622E9 /* DOMWindowNotifications.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DOMWindowNotifications.idl; path = Modules/notifications/DOMWindowNotifications.idl; sourceTree = "<group>"; }; 11092 11094 97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CharacterReferenceParserInlines.h; sourceTree = "<group>"; }; 11095 97BC69D61505F076001B74AC /* DatabaseBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackend.cpp; path = Modules/webdatabase/DatabaseBackend.cpp; sourceTree = "<group>"; }; 11096 97BC69D71505F076001B74AC /* DatabaseBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackend.h; path = Modules/webdatabase/DatabaseBackend.h; sourceTree = "<group>"; }; 11093 11097 97BC69D81505F076001B74AC /* ChangeVersionWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChangeVersionWrapper.cpp; path = Modules/webdatabase/ChangeVersionWrapper.cpp; sourceTree = "<group>"; }; 11094 11098 97BC69D91505F076001B74AC /* ChangeVersionWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChangeVersionWrapper.h; path = Modules/webdatabase/ChangeVersionWrapper.h; sourceTree = "<group>"; }; … … 11098 11102 97BC69E11505F081001B74AC /* DatabaseAuthorizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseAuthorizer.cpp; path = Modules/webdatabase/DatabaseAuthorizer.cpp; sourceTree = "<group>"; }; 11099 11103 97BC69E21505F081001B74AC /* DatabaseAuthorizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseAuthorizer.h; path = Modules/webdatabase/DatabaseAuthorizer.h; sourceTree = "<group>"; }; 11100 97BC69D61505F076001B74AC /* DatabaseBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseBackend.cpp; path = Modules/webdatabase/DatabaseBackend.cpp; sourceTree = "<group>"; };11101 97BC69D71505F076001B74AC /* DatabaseBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBackend.h; path = Modules/webdatabase/DatabaseBackend.h; sourceTree = "<group>"; };11102 11104 97BC69E31505F081001B74AC /* DatabaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseCallback.h; path = Modules/webdatabase/DatabaseCallback.h; sourceTree = "<group>"; }; 11103 11105 97BC69E41505F081001B74AC /* DatabaseCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DatabaseCallback.idl; path = Modules/webdatabase/DatabaseCallback.idl; sourceTree = "<group>"; }; … … 11105 11107 97BC69E61505F081001B74AC /* DatabaseContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseContext.h; path = Modules/webdatabase/DatabaseContext.h; sourceTree = "<group>"; }; 11106 11108 97BC69E71505F081001B74AC /* DatabaseDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseDetails.h; path = Modules/webdatabase/DatabaseDetails.h; sourceTree = "<group>"; }; 11107 FE09DB46169E2D6E00622557 /* DatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseError.h; path = Modules/webdatabase/DatabaseError.h; sourceTree = "<group>"; };11108 FEAF6653167970070062D0C5 /* DatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseServer.h; path = Modules/webdatabase/DatabaseServer.h; sourceTree = "<group>"; };11109 FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseServer.cpp; path = Modules/webdatabase/DatabaseServer.cpp; sourceTree = "<group>"; };11110 11109 97BC69E81505F081001B74AC /* DatabaseSync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseSync.cpp; path = Modules/webdatabase/DatabaseSync.cpp; sourceTree = "<group>"; }; 11111 11110 97BC69E91505F081001B74AC /* DatabaseSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseSync.h; path = Modules/webdatabase/DatabaseSync.h; sourceTree = "<group>"; }; … … 11175 11174 97D2AD0114B823A60093DF32 /* DOMWindowProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowProperty.cpp; sourceTree = "<group>"; }; 11176 11175 97D2AD0214B823A60093DF32 /* DOMWindowProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowProperty.h; sourceTree = "<group>"; }; 11176 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundHTMLInputStream.cpp; path = parser/BackgroundHTMLInputStream.cpp; sourceTree = "<group>"; }; 11177 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BackgroundHTMLInputStream.h; path = parser/BackgroundHTMLInputStream.h; sourceTree = "<group>"; }; 11177 11178 97DCE1FF10807C750057D394 /* HistoryController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HistoryController.cpp; sourceTree = "<group>"; }; 11178 11179 97DCE20010807C750057D394 /* HistoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryController.h; sourceTree = "<group>"; }; … … 14397 14398 FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferCallback.cpp; sourceTree = "<group>"; }; 14398 14399 FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBufferCallback.h; sourceTree = "<group>"; }; 14400 FE09DB46169E2D6E00622557 /* DatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseError.h; path = Modules/webdatabase/DatabaseError.h; sourceTree = "<group>"; }; 14399 14401 FE115FA9167988CD00249134 /* AbstractDatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractDatabaseServer.h; path = Modules/webdatabase/AbstractDatabaseServer.h; sourceTree = "<group>"; }; 14400 14402 FE3371A0167C11D400EDB752 /* DatabaseBasicTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseBasicTypes.h; path = Modules/webdatabase/DatabaseBasicTypes.h; sourceTree = "<group>"; }; … … 14413 14415 FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionError.cpp; sourceTree = "<group>"; }; 14414 14416 FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionError.h; sourceTree = "<group>"; }; 14417 FEAF6653167970070062D0C5 /* DatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DatabaseServer.h; path = Modules/webdatabase/DatabaseServer.h; sourceTree = "<group>"; }; 14418 FEB26D27167A8F2A00FDD26B /* DatabaseServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DatabaseServer.cpp; path = Modules/webdatabase/DatabaseServer.cpp; sourceTree = "<group>"; }; 14415 14419 FEDEF83F16797108000E444A /* DatabaseStrategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseStrategy.cpp; sourceTree = "<group>"; }; 14416 14420 FEDEF84016797108000E444A /* DatabaseStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseStrategy.h; sourceTree = "<group>"; }; … … 18577 18581 isa = PBXGroup; 18578 18582 children = ( 18583 97DC69E916B9F50E008CFD6F /* BackgroundHTMLInputStream.cpp */, 18584 97DC69EA16B9F50E008CFD6F /* BackgroundHTMLInputStream.h */, 18579 18585 979DC03116A7992100807794 /* BackgroundHTMLParser.cpp */, 18580 18586 979DC03216A7992100807794 /* BackgroundHTMLParser.h */, … … 26316 26322 2E07753416B1BD4C004D9936 /* MicroDataAttributeTokenList.h in Headers */, 26317 26323 2919A1E916B3376600787213 /* ContentFilter.h in Headers */, 26324 97DC69ED16B9F52C008CFD6F /* BackgroundHTMLInputStream.h in Headers */, 26318 26325 ); 26319 26326 runOnlyForDeploymentPostprocessing = 0; … … 29470 29477 2E07753116B1BD13004D9936 /* MicroDataAttributeTokenList.cpp in Sources */, 29471 29478 2919A1EB16B3378900787213 /* ContentFilterMac.mm in Sources */, 29479 97DC69EC16B9F529008CFD6F /* BackgroundHTMLInputStream.cpp in Sources */, 29472 29480 ); 29473 29481 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebCore/html/parser/BackgroundHTMLParser.cpp
r141070 r141363 95 95 void BackgroundHTMLParser::append(const String& input) 96 96 { 97 m_input.append(SegmentedString(input)); 97 m_input.append(input); 98 pumpTokenizer(); 99 } 100 101 void BackgroundHTMLParser::resumeFrom(const WeakPtr<HTMLDocumentParser>& parser, PassOwnPtr<HTMLToken> token, PassOwnPtr<HTMLTokenizer> tokenizer, HTMLInputCheckpoint checkpoint) 102 { 103 m_parser = parser; 104 m_token = token; 105 m_tokenizer = tokenizer; 106 m_input.rewindTo(checkpoint); 98 107 pumpTokenizer(); 99 108 } … … 111 120 const LChar endOfFileMarker = 0; 112 121 113 ASSERT(!m_input. isClosed());114 m_input.append(S egmentedString(String(&endOfFileMarker, 1)));122 ASSERT(!m_input.current().isClosed()); 123 m_input.append(String(&endOfFileMarker, 1)); 115 124 m_input.close(); 116 125 } … … 155 164 void BackgroundHTMLParser::pumpTokenizer() 156 165 { 157 while (m_tokenizer->nextToken(m_input , *m_token.get())) {158 m_pendingTokens->append(CompactHTMLToken(m_token.get(), TextPosition(m_input.current Line(), m_input.currentColumn())));166 while (m_tokenizer->nextToken(m_input.current(), *m_token.get())) { 167 m_pendingTokens->append(CompactHTMLToken(m_token.get(), TextPosition(m_input.current().currentLine(), m_input.current().currentColumn()))); 159 168 m_token->clear(); 160 169 … … 175 184 #endif 176 185 177 callOnMainThread(bind(&HTMLDocumentParser::didReceiveTokensFromBackgroundParser, m_parser, m_pendingTokens.release())); 186 OwnPtr<HTMLDocumentParser::ParsedChunk> chunk = adoptPtr(new HTMLDocumentParser::ParsedChunk); 187 chunk->tokens = m_pendingTokens.release(); 188 chunk->checkpoint = m_input.createCheckpoint(); 189 callOnMainThread(bind(&HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser, m_parser, chunk.release())); 178 190 179 191 m_pendingTokens = adoptPtr(new CompactHTMLTokenStream); … … 198 210 } 199 211 212 void BackgroundHTMLParser::resumeFromPartial(ParserIdentifier identifier, const WeakPtr<HTMLDocumentParser>& parser, PassOwnPtr<HTMLToken> token, PassOwnPtr<HTMLTokenizer> tokenizer, HTMLInputCheckpoint checkpoint) 213 { 214 if (BackgroundHTMLParser* backgroundParser = parserMap().backgroundParsers().get(identifier)) 215 backgroundParser->resumeFrom(parser, token, tokenizer, checkpoint); 216 } 217 200 218 void BackgroundHTMLParser::finishPartial(ParserIdentifier identifier) 201 219 { -
trunk/Source/WebCore/html/parser/BackgroundHTMLParser.h
r141070 r141363 29 29 #if ENABLE(THREADED_HTML_PARSER) 30 30 31 #include "BackgroundHTMLInputStream.h" 31 32 #include "CompactHTMLToken.h" 32 33 #include "HTMLParserOptions.h" … … 44 45 public: 45 46 void append(const String&); 47 void resumeFrom(const WeakPtr<HTMLDocumentParser>&, PassOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>, HTMLInputCheckpoint); 46 48 void finish(); 47 49 … … 54 56 static void stopPartial(ParserIdentifier); 55 57 static void appendPartial(ParserIdentifier, const String& input); 58 static void resumeFromPartial(ParserIdentifier, const WeakPtr<HTMLDocumentParser>&, PassOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>, HTMLInputCheckpoint); 56 59 static void finishPartial(ParserIdentifier); 57 60 … … 66 69 67 70 bool m_inForeignContent; // FIXME: We need a stack of foreign content markers. 68 SegmentedStringm_input;71 BackgroundHTMLInputStream m_input; 69 72 OwnPtr<HTMLToken> m_token; 70 73 OwnPtr<HTMLTokenizer> m_tokenizer; -
trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp
r141328 r141363 277 277 #if ENABLE(THREADED_HTML_PARSER) 278 278 279 void HTMLDocumentParser::didReceive TokensFromBackgroundParser(PassOwnPtr<CompactHTMLTokenStream> tokens)279 void HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk> chunk) 280 280 { 281 281 if (isWaitingForScripts()) { 282 m_pendingTokens.append(tokens); 283 return; 284 } 285 ASSERT(m_pendingTokens.isEmpty()); 286 processTokensFromBackgroundParser(tokens); 287 } 288 289 void HTMLDocumentParser::didFailSpeculation(PassOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>) 290 { 291 // FIXME: Tell the background parser to resume parsing with this token and tokenizer. 292 } 293 294 void HTMLDocumentParser::processTokensFromBackgroundParser(PassOwnPtr<CompactHTMLTokenStream> tokens) 282 m_speculations.append(chunk); 283 return; 284 } 285 ASSERT(m_speculations.isEmpty()); 286 processParsedChunkFromBackgroundParser(chunk); 287 } 288 289 void HTMLDocumentParser::didFailSpeculation(PassOwnPtr<HTMLToken> token, PassOwnPtr<HTMLTokenizer> tokenizer) 290 { 291 m_weakFactory.revokeAll(); 292 m_speculations.clear(); 293 294 ParserIdentifier identifier = ParserMap::identifierForParser(this); 295 HTMLParserThread::shared()->postTask(bind(&BackgroundHTMLParser::resumeFromPartial, 296 identifier, m_weakFactory.createWeakPtr(), token, tokenizer, m_currentChunk->checkpoint)); 297 } 298 299 void HTMLDocumentParser::processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk> chunk) 295 300 { 296 301 ASSERT(shouldUseThreading()); … … 299 304 // but we need to ensure it isn't deleted yet. 300 305 RefPtr<HTMLDocumentParser> protect(this); 306 307 ASSERT(!m_currentChunk); 308 m_currentChunk = chunk; 309 OwnPtr<CompactHTMLTokenStream> tokens = m_currentChunk->tokens.release(); 301 310 302 311 // FIXME: Pass in current input length. … … 330 339 } 331 340 341 m_currentChunk.clear(); 332 342 InspectorInstrumentation::didWriteHTML(cookie, lineNumber().zeroBasedInt()); 333 343 } … … 702 712 #if ENABLE(THREADED_HTML_PARSER) 703 713 if (shouldUseThreading()) { 704 while (!m_ pendingTokens.isEmpty()) {705 process TokensFromBackgroundParser(m_pendingTokens.takeFirst());714 while (!m_speculations.isEmpty()) { 715 processParsedChunkFromBackgroundParser(m_speculations.takeFirst()); 706 716 if (isWaitingForScripts() || isStopped()) 707 717 return; -
trunk/Source/WebCore/html/parser/HTMLDocumentParser.h
r141328 r141363 27 27 #define HTMLDocumentParser_h 28 28 29 #include "BackgroundHTMLInputStream.h" 29 30 #include "CachedResourceClient.h" 30 31 #include "FragmentScriptingPermission.h" … … 83 84 84 85 #if ENABLE(THREADED_HTML_PARSER) 85 void didReceiveTokensFromBackgroundParser(PassOwnPtr<CompactHTMLTokenStream>); 86 struct ParsedChunk { 87 OwnPtr<CompactHTMLTokenStream> tokens; 88 HTMLInputCheckpoint checkpoint; 89 }; 90 void didReceiveParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>); 86 91 #endif 87 92 … … 126 131 void stopBackgroundParser(); 127 132 void didFailSpeculation(PassOwnPtr<HTMLToken>, PassOwnPtr<HTMLTokenizer>); 128 void process TokensFromBackgroundParser(PassOwnPtr<CompactHTMLTokenStream>);133 void processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk>); 129 134 #endif 130 135 … … 173 178 174 179 #if ENABLE(THREADED_HTML_PARSER) 175 Deque<OwnPtr<CompactHTMLTokenStream> > m_pendingTokens; 180 OwnPtr<ParsedChunk> m_currentChunk; 181 Deque<OwnPtr<ParsedChunk> > m_speculations; 176 182 WeakPtrFactory<HTMLDocumentParser> m_weakFactory; 177 183 #endif
Note: See TracChangeset
for help on using the changeset viewer.