Changeset 47089 in webkit for trunk/JavaScriptCore/bytecode


Ignore:
Timestamp:
Aug 11, 2009, 10:22:33 PM (16 years ago)
Author:
[email protected]
Message:

JavaScriptCore: Restrict use of FuncDeclNode & FuncExprNode to the parser.
https://bugs.webkit.org/show_bug.cgi?id=28209

Reviewed by Oliver Hunt.

These objects were also being referenced from the CodeBlock. By changing this
to just retain pointers to FunctionBodyNodes these classes can be restricted to
use during parsing.

No performance impact (or sub-percent progression).

Update symbols.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::mark):
(JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
(JSC::CodeBlock::shrinkToFit):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addFunction):
(JSC::CodeBlock::function):

Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::addConstant):
(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitNewFunctionExpression):

  • bytecompiler/BytecodeGenerator.h:

FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):
(JSC::Interpreter::privateExecute):

Update to reflect chnages in CodeBlock.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_func_exp):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

  • jit/JITStubs.h:

(JSC::):

Update to reflect chnages in CodeBlock.

  • parser/Grammar.y:

FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.

  • parser/NodeConstructors.h:

(JSC::FuncExprNode::FuncExprNode):
(JSC::FuncDeclNode::FuncDeclNode):

  • parser/Nodes.cpp:

(JSC::ScopeNodeData::mark):
(JSC::FunctionBodyNode::finishParsing):

  • parser/Nodes.h:

(JSC::FunctionBodyNode::ident):

Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.

  • runtime/JSFunction.h:

(JSC::FunctionBodyNode::make):

Make this method inline (was FuncDeclNode::makeFunction).

WebCore: Restrict use of FuncDeclNode & FuncExprNode to the parser.
https://bugs.webkit.org/show_bug.cgi?id=28209

Reviewed by Oliver Hunt.

  • inspector/JavaScriptDebugServer.cpp:

(WebCore::JavaScriptDebugServer::recompileAllJSFunctions):

Function signature change.

Location:
trunk/JavaScriptCore/bytecode
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bytecode/CodeBlock.cpp

    r47022 r47089  
    3434#include "JSValue.h"
    3535#include "Interpreter.h"
     36#include "JSFunction.h"
     37#include "JSStaticScopeObject.h"
    3638#include "Debugger.h"
    3739#include "BytecodeGenerator.h"
     
    14361438    }
    14371439
    1438     for (size_t i = 0; i < m_functionExpressions.size(); ++i)
    1439         m_functionExpressions[i]->body()->markAggregate(markStack);
    1440 
    1441     if (m_rareData) {
    1442         for (size_t i = 0; i < m_rareData->m_functions.size(); ++i)
    1443             m_rareData->m_functions[i]->body()->markAggregate(markStack);
    1444 
     1440    for (size_t i = 0; i < m_functions.size(); ++i)
     1441        m_functions[i]->markAggregate(markStack);
     1442
     1443    if (m_rareData)
    14451444        m_rareData->m_evalCodeCache.markAggregate(markStack);
    1446     }
    14471445}
    14481446
     
    14711469            RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode);
    14721470            ASSERT(newFunctionBody);
    1473             newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount());
     1471            newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount(), ownerFunctionBodyNode->ident());
    14741472
    14751473            m_globalData->scopeNodeBeingReparsed = newFunctionBody.get();
     
    17291727
    17301728    m_identifiers.shrinkToFit();
    1731     m_functionExpressions.shrinkToFit();
     1729    m_functions.shrinkToFit();
    17321730    m_constantRegisters.shrinkToFit();
    17331731
     
    17401738    if (m_rareData) {
    17411739        m_rareData->m_exceptionHandlers.shrinkToFit();
    1742         m_rareData->m_functions.shrinkToFit();
    17431740        m_rareData->m_regexps.shrinkToFit();
    17441741        m_rareData->m_immediateSwitchJumpTables.shrinkToFit();
  • trunk/JavaScriptCore/bytecode/CodeBlock.h

    r47022 r47089  
    429429        ALWAYS_INLINE JSValue getConstant(int index) const { return m_constantRegisters[index - FirstConstantRegisterIndex].jsValue(); }
    430430
    431         unsigned addFunctionExpression(FuncExprNode* n) { unsigned size = m_functionExpressions.size(); m_functionExpressions.append(n); return size; }
    432         FuncExprNode* functionExpression(int index) const { return m_functionExpressions[index].get(); }
    433 
    434         unsigned addFunction(FuncDeclNode* n) { createRareDataIfNecessary(); unsigned size = m_rareData->m_functions.size(); m_rareData->m_functions.append(n); return size; }
    435         FuncDeclNode* function(int index) const { ASSERT(m_rareData); return m_rareData->m_functions[index].get(); }
    436 
    437         bool hasFunctions() const { return m_functionExpressions.size() || (m_rareData && m_rareData->m_functions.size()); }
     431        unsigned addFunction(PassRefPtr<FunctionBodyNode> n) { unsigned size = m_functions.size(); m_functions.append(n); return size; }
     432        FunctionBodyNode* function(int index) { return m_functions[index].get(); }
    438433
    439434        unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; }
     
    518513        Vector<Identifier> m_identifiers;
    519514        Vector<Register> m_constantRegisters;
    520         Vector<RefPtr<FuncExprNode> > m_functionExpressions;
     515        Vector< RefPtr<FunctionBodyNode> > m_functions;
    521516
    522517        SymbolTable m_symbolTable;
     
    537532
    538533            // Rare Constants
    539             Vector<RefPtr<FuncDeclNode> > m_functions;
    540534            Vector<RefPtr<RegExp> > m_regexps;
    541535
Note: See TracChangeset for help on using the changeset viewer.