Get rid of QV4::Function::lineNumberMappings by porting moth to the new mapping
authorSimon Hausmann <simon.hausmann@digia.com>
Fri, 16 Aug 2013 14:43:14 +0000 (16:43 +0200)
committerLars Knoll <lars.knoll@digia.com>
Fri, 16 Aug 2013 17:15:59 +0000 (19:15 +0200)
Change-Id: Ib79489ac4c6c93042143be1f512d29c13d4cd3c6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/qml/compiler/qv4isel_moth.cpp
src/qml/jsruntime/qv4function_p.h

index fb4c780..7b06901 100644 (file)
@@ -245,18 +245,17 @@ void InstructionSelection::run(QV4::Function *vmFunction, V4IR::Function *functi
     push.value = quint32(locals);
     addInstruction(push);
 
+    QVector<uint> lineNumberMappings;
+    lineNumberMappings.reserve(_function->basicBlocks.size() * 2);
+
     for (int i = 0, ei = _function->basicBlocks.size(); i != ei; ++i) {
         _block = _function->basicBlocks[i];
         _nextBlock = (i < ei - 1) ? _function->basicBlocks[i + 1] : 0;
         _addrs.insert(_block, _codeNext - _codeStart);
 
         foreach (V4IR::Stmt *s, _block->statements) {
-            if (s->location.isValid()) {
-                QV4::LineNumberMapping mapping;
-                mapping.codeOffset = _codeNext - _codeStart;
-                mapping.lineNumber = s->location.startLine;
-                _vmFunction->lineNumberMappings.append(mapping);
-            }
+            if (s->location.isValid())
+                lineNumberMappings << _codeNext - _codeStart << s->location.startLine;
 
             if (opt.isInSSA() && s->asTerminator()) {
                 foreach (const V4IR::Optimizer::SSADeconstructionMove &move,
@@ -274,6 +273,8 @@ void InstructionSelection::run(QV4::Function *vmFunction, V4IR::Function *functi
         }
     }
 
+    registerLineNumberMapping(_function, lineNumberMappings);
+
     // TODO: patch stack size (the push instruction)
     patchJumpAddresses();
 
index 4263e39..47215cf 100644 (file)
@@ -100,8 +100,6 @@ struct Function {
     QVector<String *> locals;
     QVector<Function *> nestedFunctions;
 
-    QVector<LineNumberMapping> lineNumberMappings;
-
     ExecutionEngine *engine;
 
     Function(ExecutionEngine *engine, String *name)