QV4::Value (*code)(ExecutionContext *, const uchar *);
quint32 nameIndex;
+ quint32 sourceFileIndex;
qint64 flags;
quint32 nFormals;
quint32 formalsOffset;
{
foreach (QQmlJS::V4IR::Function *f, irModule->functions) {
registerString(*f->name);
+ registerString(f->sourceFile);
for (int i = 0; i < f->formals.size(); ++i)
registerString(*f->formals.at(i));
for (int i = 0; i < f->locals.size(); ++i)
{
QV4::CompiledData::Function *function = (QV4::CompiledData::Function *)f;
function->nameIndex = getStringId(*irFunction->name);
+ function->sourceFileIndex = getStringId(irFunction->sourceFile);
function->flags = 0;
if (irFunction->hasDirectEval)
function->flags |= CompiledData::Function::HasDirectEval;
QV4::Function *vmFunction = _engine->newFunction(irFunction->name ? *irFunction->name : QString());
_irToVM.insert(irFunction, vmFunction);
- vmFunction->sourceFile = irFunction->sourceFile;
-
if (outer)
outer->addNestedFunction(vmFunction);
}
state.function = function;
- state.fileName = function->sourceFile;
+ state.fileName = function->sourceFile();
qptrdiff relativeProgramCounter = code - function->codeData;
state.lineNumber = function->lineNumberForProgramCounter(relativeProgramCounter);
void Debugger::BreakPoints::applyToFunction(Function *function, bool removeBreakPoints)
{
- Iterator breakPointsForFile = find(function->sourceFile);
+ Iterator breakPointsForFile = find(function->sourceFile());
if (breakPointsForFile == end())
return;
if (CallContext *callCtx = c->asCallContext()) {
StackFrame frame;
if (callCtx->function->function)
- frame.source = callCtx->function->function->sourceFile;
+ frame.source = callCtx->function->function->sourceFile();
frame.function = callCtx->function->name->toQString();
frame.line = -1;
frame.column = -1;
if (frameLimit && globalCode) {
StackFrame frame;
- frame.source = globalCode->sourceFile;
+ frame.source = globalCode->sourceFile();
frame.function = globalCode->name->toQString();
frame.line = -1;
frame.column = -1;
while (c) {
if (CallContext *callCtx = c->asCallContext()) {
if (callCtx->function->function)
- base.setUrl(callCtx->function->function->sourceFile);
+ base.setUrl(callCtx->function->function->sourceFile());
break;
}
c = c->parent;
}
if (base.isEmpty() && globalCode)
- base.setUrl(globalCode->sourceFile);
+ base.setUrl(globalCode->sourceFile());
if (base.isEmpty())
return src;
Lookup *lookups;
- QString sourceFile;
QVector<LineNumberMapping> lineNumberMappings;
ExecutionEngine *engine;
nestedFunctions.append(f);
}
+ inline QString sourceFile() const { return compilationUnit->data->stringAt(compiledFunction->sourceFileIndex)->qString(); }
+
inline bool usesArgumentsObject() const { return compiledFunction->flags & CompiledData::Function::UsesArgumentsObject; }
inline bool isStrict() const { return compiledFunction->flags & CompiledData::Function::IsStrict; }
inline bool isNamedExpression() const { return compiledFunction->flags & CompiledData::Function::IsNamedExpression; }