Skip to content
  • ggaren@apple.com's avatar
    JavaScriptCore: · 69e9ccfb
    ggaren@apple.com authored
    2008-10-01  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Darin Adler and Cameron Zwarich.
    
            Preliminary step toward dynamic recompilation: Standardized and
            simplified the parsing interface.
            
            The main goal in this patch is to make it easy to ask for a duplicate
            compilation, and get back a duplicate result -- same source URL, same
            debugger / profiler ID, same toString behavior, etc.
            
            The basic unit of compilation and evaluation is now SourceCode, which
            encompasses a SourceProvider, a range in that provider, and a starting
            line number.
    
            A SourceProvider now encompasses a source URL, and *is* a source ID,
            since a pointer is a unique identifier.
    
            * API/JSBase.cpp:
            (JSEvaluateScript):
            (JSCheckScriptSyntax): Provide a SourceCode to the Interpreter, since
            other APIs are no longer supported.
            
            * VM/CodeBlock.h:
            (JSC::EvalCodeCache::get): Provide a SourceCode to the Interpreter, since
            other APIs are no longer supported.
            (JSC::CodeBlock::CodeBlock): ASSERT something that used to be ASSERTed
            by our caller -- this is a better bottleneck.
    
            * VM/CodeGenerator.cpp:
            (JSC::CodeGenerator::CodeGenerator): Updated for the fact that
            FunctionBodyNode's parameters are no longer a WTF::Vector.
    
            * kjs/Arguments.cpp:
            (JSC::Arguments::Arguments): ditto
    
            * kjs/DebuggerCallFrame.cpp:
            (JSC::DebuggerCallFrame::evaluate): Provide a SourceCode to the Parser,
            since other APIs are no longer supported.
    
            * kjs/FunctionConstructor.cpp:
            (JSC::constructFunction): Provide a SourceCode to the Parser, since
            other APIs are no longer supported. Adopt FunctionBodyNode's new
            "finishParsing" API.
    
            * kjs/JSFunction.cpp:
            (JSC::JSFunction::lengthGetter):
            (JSC::JSFunction::getParameterName): Updated for the fact that
            FunctionBodyNode's parameters are no longer a wtf::Vector.
    
            * kjs/JSFunction.h: Nixed some cruft.
    
            * kjs/JSGlobalObjectFunctions.cpp:
            (JSC::globalFuncEval): Provide a SourceCode to the Parser, since
            other APIs are no longer supported. 
    
            * kjs/Parser.cpp:
            (JSC::Parser::parse): Require a SourceCode argument, instead of a bunch
            of broken out parameters. Stop tracking sourceId as an integer, since we
            use the SourceProvider pointer for this now. Don't clamp the
            startingLineNumber, since SourceCode does that now.
    
            * kjs/Parser.h:
            (JSC::Parser::parse): Standardized the parsing interface to require a
            SourceCode.
    
            * kjs/Shell.cpp:
            (functionRun):
            (functionLoad):
            (prettyPrintScript):
            (runWithScripts):
            (runInteractive): Provide a SourceCode to the Interpreter, since
            other APIs are no longer supported.
    
            * kjs/SourceProvider.h:
            (JSC::SourceProvider::SourceProvider):
            (JSC::SourceProvider::url):
            (JSC::SourceProvider::asId):
            (JSC::UStringSourceProvider::create):
            (JSC::UStringSourceProvider::UStringSourceProvider): Added new
            responsibilities described above.
    
            * kjs/SourceRange.h:
            (JSC::SourceCode::SourceCode):
            (JSC::SourceCode::toString):
            (JSC::SourceCode::provider):
            (JSC::SourceCode::firstLine):
            (JSC::SourceCode::data):
            (JSC::SourceCode::length): Added new responsibilities described above.
            Renamed SourceRange to SourceCode, based on review feedback. Added
            a makeSource function for convenience.
    
            * kjs/debugger.h: Provide a SourceCode to the client, since other APIs
            are no longer supported.
    
            * kjs/grammar.y: Provide startingLineNumber when creating a SourceCode.
    
            * kjs/debugger.h: Treat sourceId as intptr_t to avoid loss of precision
            on 64bit platforms.
    
            * kjs/interpreter.cpp:
            (JSC::Interpreter::checkSyntax):
            (JSC::Interpreter::evaluate):
            * kjs/interpreter.h: Require a SourceCode instead of broken out arguments.
    
            * kjs/lexer.cpp:
            (JSC::Lexer::setCode):
            * kjs/lexer.h:
            (JSC::Lexer::sourceRange): Fold together the SourceProvider and line number
            into a SourceCode. Fixed a bug where the Lexer would accidentally keep
            alive the last SourceProvider forever.
    
            * kjs/nodes.cpp:
            (JSC::ScopeNode::ScopeNode):
            (JSC::ProgramNode::ProgramNode):
            (JSC::ProgramNode::create):
            (JSC::EvalNode::EvalNode):
            (JSC::EvalNode::generateCode):
            (JSC::EvalNode::create):
            (JSC::FunctionBodyNode::FunctionBodyNode):
            (JSC::FunctionBodyNode::finishParsing):
            (JSC::FunctionBodyNode::create):
            (JSC::FunctionBodyNode::generateCode):
            (JSC::ProgramNode::generateCode):
            (JSC::FunctionBodyNode::paramString):
            * kjs/nodes.h:
            (JSC::ScopeNode::):
            (JSC::ScopeNode::sourceId):
            (JSC::FunctionBodyNode::):
            (JSC::FunctionBodyNode::parameterCount):
            (JSC::FuncExprNode::):
            (JSC::FuncDeclNode::): Store a SourceCode in all ScopeNodes, since
            SourceCode is now responsible for tracking URL, ID, etc. Streamlined
            some ad hoc FunctionBodyNode fixups into a "finishParsing" function, to
            help make clear what you need to do in order to finish parsing a
            FunctionBodyNode.
    
            * wtf/Vector.h:
            (WTF::::releaseBuffer): Don't ASSERT that releaseBuffer() is only called
            when buffer is not 0, since FunctionBodyNode is more than happy
            to get back a 0 buffer, and other functions like RefPtr::release() allow
            for 0, too.
    
    JavaScriptGlue:
    
    2008-10-01  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Darin Adler and Cameron Zwarich.
    
            * JSRun.cpp:
            (JSRun::Evaluate):
            (JSRun::CheckSyntax): Provide a SourceCode to the Interpreter, since
            other APIs are no longer supported.
    
    WebCore:
    
    2008-10-01  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Darin Adler and Cameron Zwarich.
    
            Updated for JavaScriptCore API changes: use a SourceCode instead of
            broken out parameters; treat sourceId as intptr_t.
    
            * ForwardingHeaders/kjs/SourceRange.h: Copied from ForwardingHeaders/kjs/SourceProvider.h.
            * bindings/js/JSXMLHttpRequestCustom.cpp:
            (WebCore::JSXMLHttpRequest::send):
            * bindings/js/ScriptController.cpp:
            (WebCore::ScriptController::evaluate):
            * bindings/js/StringSourceProvider.h:
            (WebCore::StringSourceProvider::create):
            (WebCore::StringSourceProvider::StringSourceProvider):
    
            (WebCore::makeSource): Added a makeSource function for convenience.
    
            * bindings/objc/WebScriptObject.mm:
            (-[WebScriptObject evaluateWebScript:]):
            * bridge/NP_jsobject.cpp:
            (_NPN_Evaluate):
            * bridge/jni/jni_jsobject.mm:
            (JavaJSObject::call):
            (JavaJSObject::eval):
            (JavaJSObject::getMember):
            (JavaJSObject::setMember):
            (JavaJSObject::removeMember):
    
            * bridge/jni/jni_runtime.h:
            (JSC::Bindings::JavaString::operator UString): Replaced the explicit
            ustring() function with an implicit operator because this class already
            holds a UString::rep.
    
            * page/Console.cpp:
            (WebCore::retrieveLastCaller):
            (WebCore::Console::trace):
            * page/InspectorController.cpp:
            (WebCore::jsStringRef):
            (WebCore::InspectorController::addBreakpoint):
            (WebCore::InspectorController::removeBreakpoint):
            (WebCore::InspectorController::didParseSource):
            (WebCore::InspectorController::failedToParseSource):
            * page/InspectorController.h:
            * page/JavaScriptCallFrame.cpp:
            (WebCore::JavaScriptCallFrame::JavaScriptCallFrame):
            * page/JavaScriptCallFrame.h:
            (WebCore::JavaScriptCallFrame::create):
            (WebCore::JavaScriptCallFrame::sourceIdentifier):
            (WebCore::JavaScriptCallFrame::update):
            * page/JavaScriptDebugListener.h:
            * page/JavaScriptDebugServer.cpp:
            (WebCore::JavaScriptDebugServer::addBreakpoint):
            (WebCore::JavaScriptDebugServer::removeBreakpoint):
            (WebCore::JavaScriptDebugServer::hasBreakpoint):
            (WebCore::dispatchDidParseSource):
            (WebCore::dispatchFailedToParseSource):
            (WebCore::JavaScriptDebugServer::sourceParsed):
            (WebCore::JavaScriptDebugServer::callEvent):
            (WebCore::JavaScriptDebugServer::atStatement):
            (WebCore::JavaScriptDebugServer::returnEvent):
            (WebCore::JavaScriptDebugServer::exception):
            (WebCore::JavaScriptDebugServer::willExecuteProgram):
            (WebCore::JavaScriptDebugServer::didExecuteProgram):
            (WebCore::JavaScriptDebugServer::didReachBreakpoint):
            * page/JavaScriptDebugServer.h:
            * page/inspector/ScriptsPanel.js: Renamed internal uses of sourceId and 
            sourceIdentifier to sourceID.
    
    WebKit/mac:
    
    2008-10-01  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Darin Adler and Cameron Zwarich.
    
            Updated for JavaScriptCore API changes: use a SourceCode instead of
            broken out parameters; treat sourceId as intptr_t.
            
            We still treat sourceId as int in some cases because of DashCode. See
            <rdar://problem/6263293> WebScriptDebugDelegate should use intptr_t for
            sourceId, not int.
    
            * WebView/WebScriptDebugger.h:
            * WebView/WebScriptDebugger.mm:
            (toNSString):
            (WebScriptDebugger::sourceParsed):
            (WebScriptDebugger::callEvent):
            (WebScriptDebugger::atStatement):
            (WebScriptDebugger::returnEvent):
            (WebScriptDebugger::exception):
            (WebScriptDebugger::willExecuteProgram):
            (WebScriptDebugger::didExecuteProgram):
            (WebScriptDebugger::didReachBreakpoint):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37184 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    69e9ccfb