Ignore:
Timestamp:
Dec 8, 2009, 5:29:52 PM (15 years ago)
Author:
[email protected]
Message:

move code generation portions of Nodes.cpp to bytecompiler directory
https://bugs.webkit.org/show_bug.cgi?id=32284

Reviewed by Darin Adler.

  • bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that

are not about codegen.

  • parser/Nodes.cpp: Removed everything that is about codegen.

Update build systems:

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r51875 r51882  
    106106{
    107107    return emitThrowError(generator, type, messageTemplate, label.ustring());
    108 }
    109 
    110 // ------------------------------ StatementNode --------------------------------
    111 
    112 void StatementNode::setLoc(int firstLine, int lastLine)
    113 {
    114     m_line = firstLine;
    115     m_lastLine = lastLine;
    116 }
    117 
    118 // ------------------------------ SourceElements --------------------------------
    119 
    120 void SourceElements::append(StatementNode* statement)
    121 {
    122     if (statement->isEmptyStatement())
    123         return;
    124     m_statements.append(statement);
    125 }
    126 
    127 inline StatementNode* SourceElements::singleStatement() const
    128 {
    129     size_t size = m_statements.size();
    130     return size == 1 ? m_statements[0] : 0;
    131 }
    132 
    133 inline StatementNode* SourceElements::lastStatement() const
    134 {
    135     size_t size = m_statements.size();
    136     return size ? m_statements[size - 1] : 0;
    137108}
    138109
     
    13271298// ------------------------------ SourceElements -------------------------------
    13281299
     1300
     1301inline StatementNode* SourceElements::lastStatement() const
     1302{
     1303    size_t size = m_statements.size();
     1304    return size ? m_statements[size - 1] : 0;
     1305}
     1306
    13291307inline void SourceElements::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
    13301308{
     
    19491927}
    19501928
    1951 // -----------------------------ScopeNodeData ---------------------------
    1952 
    1953 ScopeNodeData::ScopeNodeData(ParserArena& arena, SourceElements* statements, VarStack* varStack, FunctionStack* funcStack, int numConstants)
    1954     : m_numConstants(numConstants)
    1955     , m_statements(statements)
    1956 {
    1957     m_arena.swap(arena);
    1958     if (varStack)
    1959         m_varStack.swap(*varStack);
    1960     if (funcStack)
    1961         m_functionStack.swap(*funcStack);
    1962 }
    1963 
    19641929// ------------------------------ ScopeNode -----------------------------
    1965 
    1966 ScopeNode::ScopeNode(JSGlobalData* globalData)
    1967     : StatementNode(globalData)
    1968     , ParserArenaRefCounted(globalData)
    1969     , m_features(NoFeatures)
    1970 {
    1971 }
    1972 
    1973 ScopeNode::ScopeNode(JSGlobalData* globalData, const SourceCode& source, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, CodeFeatures features, int numConstants)
    1974     : StatementNode(globalData)
    1975     , ParserArenaRefCounted(globalData)
    1976     , m_data(new ScopeNodeData(globalData->parser->arena(), children, varStack, funcStack, numConstants))
    1977     , m_features(features)
    1978     , m_source(source)
    1979 {
    1980 }
    19811930
    19821931inline void ScopeNode::emitStatementsBytecode(BytecodeGenerator& generator, RegisterID* dst)
     
    19861935}
    19871936
    1988 StatementNode* ScopeNode::singleStatement() const
    1989 {
    1990     return m_data->m_statements ? m_data->m_statements->singleStatement() : 0;
    1991 }
    1992 
    19931937// ------------------------------ ProgramNode -----------------------------
    1994 
    1995 inline ProgramNode::ProgramNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
    1996     : ScopeNode(globalData, source, children, varStack, funcStack, features, numConstants)
    1997 {
    1998 }
    1999 
    2000 PassRefPtr<ProgramNode> ProgramNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
    2001 {
    2002     RefPtr<ProgramNode> node = new ProgramNode(globalData, children, varStack, funcStack, source, features, numConstants);
    2003 
    2004     ASSERT(node->data()->m_arena.last() == node);
    2005     node->data()->m_arena.removeLast();
    2006     ASSERT(!node->data()->m_arena.contains(node.get()));
    2007 
    2008     return node.release();
    2009 }
    20101938
    20111939RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
     
    20241952// ------------------------------ EvalNode -----------------------------
    20251953
    2026 inline EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
    2027     : ScopeNode(globalData, source, children, varStack, funcStack, features, numConstants)
    2028 {
    2029 }
    2030 
    2031 PassRefPtr<EvalNode> EvalNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
    2032 {
    2033     RefPtr<EvalNode> node = new EvalNode(globalData, children, varStack, funcStack, source, features, numConstants);
    2034 
    2035     ASSERT(node->data()->m_arena.last() == node);
    2036     node->data()->m_arena.removeLast();
    2037     ASSERT(!node->data()->m_arena.contains(node.get()));
    2038 
    2039     return node.release();
    2040 }
    2041 
    20421954RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
    20431955{
     
    20541966
    20551967// ------------------------------ FunctionBodyNode -----------------------------
    2056 
    2057 FunctionParameters::FunctionParameters(ParameterNode* firstParameter)
    2058 {
    2059     for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam())
    2060         append(parameter->ident());
    2061 }
    2062 
    2063 inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData)
    2064     : ScopeNode(globalData)
    2065 {
    2066 }
    2067 
    2068 inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
    2069     : ScopeNode(globalData, sourceCode, children, varStack, funcStack, features, numConstants)
    2070 {
    2071 }
    2072 
    2073 void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* firstParameter, const Identifier& ident)
    2074 {
    2075     setSource(source);
    2076     finishParsing(FunctionParameters::create(firstParameter), ident);
    2077 }
    2078 
    2079 void FunctionBodyNode::finishParsing(PassRefPtr<FunctionParameters> parameters, const Identifier& ident)
    2080 {
    2081     ASSERT(!source().isNull());
    2082     m_parameters = parameters;
    2083     m_ident = ident;
    2084 }
    2085 
    2086 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData)
    2087 {
    2088     return new FunctionBodyNode(globalData);
    2089 }
    2090 
    2091 PassRefPtr<FunctionBodyNode> FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
    2092 {
    2093     RefPtr<FunctionBodyNode> node = new FunctionBodyNode(globalData, children, varStack, funcStack, sourceCode, features, numConstants);
    2094 
    2095     ASSERT(node->data()->m_arena.last() == node);
    2096     node->data()->m_arena.removeLast();
    2097     ASSERT(!node->data()->m_arena.contains(node.get()));
    2098 
    2099     return node.release();
    2100 }
    21011968
    21021969RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
Note: See TracChangeset for help on using the changeset viewer.