Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Unified Diff: lib/compiler/implementation/js_backend/emitter.dart

Issue 10911091: Add empty mapping entries for the ranges of generated JavaScript that don't map to any Dart source … (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/compiler/implementation/js_backend/emitter.dart
diff --git a/lib/compiler/implementation/js_backend/emitter.dart b/lib/compiler/implementation/js_backend/emitter.dart
index bb12652bed2f6c8ac3f221b0283c957a768be005..fc5b3a41dc29cdf2a716ca3d95f4b28bf6a95756 100644
--- a/lib/compiler/implementation/js_backend/emitter.dart
+++ b/lib/compiler/implementation/js_backend/emitter.dart
@@ -35,7 +35,6 @@ class CodeEmitterTask extends CompilerTask {
final Map<int, String> boundClosureCache;
final bool generateSourceMap;
- final SourceMapBuilder sourceMapBuilder;
CodeEmitterTask(Compiler compiler, [bool generateSourceMap = false])
: namer = compiler.namer,
@@ -43,7 +42,6 @@ class CodeEmitterTask extends CompilerTask {
mainBuffer = new CodeBuffer(),
boundClosureCache = new Map<int, String>(),
generateSourceMap = generateSourceMap,
- sourceMapBuilder = new SourceMapBuilder(),
super(compiler) {
nativeEmitter = new NativeEmitter(this);
}
@@ -534,7 +532,6 @@ function(collectedClasses) {
needsComma = true;
buffer.add('\n');
buffer.add(' $name: ');
- addMappings(memberBuffer, buffer.length);
buffer.add(memberBuffer);
}
@@ -692,7 +689,6 @@ function(collectedClasses) {
if (!element.isInstanceMember()) {
String functionName = functionNamer(element);
buffer.add('$isolateProperties.$functionName = ');
- addMappings(functionBuffer, buffer.length);
buffer.add(functionBuffer);
buffer.add(';\n\n');
}
@@ -1180,7 +1176,7 @@ if (typeof document != 'undefined' && document.readyState != 'complete') {
if (generateSourceMap) {
SourceFile compiledFile = new SourceFile(null, compiler.assembledCode);
- String sourceMap = sourceMapBuilder.build(compiledFile);
+ String sourceMap = buildSourceMap(mainBuffer, compiledFile);
// TODO(podivilov): We should find a better way to return source maps to
// compiler. Using diagnostic handler for that purpose is a temporary
// hack.
@@ -1191,17 +1187,22 @@ if (typeof document != 'undefined' && document.readyState != 'complete') {
return compiler.assembledCode;
}
- void addMappings(CodeBuffer buffer, int bufferOffset) {
+ String buildSourceMap(CodeBuffer buffer, SourceFile compiledFile) {
+ SourceMapBuilder sourceMapBuilder = new SourceMapBuilder();
buffer.forEachSourceLocation((Element element, Token token, int offset) {
+ if (element == null) {
+ sourceMapBuilder.addMapping(null, null, null, offset);
+ return;
+ }
SourceFile sourceFile = element.getCompilationUnit().script.file;
String sourceName = null;
if (token.kind === IDENTIFIER_TOKEN) {
sourceName = token.slowToString();
}
- int totalOffset = bufferOffset + offset;
sourceMapBuilder.addMapping(
- sourceFile, token.charOffset, sourceName, totalOffset);
+ sourceFile, token.charOffset, sourceName, offset);
});
+ return sourceMapBuilder.build(compiledFile);
}
}

Powered by Google App Engine
This is Rietveld 408576698