Ignore:
Timestamp:
Sep 13, 2012, 6:50:17 PM (13 years ago)
Author:
[email protected]
Message:

Improve the SourceProvider hierarchy
https://bugs.webkit.org/show_bug.cgi?id=95635

Patch by Benjamin Poulain <[email protected]> on 2012-09-13
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

SourceProvider was designed to have subclasses magically handling the data without
decoding all of it. The virtual methods length() and getRange() were based
on these assumptions.

In practice, the magic was in our head, there is no implementation that takes
advantage of that.

SourceProvider is modified to adopt WebCore's ScriptSourceProvider::source() and base
everything on it.
The code using SourceProvider is also simplified.

  • interpreter/Interpreter.cpp:

(JSC::appendSourceToError): Keep a reference to the string instead of querying it for
each time it is used.

  • parser/Lexer.cpp:

(JSC::::setCode):
(JSC::::sourceCode):

  • parser/Parser.h:

(JSC::parse):

  • parser/SourceCode.h:

(JSC::SourceCode::SourceCode):
(JSC::SourceCode::subExpression):

  • parser/SourceProvider.h:

(SourceProvider):
(JSC::SourceProvider::getRange):

Source/WebCore:

Get rid of ScriptSourceProvider and StringSourceProvider, they have been made
useless by JavaScript updates.

On x86_64, this reduces the binary size by 6kb.

  • GNUmakefile.list.am:
  • Target.pri:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CachedScriptSourceProvider.h:

(WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider):

  • bindings/js/ScriptDebugServer.cpp:

(WebCore::ScriptDebugServer::updateCurrentStatementPosition):
(WebCore::ScriptDebugServer::dispatchDidParseSource):
(WebCore::ScriptDebugServer::dispatchFailedToParseSource):

  • bindings/js/ScriptSourceCode.h:

(WebCore::ScriptSourceCode::ScriptSourceCode):
(ScriptSourceCode):

  • bindings/js/ScriptSourceProvider.h: Removed.
  • bindings/js/StringSourceProvider.h: Removed.
  • bindings/js/WorkerScriptController.cpp:
  • bindings/objc/WebScriptObject.mm:
  • bridge/NP_jsobject.cpp:
  • bridge/jni/jni_jsobject.mm:

Source/WebKit/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm: Fix a #include abuse.
  • WebView/WebScriptDebugger.mm:

(toNSString): We can now use the (faster) implicit conversion
from String to NSString.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/parser/SourceCode.h

    r127191 r128542  
    4848            : m_provider(provider)
    4949            , m_startChar(0)
    50             , m_endChar(m_provider->length())
     50            , m_endChar(m_provider->source().length())
    5151            , m_firstLine(std::max(firstLine, 1))
    5252        {
     
    9898    inline SourceCode SourceCode::subExpression(unsigned openBrace, unsigned closeBrace, int firstLine)
    9999    {
    100         ASSERT((*provider()->data())[openBrace] == '{');
    101         ASSERT((*provider()->data())[closeBrace] == '}');
     100        ASSERT(provider()->source()[openBrace] == '{');
     101        ASSERT(provider()->source()[closeBrace] == '}');
    102102        return SourceCode(provider(), openBrace, closeBrace + 1, firstLine);
    103103    }
Note: See TracChangeset for help on using the changeset viewer.