Changeset 127698 in webkit for trunk/Source/JavaScriptCore/runtime/Executable.cpp
- Timestamp:
- Sep 5, 2012, 11:17:59 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/Executable.cpp
r127505 r127698 134 134 const ClassInfo FunctionExecutable::s_info = { "FunctionExecutable", &ScriptExecutable::s_info, 0, 0, CREATE_METHOD_TABLE(FunctionExecutable) }; 135 135 136 FunctionExecutable::FunctionExecutable(JSGlobalData& globalData, const Identifier& name, const Identifier& inferredName, const SourceCode& source, bool forceUsesArguments, FunctionParameters* parameters, bool inStrictContext)137 : ScriptExecutable(globalData.functionExecutableStructure.get(), globalData, source, inStrictContext)136 FunctionExecutable::FunctionExecutable(JSGlobalData& globalData, FunctionBodyNode* node) 137 : ScriptExecutable(globalData.functionExecutableStructure.get(), globalData, node->source(), node->isStrictMode()) 138 138 , m_numCapturedVariables(0) 139 , m_forceUsesArguments(forceUsesArguments) 140 , m_parameters(parameters) 141 , m_name(name) 142 , m_inferredName(inferredName.isNull() ? globalData.propertyNames->emptyIdentifier : inferredName) 143 { 144 } 145 146 FunctionExecutable::FunctionExecutable(ExecState* exec, const Identifier& name, const Identifier& inferredName, const SourceCode& source, bool forceUsesArguments, FunctionParameters* parameters, bool inStrictContext) 147 : ScriptExecutable(exec->globalData().functionExecutableStructure.get(), exec, source, inStrictContext) 148 , m_numCapturedVariables(0) 149 , m_forceUsesArguments(forceUsesArguments) 150 , m_parameters(parameters) 151 , m_name(name) 152 , m_inferredName(inferredName.isNull() ? exec->globalData().propertyNames->emptyIdentifier : inferredName) 153 { 139 , m_forceUsesArguments(node->usesArguments()) 140 , m_parameters(node->parameters()) 141 , m_name(node->ident()) 142 , m_inferredName(node->inferredName().isNull() ? globalData.propertyNames->emptyIdentifier : node->inferredName()) 143 { 144 m_firstLine = node->lineNo(); 145 m_lastLine = node->lastLine(); 154 146 } 155 147 … … 211 203 if (!lexicalGlobalObject->evalEnabled()) 212 204 return throwError(exec, createEvalError(exec, ASCIILiteral("Eval is disabled"))); 213 RefPtr<EvalNode> evalNode = parse<EvalNode>(globalData, lexicalGlobalObject, m_source, 0, isStrictMode() ? JSParseStrict : JSParseNormal, EvalNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception);205 RefPtr<EvalNode> evalNode = parse<EvalNode>(globalData, lexicalGlobalObject, m_source, 0, Identifier(), isStrictMode() ? JSParseStrict : JSParseNormal, EvalNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception); 214 206 if (!evalNode) { 215 207 ASSERT(exception); … … 294 286 JSGlobalData* globalData = &exec->globalData(); 295 287 JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject(); 296 RefPtr<ProgramNode> programNode = parse<ProgramNode>(globalData, lexicalGlobalObject, m_source, 0, JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception);288 RefPtr<ProgramNode> programNode = parse<ProgramNode>(globalData, lexicalGlobalObject, m_source, 0, Identifier(), JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception); 297 289 if (programNode) 298 290 return 0; … … 336 328 m_programCodeBlock = newCodeBlock.release(); 337 329 } else { 338 RefPtr<ProgramNode> programNode = parse<ProgramNode>(globalData, lexicalGlobalObject, m_source, 0, isStrictMode() ? JSParseStrict : JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception);330 RefPtr<ProgramNode> programNode = parse<ProgramNode>(globalData, lexicalGlobalObject, m_source, 0, Identifier(), isStrictMode() ? JSParseStrict : JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, lexicalGlobalObject->debugger(), exec, &exception); 339 331 if (!programNode) { 340 332 ASSERT(exception); … … 479 471 JSGlobalData* globalData = scope->globalData(); 480 472 JSGlobalObject* globalObject = scope->globalObject(); 481 RefPtr<FunctionBodyNode> body = parse<FunctionBodyNode>(globalData, globalObject, m_source, m_parameters.get(), isStrictMode() ? JSParseStrict : JSParseNormal, FunctionBodyNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, 0, 0, &exception); 473 RefPtr<FunctionBodyNode> body = parse<FunctionBodyNode>( 474 globalData, 475 globalObject, 476 m_source, 477 m_parameters.get(), 478 name(), 479 isStrictMode() ? JSParseStrict : JSParseNormal, 480 FunctionBodyNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, 481 0, 482 0, 483 &exception 484 ); 482 485 483 486 if (!body) { … … 648 651 } 649 652 650 FunctionExecutable* FunctionExecutable::fromGlobalCode(const Identifier& functionName, ExecState* exec, Debugger* debugger, const SourceCode& source, JSObject** exception)653 FunctionExecutable* FunctionExecutable::fromGlobalCode(const Identifier& name, ExecState* exec, Debugger* debugger, const SourceCode& source, JSObject** exception) 651 654 { 652 655 JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject(); 653 RefPtr<ProgramNode> program = parse<ProgramNode>(&exec->globalData(), lexicalGlobalObject, source, 0, JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, debugger, exec, exception);656 RefPtr<ProgramNode> program = parse<ProgramNode>(&exec->globalData(), lexicalGlobalObject, source, 0, Identifier(), JSParseNormal, ProgramNode::isFunctionNode ? JSParseFunctionCode : JSParseProgramCode, debugger, exec, exception); 654 657 if (!program) { 655 658 ASSERT(*exception); … … 657 660 } 658 661 659 // Uses of this function that would not result in a single function expression are invalid.662 // This function assumes an input string that would result in a single anonymous function expression. 660 663 StatementNode* exprStatement = program->singleStatement(); 661 664 ASSERT(exprStatement); … … 666 669 FunctionBodyNode* body = static_cast<FuncExprNode*>(funcExpr)->body(); 667 670 ASSERT(body); 668 669 return FunctionExecutable::create(exec->globalData(), functionName, functionName, body->source(), body->usesArguments(), body->parameters(), body->isStrictMode(), body->lineNo(), body->lastLine()); 671 ASSERT(body->ident().isNull()); 672 673 FunctionExecutable* functionExecutable = FunctionExecutable::create(exec->globalData(), body); 674 functionExecutable->m_nameValue.set(exec->globalData(), functionExecutable, jsString(&exec->globalData(), name.ustring())); 675 return functionExecutable; 670 676 } 671 677
Note:
See TracChangeset
for help on using the changeset viewer.