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

Unified Diff: runtime/bin/vmservice/client/lib/src/service/object.dart

Issue 216883008: Use tokenPos instead of line/col in the vm service. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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: runtime/bin/vmservice/client/lib/src/service/object.dart
diff --git a/runtime/bin/vmservice/client/lib/src/service/object.dart b/runtime/bin/vmservice/client/lib/src/service/object.dart
index 5e008d16d4e34474c361fd98c440a38b39849955..0341965852e609642a3ae3c9e7986e591fbc63a7 100644
--- a/runtime/bin/vmservice/client/lib/src/service/object.dart
+++ b/runtime/bin/vmservice/client/lib/src/service/object.dart
@@ -819,6 +819,14 @@ class Script extends ServiceObject {
Script._empty(ServiceObjectOwner owner) : super._empty(owner);
+ /// This function maps a token position to a line number.
+ int tokenToLine(int token) => _tokenToLine[token];
+ Map _tokenToLine;
+
+ /// This function maps a token position to a column number.
+ int tokenToCol(int token) => _tokenToCol[token];
+ Map _tokenToCol;
+
void _update(ObservableMap map, bool mapIsRef) {
kind = map['kind'];
_url = map['name'];
@@ -826,6 +834,26 @@ class Script extends ServiceObject {
name = _shortUrl;
vmName = _url;
_processSource(map['source']);
+ _parseTokenPosTable(map['tokenPosTable']);
+ }
+
+ void _parseTokenPosTable(List<List<int>> table) {
+ if (table == null) {
+ return;
+ }
+ _tokenToLine = {};
+ _tokenToCol = {};
+ for (var line in table) {
+ // Each entry begins with a line number...
+ var lineNumber = line[0];
+ for (var pos = 1; pos < line.length; pos += 2) {
+ // ...and is followed by (token offset, col number) pairs.
+ var tokenOffset = line[pos];
+ var colNumber = line[pos+1];
+ _tokenToLine[tokenOffset] = lineNumber;
+ _tokenToCol[tokenOffset] = colNumber;
+ }
+ }
}
void _processHits(List scriptHits) {

Powered by Google App Engine
This is Rietveld 408576698