~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
 
32
32
using std::auto_ptr;
33
33
 
 
34
#ifndef yyparse
34
35
extern int jscyyparse(void*);
 
36
#endif
35
37
 
36
38
namespace JSC {
37
39
 
38
40
void Parser::parse(JSGlobalData* globalData, int* errLine, UString* errMsg)
39
41
{
40
 
    ASSERT(!m_sourceElements);
 
42
    m_sourceElements = 0;
41
43
 
42
44
    int defaultErrLine;
43
45
    UString defaultErrMsg;
51
53
    *errMsg = 0;
52
54
 
53
55
    Lexer& lexer = *globalData->lexer;
54
 
    lexer.setCode(*m_source);
 
56
    lexer.setCode(*m_source, m_arena);
55
57
 
56
58
    int parseError = jscyyparse(globalData);
57
59
    bool lexError = lexer.sawError();
 
60
    int lineNumber = lexer.lineNumber();
58
61
    lexer.clear();
59
62
 
60
 
    ParserRefCounted::deleteNewObjects(globalData);
61
 
 
62
63
    if (parseError || lexError) {
63
 
        *errLine = lexer.lineNo();
 
64
        *errLine = lineNumber;
64
65
        *errMsg = "Parse error";
65
 
        m_sourceElements.clear();
 
66
        m_sourceElements = 0;
66
67
    }
67
68
}
68
69
 
69
 
void Parser::reparseInPlace(JSGlobalData* globalData, FunctionBodyNode* functionBodyNode)
70
 
{
71
 
    ASSERT(!functionBodyNode->data());
72
 
 
73
 
    m_source = &functionBodyNode->source();
74
 
    globalData->lexer->setIsReparsing();
75
 
    parse(globalData, 0, 0);
76
 
    ASSERT(m_sourceElements);
77
 
 
78
 
    functionBodyNode->adoptData(std::auto_ptr<ScopeNodeData>(new ScopeNodeData(m_sourceElements.get(),
79
 
                                                                               m_varDeclarations ? &m_varDeclarations->data : 0, 
80
 
                                                                               m_funcDeclarations ? &m_funcDeclarations->data : 0,
81
 
                                                                               m_numConstants)));
82
 
    bool usesArguments = functionBodyNode->usesArguments();
83
 
    functionBodyNode->setFeatures(m_features);
84
 
    if (usesArguments && !functionBodyNode->usesArguments())
85
 
        functionBodyNode->setUsesArguments();
86
 
 
87
 
    m_source = 0;
88
 
    m_sourceElements = 0;
89
 
    m_varDeclarations = 0;
90
 
    m_funcDeclarations = 0;
91
 
}
92
 
 
93
 
void Parser::didFinishParsing(SourceElements* sourceElements, ParserRefCountedData<DeclarationStacks::VarStack>* varStack, 
94
 
                              ParserRefCountedData<DeclarationStacks::FunctionStack>* funcStack, CodeFeatures features, int lastLine, int numConstants)
 
70
void Parser::didFinishParsing(SourceElements* sourceElements, ParserArenaData<DeclarationStacks::VarStack>* varStack, 
 
71
                              ParserArenaData<DeclarationStacks::FunctionStack>* funcStack, CodeFeatures features, int lastLine, int numConstants)
95
72
{
96
73
    m_sourceElements = sourceElements;
97
74
    m_varDeclarations = varStack;