source: webkit/trunk/JavaScriptCore/kjs/NodeInfo.h@ 38061

Last change on this file since 38061 was 37275, checked in by [email protected], 17 years ago

2008-10-03 Maciej Stachowiak <[email protected]>

Reviewed by Cameron Zwarich.


  • Some code cleanup to how we handle code features.


1) Rename FeatureInfo typedef to CodeFeatures.
2) Rename NodeFeatureInfo template to NodeInfo.
3) Keep CodeFeature bitmask in ScopeNode instead of trying to break it out into individual bools.
4) Rename misleadingly named "needsClosure" method to "containsClosures", which better describes the meaning
of ClosureFeature.
5) Make setUsersArguments() not take an argument since it only goes one way.

  • JavaScriptCore.exp:
  • VM/CodeBlock.h: (JSC::CodeBlock::CodeBlock):
  • kjs/NodeInfo.h:
  • kjs/Parser.cpp: (JSC::Parser::didFinishParsing):
  • kjs/Parser.h: (JSC::Parser::parse):
  • kjs/grammar.y:
  • kjs/nodes.cpp: (JSC::ScopeNode::ScopeNode): (JSC::ProgramNode::ProgramNode): (JSC::ProgramNode::create): (JSC::EvalNode::EvalNode): (JSC::EvalNode::create): (JSC::FunctionBodyNode::FunctionBodyNode): (JSC::FunctionBodyNode::create):
  • kjs/nodes.h: (JSC::ScopeNode::usesEval): (JSC::ScopeNode::containsClosures): (JSC::ScopeNode::usesArguments): (JSC::ScopeNode::setUsesArguments):
  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1/*
2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 *
18 */
19
20#ifndef NodeInfo_h
21#define NodeInfo_h
22
23#include "nodes.h"
24#include "Parser.h"
25
26namespace JSC {
27
28 template <typename T> struct NodeInfo {
29 T m_node;
30 CodeFeatures m_features;
31 int m_numConstants;
32 };
33
34 typedef NodeInfo<FuncDeclNode*> FuncDeclNodeInfo;
35 typedef NodeInfo<FuncExprNode*> FuncExprNodeInfo;
36 typedef NodeInfo<ExpressionNode*> ExpressionNodeInfo;
37 typedef NodeInfo<ArgumentsNode*> ArgumentsNodeInfo;
38 typedef NodeInfo<ConstDeclNode*> ConstDeclNodeInfo;
39 typedef NodeInfo<PropertyNode*> PropertyNodeInfo;
40 typedef NodeInfo<PropertyList> PropertyListInfo;
41 typedef NodeInfo<ElementList> ElementListInfo;
42 typedef NodeInfo<ArgumentList> ArgumentListInfo;
43
44 template <typename T> struct NodeDeclarationInfo {
45 T m_node;
46 ParserRefCountedData<DeclarationStacks::VarStack>* m_varDeclarations;
47 ParserRefCountedData<DeclarationStacks::FunctionStack>* m_funcDeclarations;
48 CodeFeatures m_features;
49 int m_numConstants;
50 };
51
52 typedef NodeDeclarationInfo<StatementNode*> StatementNodeInfo;
53 typedef NodeDeclarationInfo<CaseBlockNode*> CaseBlockNodeInfo;
54 typedef NodeDeclarationInfo<CaseClauseNode*> CaseClauseNodeInfo;
55 typedef NodeDeclarationInfo<SourceElements*> SourceElementsInfo;
56 typedef NodeDeclarationInfo<ClauseList> ClauseListInfo;
57 typedef NodeDeclarationInfo<ExpressionNode*> VarDeclListInfo;
58 typedef NodeDeclarationInfo<ConstDeclList> ConstDeclListInfo;
59 typedef NodeDeclarationInfo<ParameterList> ParameterListInfo;
60
61} // namespace JSC
62
63#endif // NodeInfo_h
Note: See TracBrowser for help on using the repository browser.