Changeset 37622 in webkit


Ignore:
Timestamp:
Oct 15, 2008 4:33:07 PM (15 years ago)
Author:
ggaren@apple.com
Message:

JavaScriptCore:

2008-10-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Cameron Zwarich.

Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
Start the debugger without reloading the inspected page

  • VM/CodeBlock.h: (JSC::EvalCodeCache::get): Updated for tweak to parsing API.
  • kjs/CollectorHeapIterator.h: Added. An iterator for the object heap, which we use to find all the live functions and recompile them.
  • kjs/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::evaluate): Updated for tweak to parsing API.
  • kjs/FunctionConstructor.cpp: (JSC::constructFunction): Updated for tweak to parsing API.
  • kjs/JSFunction.cpp: (JSC::JSFunction::JSFunction): Try to validate our SourceCode in debug builds by ASSERTing that it's syntactically valid. This doesn't catch all SourceCode bugs, but it catches a lot of them.
  • kjs/JSGlobalObjectFunctions.cpp: (JSC::globalFuncEval): Updated for tweak to parsing API.
  • kjs/Parser.cpp: (JSC::Parser::parse):
  • kjs/Parser.h: (JSC::Parser::parse): Tweaked the parser to make it possible to parse without an ExecState, and to allow the client to specify a debugger to notify (or not) about the source we parse. This allows the inspector to recompile even though no JavaScript is executing, then notify the debugger about all source code when it's done.
  • kjs/Shell.cpp: (prettyPrintScript): Updated for tweak to parsing API.
  • kjs/SourceRange.h: (JSC::SourceCode::isNull): Added to help with ASSERTs.
  • kjs/collector.cpp: (JSC::Heap::heapAllocate): (JSC::Heap::sweep): (JSC::Heap::primaryHeapBegin): (JSC::Heap::primaryHeapEnd):
  • kjs/collector.h: (JSC::): Moved a bunch of declarations around to enable compilation of CollectorHeapIterator.
  • kjs/interpreter.cpp: (JSC::Interpreter::checkSyntax): (JSC::Interpreter::evaluate): Updated for tweak to parsing API.
  • kjs/lexer.h: (JSC::Lexer::sourceCode): BUG FIX: Calculate SourceCode ranges relative to the SourceCode range in which we're lexing, otherwise nested functions that are compiled individually get SourceCode ranges that don't reflect their nesting.
  • kjs/nodes.cpp: (JSC::FunctionBodyNode::FunctionBodyNode): (JSC::FunctionBodyNode::finishParsing): (JSC::FunctionBodyNode::create): (JSC::FunctionBodyNode::copyParameters):
  • kjs/nodes.h: (JSC::ScopeNode::setSource): (JSC::FunctionBodyNode::parameterCount): Added some helper functions for copying one FunctionBodyNode's parameters to another. The recompiler uses these when calling "finishParsing".

WebCore:

2008-10-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Cameron Zwarich.

Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
Start the debugger without reloading the inspected page

  • WebCore.base.exp: New symbols.
  • ForwardingHeaders/kjs/CollectorHeapIterator.h: Copied from ForwardingHeaders/kjs/ustring.h.
  • ForwardingHeaders/kjs/Parser.h: Copied from ForwardingHeaders/kjs/ustring.h.
  • WebCore.xcodeproj/project.pbxproj: New forwarding headers.
  • inspector/InspectorController.cpp: (WebCore::InspectorController::setWindowVisible): (WebCore::InspectorController::windowScriptObjectAvailable): (WebCore::InspectorController::startDebugging):
  • inspector/InspectorController.h: Renamed startDebuggingAndReloadInspectedPage to startDebugging, and changed its behavior to match.
  • inspector/JavaScriptDebugListener.h:
  • inspector/JavaScriptDebugServer.cpp: (WebCore::JavaScriptDebugServer::JavaScriptDebugServer): (WebCore::JavaScriptDebugServer::addListener): (WebCore::JavaScriptDebugServer::removeListener): (WebCore::JavaScriptDebugServer::recompileAllJSFunctions): (WebCore::JavaScriptDebugServer::willAddFirstListener): (WebCore::JavaScriptDebugServer::didRemoveLastListener):
  • inspector/JavaScriptDebugServer.h: Refactored the JavaScriptDebugServer to centralize handling of adding the first listener and removing the last. Then, added a feature to recompile all JS functions in these cases. This allows us to dynamically add and remove hooks like the debugger hooks without reloading the page.
  • inspector/front-end/ScriptsPanel.js:
  • English.lproj/localizedStrings.js: Updated for startDebuggingAndReloadInspectedPage => startDebugging rename. Removed all UI that claimed that starting the debugger would reload the page.

WebKit/mac:

2008-10-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Cameron Zwarich.

Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
Start the debugger without reloading the inspected page

WebKit/win:

2008-10-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Cameron Zwarich.

Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
Start the debugger without reloading the inspected page

  • WebInspector.cpp: (WebInspector::toggleDebuggingJavaScript): Updated for rename.
Location:
trunk
Files:
1 added
32 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r37604 r37622  
     12008-10-15  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Cameron Zwarich.
     4
     5        Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
     6        Start the debugger without reloading the inspected page
     7
     8        * JavaScriptCore.exp: New symbols.
     9        * JavaScriptCore.xcodeproj/project.pbxproj: New files.
     10
     11        * VM/CodeBlock.h:
     12        (JSC::EvalCodeCache::get): Updated for tweak to parsing API.
     13
     14        * kjs/CollectorHeapIterator.h: Added. An iterator for the object heap,
     15        which we use to find all the live functions and recompile them.
     16
     17        * kjs/DebuggerCallFrame.cpp:
     18        (JSC::DebuggerCallFrame::evaluate): Updated for tweak to parsing API.
     19
     20        * kjs/FunctionConstructor.cpp:
     21        (JSC::constructFunction): Updated for tweak to parsing API.
     22
     23        * kjs/JSFunction.cpp:
     24        (JSC::JSFunction::JSFunction): Try to validate our SourceCode in debug
     25        builds by ASSERTing that it's syntactically valid. This doesn't catch
     26        all SourceCode bugs, but it catches a lot of them.
     27
     28        * kjs/JSGlobalObjectFunctions.cpp:
     29        (JSC::globalFuncEval): Updated for tweak to parsing API.
     30
     31        * kjs/Parser.cpp:
     32        (JSC::Parser::parse):
     33        * kjs/Parser.h:
     34        (JSC::Parser::parse): Tweaked the parser to make it possible to parse
     35        without an ExecState, and to allow the client to specify a debugger to
     36        notify (or not) about the source we parse. This allows the inspector
     37        to recompile even though no JavaScript is executing, then notify the
     38        debugger about all source code when it's done.
     39
     40        * kjs/Shell.cpp:
     41        (prettyPrintScript): Updated for tweak to parsing API.
     42
     43        * kjs/SourceRange.h:
     44        (JSC::SourceCode::isNull): Added to help with ASSERTs.
     45
     46        * kjs/collector.cpp:
     47        (JSC::Heap::heapAllocate):
     48        (JSC::Heap::sweep):
     49        (JSC::Heap::primaryHeapBegin):
     50        (JSC::Heap::primaryHeapEnd):
     51        * kjs/collector.h:
     52        (JSC::): Moved a bunch of declarations around to enable compilation of
     53        CollectorHeapIterator.
     54
     55        * kjs/interpreter.cpp:
     56        (JSC::Interpreter::checkSyntax):
     57        (JSC::Interpreter::evaluate): Updated for tweak to parsing API.
     58
     59        * kjs/lexer.h:
     60        (JSC::Lexer::sourceCode): BUG FIX: Calculate SourceCode ranges relative
     61        to the SourceCode range in which we're lexing, otherwise nested functions
     62        that are compiled individually get SourceCode ranges that don't reflect
     63        their nesting.
     64
     65        * kjs/nodes.cpp:
     66        (JSC::FunctionBodyNode::FunctionBodyNode):
     67        (JSC::FunctionBodyNode::finishParsing):
     68        (JSC::FunctionBodyNode::create):
     69        (JSC::FunctionBodyNode::copyParameters):
     70        * kjs/nodes.h:
     71        (JSC::ScopeNode::setSource):
     72        (JSC::FunctionBodyNode::parameterCount): Added some helper functions for
     73        copying one FunctionBodyNode's parameters to another. The recompiler uses
     74        these when calling "finishParsing".
     75
    1762008-10-15  Joerg Bornemann  <joerg.bornemann@trolltech.com>
    277
  • trunk/JavaScriptCore/JavaScriptCore.exp

    r37563 r37622  
    9696__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc
    9797__ZN3JSC10Identifier5equalEPKNS_7UString3RepEPKc
     98__ZN3JSC10JSFunction4infoE
    9899__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE
    99100__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc
     
    154155__ZN3JSC14constructArrayEPNS_9ExecStateERKNS_7ArgListE
    155156__ZN3JSC15JSWrapperObject4markEv
     157__ZN3JSC16FunctionBodyNode13finishParsingEPNS_10IdentifierEm
     158__ZN3JSC16FunctionBodyNode14copyParametersEv
     159__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS6_INS5_6RefPtrINS_12FuncDeclNodeEEELm16EEERKNS_10SourceCodeEji
    156160__ZN3JSC16InternalFunction4infoE
    157161__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF10PassRefPtrINS_11StructureIDEEERKNS_10IdentifierE
     
    170174__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE
    171175__ZN3JSC4Heap14allocateNumberEm
     176__ZN3JSC4Heap14primaryHeapEndEv
    172177__ZN3JSC4Heap15recordExtraCostEm
     178__ZN3JSC4Heap16primaryHeapBeginEv
    173179__ZN3JSC4Heap17globalObjectCountEv
    174180__ZN3JSC4Heap20protectedObjectCountEv
     
    203209__ZN3JSC6JSLock9lockCountEv
    204210__ZN3JSC6JSLockC1EPNS_9ExecStateE
    205 __ZN3JSC6Parser5parseEPNS_9ExecStateEPiPNS_7UStringE
     211__ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE
    206212__ZN3JSC6strtodEPKcPPc
    207213__ZN3JSC7ArgList10slowAppendEPNS_7JSValueE
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r37597 r37622  
    7070                14BD5A320A3E91F600BAF59C /* JSValueRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14BD5A2B0A3E91F600BAF59C /* JSValueRef.cpp */; };
    7171                14E0FF120DBAAED00007C0AB /* Machine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149B15E70D81F986009CB8C7 /* Machine.cpp */; settings = {COMPILER_FLAGS = "-fno-tree-pre"; }; };
     72                14F3488F0E95EF8A003648BC /* CollectorHeapIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F3488E0E95EF8A003648BC /* CollectorHeapIterator.h */; settings = {ATTRIBUTES = (Private, ); }; };
    7273                5D53726F0E1C54880021E549 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; };
    7374                5D5D8AB60E0D0A7200F9C692 /* jsc in Copy Into Framework */ = {isa = PBXBuildFile; fileRef = 932F5BE10822A1C700736975 /* jsc */; };
     
    516517                14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGlobalObject.cpp; sourceTree = "<group>"; };
    517518                14F252560D08DD8D004ECFFF /* JSVariableObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVariableObject.h; sourceTree = "<group>"; };
     519                14F3488E0E95EF8A003648BC /* CollectorHeapIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectorHeapIterator.h; sourceTree = "<group>"; };
    518520                1C9051420BA9E8A70081E9D0 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
    519521                1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = JavaScriptCore.xcconfig; sourceTree = "<group>"; };
     
    12971299                                147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */,
    12981300                                147B84620E6DE6B1004775A4 /* PutPropertySlot.h */,
     1301                                14F3488E0E95EF8A003648BC /* CollectorHeapIterator.h */,
    12991302                        );
    13001303                        path = kjs;
     
    16011604                                140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */,
    16021605                                869EBCB70E8C6D4A008722CC /* ResultType.h in Headers */,
     1606                                14F3488F0E95EF8A003648BC /* CollectorHeapIterator.h in Headers */,
    16031607                        );
    16041608                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/JavaScriptCore/VM/CodeBlock.h

    r37433 r37622  
    162162               
    163163                SourceCode source = makeSource(evalSource);
    164                 evalNode = exec->globalData().parser->parse<EvalNode>(exec, source, &errLine, &errMsg);
     164                evalNode = exec->globalData().parser->parse<EvalNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    165165                if (evalNode) {
    166166                    if (evalSource.size() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject() && cacheMap.size() < maxCacheEntries)
  • trunk/JavaScriptCore/kjs/DebuggerCallFrame.cpp

    r37433 r37622  
    7373    UString errMsg;
    7474    SourceCode source = makeSource(script);
    75     RefPtr<EvalNode> evalNode = m_callFrame->scopeChain()->globalData->parser->parse<EvalNode>(m_callFrame, source, &errLine, &errMsg);
     75    RefPtr<EvalNode> evalNode = m_callFrame->scopeChain()->globalData->parser->parse<EvalNode>(m_callFrame, m_callFrame->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    7676    if (!evalNode)
    7777        return Error::create(m_callFrame, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
  • trunk/JavaScriptCore/kjs/FunctionConstructor.cpp

    r37433 r37622  
    8888    UString errMsg;
    8989    SourceCode source = makeSource(body, sourceURL, lineNumber);
    90     RefPtr<FunctionBodyNode> functionBody = exec->globalData().parser->parse<FunctionBodyNode>(exec, source, &errLine, &errMsg);
     90    RefPtr<FunctionBodyNode> functionBody = exec->globalData().parser->parse<FunctionBodyNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    9191
    9292    // No program node == syntax error - throw a syntax error
     
    126126    }
    127127    size_t count = parameters.size();
    128     functionBody->finishParsing(source, parameters.releaseBuffer(), count);
     128    functionBody->finishParsing(parameters.releaseBuffer(), count);
    129129
    130130    JSGlobalObject* globalObject = exec->lexicalGlobalObject();
  • trunk/JavaScriptCore/kjs/JSFunction.cpp

    r37257 r37622  
    5050    , m_scopeChain(scopeChainNode)
    5151{
     52    ASSERT(exec->globalData().parser->parse<FunctionBodyNode>(exec, 0, body->source()));
    5253}
    5354
  • trunk/JavaScriptCore/kjs/JSGlobalObjectFunctions.cpp

    r37433 r37622  
    287287
    288288    SourceCode source = makeSource(s);
    289     RefPtr<EvalNode> evalNode = exec->globalData().parser->parse<EvalNode>(exec, source, &errLine, &errMsg);
     289    RefPtr<EvalNode> evalNode = exec->globalData().parser->parse<EvalNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    290290
    291291    if (!evalNode)
  • trunk/JavaScriptCore/kjs/Parser.cpp

    r37433 r37622  
    3333namespace JSC {
    3434
    35 void Parser::parse(ExecState* exec, int* errLine, UString* errMsg)
     35void Parser::parse(JSGlobalData* globalData, int* errLine, UString* errMsg)
    3636{
    3737    ASSERT(!m_sourceElements);
     
    4848    *errMsg = 0;
    4949
    50     Lexer& lexer = *exec->globalData().lexer;
     50    Lexer& lexer = *globalData->lexer;
    5151    lexer.setCode(*m_source);
    5252
    53     int parseError = kjsyyparse(&exec->globalData());
     53    int parseError = kjsyyparse(globalData);
    5454    bool lexError = lexer.sawError();
    5555    lexer.clear();
    5656
    57     ParserRefCounted::deleteNewObjects(&exec->globalData());
     57    ParserRefCounted::deleteNewObjects(globalData);
    5858
    5959    if (parseError || lexError) {
     
    6262        m_sourceElements.clear();
    6363    }
    64 
    65     if (Debugger* debugger = exec->dynamicGlobalObject()->debugger())
    66         debugger->sourceParsed(exec, *m_source, *errLine, *errMsg);
    6764}
    6865
  • trunk/JavaScriptCore/kjs/Parser.h

    r37275 r37622  
    2424#define Parser_h
    2525
     26#include "debugger.h"
    2627#include "SourceProvider.h"
    2728#include "nodes.h"
     
    4950    class Parser : Noncopyable {
    5051    public:
    51         template <class ParsedNode> PassRefPtr<ParsedNode> parse(ExecState*, PassRefPtr<SourceProvider>, int* errLine = 0, UString* errMsg = 0);
    52         template <class ParsedNode> PassRefPtr<ParsedNode> parse(ExecState*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);
     52        template <class ParsedNode> PassRefPtr<ParsedNode> parse(ExecState*, Debugger*, const SourceCode&, int* errLine = 0, UString* errMsg = 0);
    5353
    5454        void didFinishParsing(SourceElements*, ParserRefCountedData<DeclarationStacks::VarStack>*,
     
    5656
    5757    private:
    58         friend class JSGlobalData;
    59 
    60         void parse(ExecState*, int* errLine, UString* errMsg);
     58        void parse(JSGlobalData*, int* errLine, UString* errMsg);
    6159
    6260        const SourceCode* m_source;
     
    6967    };
    7068
    71     template <class ParsedNode> PassRefPtr<ParsedNode> Parser::parse(ExecState* exec, const SourceCode& source, int* errLine, UString* errMsg)
     69    template <class ParsedNode> PassRefPtr<ParsedNode> Parser::parse(ExecState* exec, Debugger* debugger, const SourceCode& source, int* errLine, UString* errMsg)
    7270    {
    7371        m_source = &source;
    74         parse(exec, errLine, errMsg);
     72        parse(&exec->globalData(), errLine, errMsg);
    7573        RefPtr<ParsedNode> result;
    7674        if (m_sourceElements) {
     
    8987        m_varDeclarations = 0;
    9088        m_funcDeclarations = 0;
     89
     90        if (debugger)
     91            debugger->sourceParsed(exec, source, *errLine, *errMsg);
    9192        return result.release();
    9293    }
  • trunk/JavaScriptCore/kjs/Shell.cpp

    r37433 r37622  
    306306    int errLine = 0;
    307307    UString errMsg;
    308     RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, makeSource(script.data(), fileName), &errLine, &errMsg);
     308    RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), makeSource(script.data(), fileName), &errLine, &errMsg);
    309309    if (!programNode) {
    310310        fprintf(stderr, "%s:%d: %s.\n", fileName.UTF8String().c_str(), errLine, errMsg.UTF8String().c_str());
  • trunk/JavaScriptCore/kjs/SourceRange.h

    r37184 r37622  
    6969        }
    7070       
     71        bool isNull() const { return !m_provider; }
    7172        SourceProvider* provider() const { return m_provider.get(); }
    7273        int firstLine() const { return m_firstLine; }
  • trunk/JavaScriptCore/kjs/collector.cpp

    r37410 r37622  
    2323
    2424#include "ArgList.h"
     25#include "CollectorHeapIterator.h"
    2526#include "ExecState.h"
    2627#include "JSGlobalObject.h"
     
    182183}
    183184
    184 template <Heap::HeapType heapType>
     185template <HeapType heapType>
    185186static NEVER_INLINE CollectorBlock* allocateBlock()
    186187{
     
    266267}
    267268
    268 template <Heap::HeapType heapType> struct HeapConstants;
    269 
    270 template <> struct HeapConstants<Heap::PrimaryHeap> {
    271     static const size_t cellSize = CELL_SIZE;
    272     static const size_t cellsPerBlock = CELLS_PER_BLOCK;
    273     static const size_t bitmapShift = 0;
    274     typedef CollectorCell Cell;
    275     typedef CollectorBlock Block;
    276 };
    277 
    278 template <> struct HeapConstants<Heap::NumberHeap> {
    279     static const size_t cellSize = SMALL_CELL_SIZE;
    280     static const size_t cellsPerBlock = SMALL_CELLS_PER_BLOCK;
    281     static const size_t bitmapShift = 1;
    282     typedef SmallCollectorCell Cell;
    283     typedef SmallCellCollectorBlock Block;
    284 };
    285 
    286 template <Heap::HeapType heapType> ALWAYS_INLINE void* Heap::heapAllocate(size_t s)
     269template <HeapType heapType> ALWAYS_INLINE void* Heap::heapAllocate(size_t s)
    287270{
    288271    typedef typename HeapConstants<heapType>::Block Block;
     
    860843}
    861844
    862 template <Heap::HeapType heapType> size_t Heap::sweep()
     845template <HeapType heapType> size_t Heap::sweep()
    863846{
    864847    typedef typename HeapConstants<heapType>::Block Block;
     
    866849
    867850    // SWEEP: delete everything with a zero refcount (garbage) and unmark everything else
    868     CollectorHeap& heap = heapType == Heap::PrimaryHeap ? primaryHeap : numberHeap;
     851    CollectorHeap& heap = heapType == PrimaryHeap ? primaryHeap : numberHeap;
    869852   
    870853    size_t emptyBlocks = 0;
     
    883866                    Cell* cell = curBlock->cells + i;
    884867                   
    885                     if (heapType != Heap::NumberHeap) {
     868                    if (heapType != NumberHeap) {
    886869                        JSCell* imp = reinterpret_cast<JSCell*>(cell);
    887870                        // special case for allocated but uninitialized object
     
    911894                } else {
    912895                    if (!curBlock->marked.get(i >> HeapConstants<heapType>::bitmapShift)) {
    913                         if (heapType != Heap::NumberHeap) {
     896                        if (heapType != NumberHeap) {
    914897                            JSCell* imp = reinterpret_cast<JSCell*>(cell);
    915898                            imp->~JSCell();
     
    10871070}
    10881071
     1072Heap::iterator Heap::primaryHeapBegin()
     1073{
     1074    return iterator(primaryHeap.blocks, primaryHeap.blocks + primaryHeap.usedBlocks);
     1075}
     1076
     1077Heap::iterator Heap::primaryHeapEnd()
     1078{
     1079    return iterator(primaryHeap.blocks + primaryHeap.usedBlocks, primaryHeap.blocks + primaryHeap.usedBlocks);
     1080}
     1081
    10891082} // namespace JSC
  • trunk/JavaScriptCore/kjs/collector.h

    r37215 r37622  
    4646
    4747    enum OperationInProgress { NoOperation, Allocation, Collection };
     48    enum HeapType { PrimaryHeap, NumberHeap };
     49
     50    template <HeapType> class CollectorHeapIterator;
    4851
    4952    struct CollectorHeap {
     
    6366    public:
    6467        class Thread;
    65         enum HeapType { PrimaryHeap, NumberHeap };
     68        typedef CollectorHeapIterator<PrimaryHeap> iterator;
    6669
    6770        void destroy();
     
    109112        JSGlobalData* globalData() const { return m_globalData; }
    110113        static bool isNumber(JSCell*);
     114       
     115        // Iterators for the object heap.
     116        iterator primaryHeapBegin();
     117        iterator primaryHeapEnd();
    111118
    112119    private:
    113         template <Heap::HeapType heapType> void* heapAllocate(size_t);
    114         template <Heap::HeapType heapType> size_t sweep();
     120        template <HeapType heapType> void* heapAllocate(size_t);
     121        template <HeapType heapType> size_t sweep();
    115122        static const CollectorBlock* cellBlock(const JSCell*);
    116123        static CollectorBlock* cellBlock(JSCell*);
     
    207214        CollectorBitmap marked;
    208215        Heap* heap;
    209         Heap::HeapType type;
     216        HeapType type;
    210217    };
    211218
     
    217224        CollectorBitmap marked;
    218225        Heap* heap;
    219         Heap::HeapType type;
     226        HeapType type;
    220227    };
    221228   
     229    template <HeapType heapType> struct HeapConstants;
     230
     231    template <> struct HeapConstants<PrimaryHeap> {
     232        static const size_t cellSize = CELL_SIZE;
     233        static const size_t cellsPerBlock = CELLS_PER_BLOCK;
     234        static const size_t bitmapShift = 0;
     235        typedef CollectorCell Cell;
     236        typedef CollectorBlock Block;
     237    };
     238
     239    template <> struct HeapConstants<NumberHeap> {
     240        static const size_t cellSize = SMALL_CELL_SIZE;
     241        static const size_t cellsPerBlock = SMALL_CELLS_PER_BLOCK;
     242        static const size_t bitmapShift = 1;
     243        typedef SmallCollectorCell Cell;
     244        typedef SmallCellCollectorBlock Block;
     245    };
     246
    222247    inline bool Heap::isNumber(JSCell* cell)
    223248    {
  • trunk/JavaScriptCore/kjs/interpreter.cpp

    r37433 r37622  
    4747    UString errMsg;
    4848
    49     RefPtr<ProgramNode> progNode = exec->globalData().parser->parse<ProgramNode>(exec, source, &errLine, &errMsg);
     49    RefPtr<ProgramNode> progNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    5050    if (!progNode)
    5151        return Completion(Throw, Error::create(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url()));
     
    5959    int errLine;
    6060    UString errMsg;
    61     RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, source, &errLine, &errMsg);
     61    RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
    6262
    6363    if (!programNode)
  • trunk/JavaScriptCore/kjs/lexer.h

    r37184 r37622  
    8989
    9090        void clear();
    91         SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace + 1, closeBrace, firstLine); }
     91        SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), m_source->startOffset() + openBrace + 1, m_source->startOffset() + closeBrace, firstLine); }
    9292
    9393    private:
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r37553 r37622  
    17471747// ------------------------------ FunctionBodyNode -----------------------------
    17481748
    1749 FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, CodeFeatures features, int numConstants)
    1750     : ScopeNode(globalData, SourceCode(), children, varStack, funcStack, features, numConstants)
     1749FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
     1750    : ScopeNode(globalData, sourceCode, children, varStack, funcStack, features, numConstants)
    17511751    , m_parameters(0)
     1752    , m_parameterCount(0)
    17521753    , m_refCount(0)
    17531754{
     
    17661767        parameters.append(parameter->ident());
    17671768    size_t count = parameters.size();
    1768     finishParsing(source, parameters.releaseBuffer(), count);
    1769 }
    1770 
    1771 void FunctionBodyNode::finishParsing(const SourceCode& source, Identifier* parameters, size_t parameterCount)
    1772 {
     1769
    17731770    setSource(source);
     1771    finishParsing(parameters.releaseBuffer(), count);
     1772}
     1773
     1774void FunctionBodyNode::finishParsing(Identifier* parameters, size_t parameterCount)
     1775{
     1776    ASSERT(!source().isNull());
    17741777    m_parameters = parameters;
    17751778    m_parameterCount = parameterCount;
     
    17841787FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, CodeFeatures features, int numConstants)
    17851788{
    1786     return new FunctionBodyNode(globalData, children, varStack, funcStack, features, numConstants);
    1787 }
    1788 
    1789 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode&, CodeFeatures features, int numConstants)
    1790 {
    1791     return new FunctionBodyNode(globalData, children, varStack, funcStack, features, numConstants);
     1789    return new FunctionBodyNode(globalData, children, varStack, funcStack, SourceCode(), features, numConstants);
     1790}
     1791
     1792FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
     1793{
     1794    return new FunctionBodyNode(globalData, children, varStack, funcStack, sourceCode, features, numConstants);
    17921795}
    17931796
     
    18491852
    18501853    return s;
     1854}
     1855
     1856Identifier* FunctionBodyNode::copyParameters()
     1857{
     1858    Identifier* parameters = static_cast<Identifier*>(fastMalloc(m_parameterCount * sizeof(Identifier)));
     1859    VectorCopier<false, Identifier>::uninitializedCopy(m_parameters, m_parameters + m_parameterCount, parameters);
     1860    return parameters;
    18511861}
    18521862
  • trunk/JavaScriptCore/kjs/nodes.h

    r37433 r37622  
    21752175        virtual void streamTo(SourceStream&) const JSC_FAST_CALL;
    21762176       
    2177         void setSource(const SourceCode& source) { m_source = source; }
    21782177        const SourceCode& source() const { return m_source; }
    21792178        const UString& sourceURL() const JSC_FAST_CALL { return m_source.provider()->url(); }
     
    21972196
    21982197    protected:
     2198        void setSource(const SourceCode& source) { m_source = source; }
     2199
    21992200        VarStack m_varStack;
    22002201        FunctionStack m_functionStack;
     
    22562257
    22572258        const Identifier* parameters() const JSC_FAST_CALL { return m_parameters; }
    2258         size_t parameterCount() { return m_parameterCount; }
     2259        size_t parameterCount() const { return m_parameterCount; }
    22592260        UString paramString() const JSC_FAST_CALL;
     2261        Identifier* copyParameters();
    22602262
    22612263        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
     
    22802282
    22812283        void finishParsing(const SourceCode&, ParameterNode*);
    2282         void finishParsing(const SourceCode&, Identifier* parameters, size_t parameterCount);
     2284        void finishParsing(Identifier* parameters, size_t parameterCount);
    22832285       
    22842286        UString toSourceString() const JSC_FAST_CALL { return UString("{") + source().toString() + UString("}"); }
     
    22992301
    23002302    protected:
    2301         FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, CodeFeatures, int numConstants) JSC_FAST_CALL;
     2303        FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
    23022304
    23032305    private:
  • trunk/WebCore/ChangeLog

    r37621 r37622  
     12008-10-15  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Cameron Zwarich.
     4
     5        Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
     6        Start the debugger without reloading the inspected page
     7
     8        * WebCore.base.exp: New symbols.
     9
     10        * ForwardingHeaders/kjs/CollectorHeapIterator.h: Copied from ForwardingHeaders/kjs/ustring.h.
     11        * ForwardingHeaders/kjs/Parser.h: Copied from ForwardingHeaders/kjs/ustring.h.
     12        * WebCore.xcodeproj/project.pbxproj: New forwarding headers.
     13
     14        * inspector/InspectorController.cpp:
     15        (WebCore::InspectorController::setWindowVisible):
     16        (WebCore::InspectorController::windowScriptObjectAvailable):
     17        (WebCore::InspectorController::startDebugging):
     18        * inspector/InspectorController.h: Renamed startDebuggingAndReloadInspectedPage
     19        to startDebugging, and changed its behavior to match.
     20
     21        * inspector/JavaScriptDebugListener.h:
     22        * inspector/JavaScriptDebugServer.cpp:
     23        (WebCore::JavaScriptDebugServer::JavaScriptDebugServer):
     24        (WebCore::JavaScriptDebugServer::addListener):
     25        (WebCore::JavaScriptDebugServer::removeListener):
     26        (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
     27        (WebCore::JavaScriptDebugServer::willAddFirstListener):
     28        (WebCore::JavaScriptDebugServer::didRemoveLastListener):
     29        * inspector/JavaScriptDebugServer.h: Refactored the
     30        JavaScriptDebugServer to centralize handling of adding the first listener
     31        and removing the last. Then, added a feature to recompile all JS functions
     32        in these cases. This allows us to dynamically add and remove hooks like
     33        the debugger hooks without reloading the page.
     34
     35        * inspector/front-end/ScriptsPanel.js:
     36        * English.lproj/localizedStrings.js: Updated for startDebuggingAndReloadInspectedPage =>
     37        startDebugging rename. Removed all UI that claimed that starting the
     38        debugger would reload the page.
     39
    1402008-10-15  Adele Peterson  <adele@apple.com>
    241
  • trunk/WebCore/ForwardingHeaders/kjs/CollectorHeapIterator.h

    r37586 r37622  
    1 #include <JavaScriptCore/ustring.h>
     1#include <JavaScriptCore/CollectorHeapIterator.h>
  • trunk/WebCore/ForwardingHeaders/kjs/Parser.h

    r37586 r37622  
    1 #include <JavaScriptCore/ustring.h>
     1#include <JavaScriptCore/Parser.h>
  • trunk/WebCore/WebCore.base.exp

    r37611 r37622  
    380380__ZN7WebCore19InspectorController12detachWindowEv
    381381__ZN7WebCore19InspectorController13stopDebuggingEv
     382__ZN7WebCore19InspectorController14startDebuggingEv
    382383__ZN7WebCore19InspectorController16setWindowVisibleEbb
    383384__ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv
    384385__ZN7WebCore19InspectorController27startUserInitiatedProfilingEv
    385 __ZN7WebCore19InspectorController36startDebuggingAndReloadInspectedPageEv
    386386__ZN7WebCore19InspectorController4showEv
    387387__ZN7WebCore19InspectorController5closeEv
     
    401401__ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx
    402402__ZN7WebCore21ContextMenuController16clearContextMenuEv
     403__ZN7WebCore21JavaScriptDebugServer23recompileAllJSFunctionsEPNS_5TimerIS0_EE
     404__ZN7WebCore21JavaScriptDebugServer6sharedEv
    403405__ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS0_4TypeEb
    404406__ZN7WebCore21PlatformKeyboardEventC1EP7NSEvent
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r37590 r37622  
    365365                1C81BA0C0E97348300266E07 /* JavaScriptDebugListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81BA060E97348300266E07 /* JavaScriptDebugListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
    366366                1C81BA0D0E97348300266E07 /* JavaScriptDebugServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C81BA070E97348300266E07 /* JavaScriptDebugServer.cpp */; };
    367                 1C81BA0E0E97348300266E07 /* JavaScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81BA080E97348300266E07 /* JavaScriptDebugServer.h */; };
     367                1C81BA0E0E97348300266E07 /* JavaScriptDebugServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C81BA080E97348300266E07 /* JavaScriptDebugServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
    368368                1CA19E050DC255950065A994 /* EventLoopMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CA19E030DC255950065A994 /* EventLoopMac.mm */; };
    369369                1CA19E160DC255CA0065A994 /* EventLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA19E150DC255CA0065A994 /* EventLoop.h */; };
  • trunk/WebCore/inspector/InspectorController.cpp

    r37349 r37622  
    7474#include <kjs/JSLock.h>
    7575#include <kjs/ustring.h>
     76#include <kjs/CollectorHeapIterator.h>
    7677#include <profiler/Profile.h>
    7778#include <profiler/Profiler.h>
     
    431432SIMPLE_INSPECTOR_CALLBACK(attach, attachWindow);
    432433SIMPLE_INSPECTOR_CALLBACK(detach, detachWindow);
    433 SIMPLE_INSPECTOR_CALLBACK(startDebuggingAndReloadInspectedPage, startDebuggingAndReloadInspectedPage);
     434SIMPLE_INSPECTOR_CALLBACK(startDebugging, startDebugging);
    434435SIMPLE_INSPECTOR_CALLBACK(stopDebugging, stopDebugging);
    435436SIMPLE_INSPECTOR_CALLBACK(pauseInDebugger, pauseInDebugger);
     
    11151116            focusNode();
    11161117        if (m_attachDebuggerWhenShown)
    1117             startDebuggingAndReloadInspectedPage();
     1118            startDebugging();
    11181119        if (m_showAfterVisible != CurrentPanel)
    11191120            showPanel(m_showAfterVisible);
     
    13221323        { "attach", WebCore::attach, kJSPropertyAttributeNone },
    13231324        { "detach", WebCore::detach, kJSPropertyAttributeNone },
    1324         { "startDebuggingAndReloadInspectedPage", WebCore::startDebuggingAndReloadInspectedPage, kJSPropertyAttributeNone },
     1325        { "startDebugging", WebCore::startDebugging, kJSPropertyAttributeNone },
    13251326        { "stopDebugging", WebCore::stopDebugging, kJSPropertyAttributeNone },
    13261327        { "pauseInDebugger", WebCore::pauseInDebugger, kJSPropertyAttributeNone },
     
    23132314}
    23142315
    2315 void InspectorController::startDebuggingAndReloadInspectedPage()
     2316void InspectorController::startDebugging()
    23162317{
    23172318    if (!enabled())
     
    23322333
    23332334    callSimpleFunction(m_scriptContext, m_scriptObject, "debuggerAttached");
    2334 
    2335     m_inspectedPage->mainFrame()->loader()->reload();
    23362335}
    23372336
  • trunk/WebCore/inspector/InspectorController.h

    r37349 r37622  
    161161    void closeWindow();
    162162
    163     void startDebuggingAndReloadInspectedPage();
     163    void startDebugging();
    164164    void stopDebugging();
    165165    bool debuggerAttached() const { return m_debuggerAttached; }
  • trunk/WebCore/inspector/JavaScriptDebugListener.h

    r37289 r37622  
    3131
    3232namespace JSC {
    33     class DebuggerCallFrame;
    3433    class ExecState;
    3534    class SourceCode;
  • trunk/WebCore/inspector/JavaScriptDebugServer.cpp

    r37289 r37622  
    4545#include "Widget.h"
    4646#include "ScriptController.h"
     47#include <kjs/CollectorHeapIterator.h>
    4748#include <kjs/DebuggerCallFrame.h>
     49#include <kjs/JSLock.h>
     50#include <kjs/Parser.h>
    4851#include <wtf/MainThread.h>
    4952#include <wtf/UnusedParam.h>
     
    6871    , m_doneProcessingDebuggerEvents(true)
    6972    , m_pauseOnCallFrame(0)
     73    , m_recompileTimer(this, &JavaScriptDebugServer::recompileAllJSFunctions)
    7074{
    7175}
     
    8185{
    8286    if (!hasListeners())
    83         Page::setDebuggerForAllPages(this);
     87        willAddFirstListener();
    8488
    8589    m_listeners.add(listener);
     
    8993{
    9094    m_listeners.remove(listener);
    91     if (!hasListeners()) {
    92         Page::setDebuggerForAllPages(0);
    93         m_doneProcessingDebuggerEvents = true;
    94     }
     95    if (!hasListeners())
     96        didRemoveLastListener();
    9597}
    9698
     
    100102
    101103    if (!hasListeners())
    102         Page::setDebuggerForAllPages(this);
     104        willAddFirstListener();
    103105
    104106    pair<PageListenersMap::iterator, bool> result = m_pageListenersMap.add(page, 0);
     
    119121
    120122    ListenerSet* listeners = it->second;
    121 
    122123    listeners->remove(listener);
    123 
    124124    if (listeners->isEmpty()) {
    125125        m_pageListenersMap.remove(it);
     
    127127    }
    128128
    129     if (!hasListeners()) {
    130         Page::setDebuggerForAllPages(0);
    131         m_doneProcessingDebuggerEvents = true;
    132     }
     129    if (!hasListeners())
     130        didRemoveLastListener();
    133131}
    134132
     
    522520}
    523521
     522void JavaScriptDebugServer::recompileAllJSFunctions(Timer<JavaScriptDebugServer>*)
     523{
     524    JSLock lock(false);
     525    JSGlobalData* globalData = JSDOMWindow::commonJSGlobalData();
     526   
     527    // If JavaScript is running, it's not safe to recompile, since we'll end
     528    // up throwing away code that is live on the stack.
     529    ASSERT(!globalData->dynamicGlobalObject);
     530    if (globalData->dynamicGlobalObject)
     531        return;
     532
     533    Vector<ProtectedPtr<JSFunction> > functions;
     534    Heap::iterator heapEnd = globalData->heap.primaryHeapEnd();
     535    for (Heap::iterator it = globalData->heap.primaryHeapBegin(); it != heapEnd; ++it) {
     536        if ((*it)->isObject(&JSFunction::info))
     537            functions.append(static_cast<JSFunction*>(*it));
     538    }
     539
     540    typedef HashMap<RefPtr<FunctionBodyNode>, RefPtr<FunctionBodyNode> > FunctionBodyMap;
     541    typedef HashSet<SourceProvider*> SourceProviderSet;
     542
     543    FunctionBodyMap functionBodies;
     544    SourceProviderSet sourceProviders;
     545   
     546    size_t size = functions.size();
     547    for (size_t i = 0; i < size; ++i) {
     548        JSFunction* function = functions[i];
     549       
     550        FunctionBodyNode* oldBody = function->m_body.get();
     551        pair<FunctionBodyMap::iterator, bool> result = functionBodies.add(oldBody, 0);
     552        if (!result.second) {
     553            function->m_body = result.first->second;
     554            continue;
     555        }
     556
     557        ExecState* exec = function->scope().globalObject()->JSGlobalObject::globalExec();
     558        const SourceCode& sourceCode = oldBody->source();
     559
     560        RefPtr<FunctionBodyNode> newBody = globalData->parser->parse<FunctionBodyNode>(exec, 0, sourceCode);
     561        ASSERT(newBody);
     562        newBody->finishParsing(oldBody->copyParameters(), oldBody->parameterCount());
     563       
     564        result.first->second = newBody;
     565        function->m_body = newBody.release();
     566
     567        if (hasListeners()) {
     568            SourceProvider* provider = sourceCode.provider();
     569            if (sourceProviders.add(provider).second)
     570                sourceParsed(exec, SourceCode(provider), -1, 0);
     571        }
     572    }
     573}
     574
     575void JavaScriptDebugServer::willAddFirstListener()
     576{
     577    Page::setDebuggerForAllPages(this);
     578    m_recompileTimer.startOneShot(0);
     579}
     580
     581void JavaScriptDebugServer::didRemoveLastListener()
     582{
     583    Page::setDebuggerForAllPages(0);
     584    m_doneProcessingDebuggerEvents = true;
     585    m_recompileTimer.startOneShot(0);
     586}
     587
    524588} // namespace WebCore
  • trunk/WebCore/inspector/JavaScriptDebugServer.h

    r37289 r37622  
    3030#define JavaScriptDebugServer_h
    3131
     32#include "Timer.h"
    3233#include <kjs/debugger.h>
    33 
    3434#include <wtf/HashMap.h>
    3535#include <wtf/HashSet.h>
     
    7474        void stepOutOfFunction();
    7575
     76        void recompileAllJSFunctions(Timer<JavaScriptDebugServer>*);
     77
    7678        JavaScriptCallFrame* currentCallFrame();
    7779
     
    104106        virtual void didExecuteProgram(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno);
    105107        virtual void didReachBreakpoint(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno);
     108       
     109        void willAddFirstListener();
     110        void didRemoveLastListener();
    106111
    107112        typedef HashMap<Page*, ListenerSet*> PageListenersMap;
     
    117122        HashMap<RefPtr<Frame>, PausedTimeouts*> m_pausedTimeouts;
    118123        HashMap<intptr_t, HashSet<unsigned>*> m_breakpoints;
     124        Timer<JavaScriptDebugServer> m_recompileTimer;
    119125    };
    120126
  • trunk/WebCore/inspector/front-end/ScriptsPanel.js

    r37289 r37622  
    144144    this.attachOverlayElement.id = "scripts-attach-overlay";
    145145
    146     var headerElement = document.createElement("h1");
    147     headerElement.textContent = WebInspector.UIString("Starting debugging will reload the inspected page.");
    148     this.attachOverlayElement.appendChild(headerElement);
    149 
    150     this.attachOverlayElement.appendChild(document.createElement("br"));
    151 
    152146    var attachButton = document.createElement("button");
    153147    attachButton.textContent = WebInspector.UIString("Start Debugging");
     
    668662                this.attachOverlayElement.parentNode.removeChild(this.attachOverlayElement);
    669663        } else {
    670             this.debuggingButton.title = WebInspector.UIString("Start debugging and reload inspected page.");
     664            this.debuggingButton.title = WebInspector.UIString("Start debugging.");
    671665            this.debuggingButton.removeStyleClass("toggled-on");
    672666            this.pauseButton.disabled = true;
     
    749743            InspectorController.stopDebugging();
    750744        else
    751             InspectorController.startDebuggingAndReloadInspectedPage();
     745            InspectorController.startDebugging();
    752746
    753747        this._clearInterface();
  • trunk/WebKit/mac/ChangeLog

    r37611 r37622  
     12008-10-15  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Cameron Zwarich.
     4
     5        Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
     6        Start the debugger without reloading the inspected page
     7
     8        * WebInspector/WebInspector.mm:
     9        (-[WebInspector startDebuggingJavaScript:]): Updated for rename.
     10
    1112008-10-14  Maxime Britto  <britto@apple.com>
    212
  • trunk/WebKit/mac/WebInspector/WebInspector.mm

    r35689 r37622  
    8989        return;
    9090    page->inspectorController()->showPanel(InspectorController::ScriptsPanel);
    91     page->inspectorController()->startDebuggingAndReloadInspectedPage();
     91    page->inspectorController()->startDebugging();
    9292}
    9393
  • trunk/WebKit/win/ChangeLog

    r37609 r37622  
     12008-10-15  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Cameron Zwarich.
     4
     5        Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
     6        Start the debugger without reloading the inspected page
     7
     8        * WebInspector.cpp:
     9        (WebInspector::toggleDebuggingJavaScript): Updated for rename.
     10
    1112008-10-15  Adam Roben  <aroben@apple.com>
    212
  • trunk/WebKit/win/WebInspector.cpp

    r35460 r37622  
    179179    else {
    180180        inspector->showPanel(InspectorController::ScriptsPanel);
    181         inspector->startDebuggingAndReloadInspectedPage();
     181        inspector->startDebugging();
    182182    }
    183183
Note: See TracChangeset for help on using the changeset viewer.