Closed sigmundch closed 9 years ago
After we fix this, we can move the FYI bot back to the main waterfall and ensure it stays green.
It's not just dump info vs non-dump info, two successive runs of dart2js will produce different output:
$ dart2js --out=out1.js --package-root=out/ReleaseIA32/packages tests/html/custom/constructor_calls_created_synchronously_test.dart
$ dart2js --out=out2.js --package-root=out/ReleaseIA32/packages tests/html/custom/constructor_calls_created_synchronously_test.dart
$ diff -q out1.js out2.js
Files out1.js and out2.js differ
The difference is not simply the comment with the URL to the source map:
20586,20595c20586,20589
< C.Type_CWV = H.createRuntimeType("_TakeWhileStream");
< C.TypeVariable_2V1 = new H.TypeVariable(C.Type_CWV, "T", 9);
< C.Type_Mld = H.createRuntimeType("_StateStreamSubscription");
< C.TypeVariable_34s = new H.TypeVariable(C.Type_Mld, "T", 9);
< C.Type_o6V = H.createRuntimeType("Rectangle");
< C.TypeVariable_43h = new H.TypeVariable(C.Type_o6V, "T", 65);
< C.Type_kiv = H.createRuntimeType("_SyncStreamController");
< C.TypeVariable_4e8 = new H.TypeVariable(C.Type_kiv, "T", 9);
< C.Type_kTd = H.createRuntimeType("Pair");
< C.TypeVariable_6TA = new H.TypeVariable(C.Type_kTd, "F", 9);
---
> C.Type_lyG = H.createRuntimeType("_SkipWhileStream");
> C.TypeVariable_0Tm = new H.TypeVariable(C.Type_lyG, "T", 9);
> C.Type_8aB = H.createRuntimeType("_EventStream");
> C.TypeVariable_1uw = new H.TypeVariable(C.Type_8aB, "T", 140);
20597,20601c20591,20593
< C.TypeVariable_E4S = new H.TypeVariable(C.Type_Gx6, "E", 9);
< C.Type_bl8 = H.createRuntimeType("_BroadcastSubscription");
< C.TypeVariable_EJH = new H.TypeVariable(C.Type_bl8, "T", 9);
< C.Type_uzu = H.createRuntimeType("JsArray");
< C.TypeVariable_ES6 = new H.TypeVariable(C.Type_uzu, "E", 9);
---
> C.TypeVariable_23h = new H.TypeVariable(C.Type_Gx6, "E", 9);
> C.Type_c4R = H.createRuntimeType("ListQueue");
> C.TypeVariable_27D = new H.TypeVariable(C.Type_c4R, "E", 9);
20603,20605c20595,20601
< C.TypeVariable_Eeh = new H.TypeVariable(C.Type_ynF, "S", 9);
< C.Type_MMm = H.createRuntimeType("_ForwardingStreamSubscription");
< C.TypeVariable_FYo = new H.TypeVariable(C.Type_MMm, "T", 9);
---
> C.TypeVariable_2pe = new H.TypeVariable(C.Type_ynF, "T", 9);
> C.Type_e2q = H.createRuntimeType("_BroadcastStream");
> C.TypeVariable_6N7 = new H.TypeVariable(C.Type_e2q, "T", 9);
> C.Type_uzu = H.createRuntimeType("JsArray");
> C.TypeVariable_6m8 = new H.TypeVariable(C.Type_uzu, "E", 9);
> C.Type_bl8 = H.createRuntimeType("_BroadcastSubscription");
> C.TypeVariable_6vi = new H.TypeVariable(C.Type_bl8, "T", 9);
20607,20625c20603,20610
< C.TypeVariable_Gf5 = new H.TypeVariable(C.Type_Ofa, "E", 9);
< C.Type_0mC = H.createRuntimeType("_DelayedData");
< C.TypeVariable_Igx = new H.TypeVariable(C.Type_0mC, "T", 9);
< C.Type_lCi = H.createRuntimeType("Expando");
< C.TypeVariable_KDz = new H.TypeVariable(C.Type_lCi, "T", 9);
< C.Type_Irt = H.createRuntimeType("_AsyncCompleter");
< C.TypeVariable_LAZ = new H.TypeVariable(C.Type_Irt, "T", 9);
< C.Type_c4R = H.createRuntimeType("ListQueue");
< C.TypeVariable_Q9z = new H.TypeVariable(C.Type_c4R, "E", 9);
< C.Type_6eq = H.createRuntimeType("_SkipStream");
< C.TypeVariable_QC2 = new H.TypeVariable(C.Type_6eq, "T", 9);
< C.Type_8aB = H.createRuntimeType("_EventStream");
< C.TypeVariable_VWS = new H.TypeVariable(C.Type_8aB, "T", 140);
< C.TypeVariable_WfU = new H.TypeVariable(C.Type_kTd, "E", 9);
< C.Type_kKy = H.createRuntimeType("_EventStreamSubscription");
< C.TypeVariable_Y6h = new H.TypeVariable(C.Type_kKy, "T", 140);
< C.TypeVariable_YCG = new H.TypeVariable(C.Type_MMm, "S", 9);
< C.Type_Yma = H.createRuntimeType("_TakeStream");
< C.TypeVariable_aAc = new H.TypeVariable(C.Type_Yma, "T", 9);
---
> C.TypeVariable_8ED = new H.TypeVariable(C.Type_Ofa, "E", 9);
> C.TypeVariable_8eb = new H.TypeVariable(C.Type_ynF, "S", 9);
> C.Type_S4n = H.createRuntimeType("_ControllerSubscription");
> C.TypeVariable_DTk = new H.TypeVariable(C.Type_S4n, "T", 9);
> C.Type_Mld = H.createRuntimeType("_StateStreamSubscription");
> C.TypeVariable_ECL = new H.TypeVariable(C.Type_Mld, "T", 9);
> C.Type_kiv = H.createRuntimeType("_SyncStreamController");
> C.TypeVariable_FyU = new H.TypeVariable(C.Type_kiv, "T", 9);
20627,20629c20612
< C.TypeVariable_gc6 = new H.TypeVariable(C.Type_kvD, "T", 9);
< C.Type_1p9 = H.createRuntimeType("_WhereStream");
< C.TypeVariable_iQW = new H.TypeVariable(C.Type_1p9, "T", 9);
---
> C.TypeVariable_GR2 = new H.TypeVariable(C.Type_kvD, "T", 9);
20631,20640c20614,20622
< C.TypeVariable_kyR = new H.TypeVariable(C.Type_M5k, "T", 9);
< C.TypeVariable_miO = new H.TypeVariable(C.Type_ynF, "T", 9);
< C.Type_lyG = H.createRuntimeType("_SkipWhileStream");
< C.TypeVariable_oSP = new H.TypeVariable(C.Type_lyG, "T", 9);
< C.Type_iHe = H.createRuntimeType("_ControllerStream");
< C.TypeVariable_q96 = new H.TypeVariable(C.Type_iHe, "T", 9);
< C.Type_S4n = H.createRuntimeType("_ControllerSubscription");
< C.TypeVariable_qam = new H.TypeVariable(C.Type_S4n, "T", 9);
< C.Type_xwz = H.createRuntimeType("_SyncBroadcastStreamController");
< C.TypeVariable_sxw = new H.TypeVariable(C.Type_xwz, "T", 9);
---
> C.TypeVariable_K5z = new H.TypeVariable(C.Type_M5k, "T", 9);
> C.Type_o6V = H.createRuntimeType("Rectangle");
> C.TypeVariable_LrK = new H.TypeVariable(C.Type_o6V, "T", 65);
> C.Type_1p9 = H.createRuntimeType("_WhereStream");
> C.TypeVariable_MYA = new H.TypeVariable(C.Type_1p9, "T", 9);
> C.Type_kTd = H.createRuntimeType("Pair");
> C.TypeVariable_OyV = new H.TypeVariable(C.Type_kTd, "E", 9);
> C.Type_Yma = H.createRuntimeType("_TakeStream");
> C.TypeVariable_QTd = new H.TypeVariable(C.Type_Yma, "T", 9);
20642c20624,20633
< C.TypeVariable_wEo = new H.TypeVariable(C.Type_GTp, "T", 9);
---
> C.TypeVariable_RoN = new H.TypeVariable(C.Type_GTp, "T", 9);
> C.Type_xwz = H.createRuntimeType("_SyncBroadcastStreamController");
> C.TypeVariable_axv = new H.TypeVariable(C.Type_xwz, "T", 9);
> C.Type_0mC = H.createRuntimeType("_DelayedData");
> C.TypeVariable_cKo = new H.TypeVariable(C.Type_0mC, "T", 9);
> C.Type_kKy = H.createRuntimeType("_EventStreamSubscription");
> C.TypeVariable_d4k = new H.TypeVariable(C.Type_kKy, "T", 140);
> C.TypeVariable_gUn = new H.TypeVariable(C.Type_kTd, "F", 9);
> C.Type_MMm = H.createRuntimeType("_ForwardingStreamSubscription");
> C.TypeVariable_lXb = new H.TypeVariable(C.Type_MMm, "T", 9);
20644,20646c20635,20640
< C.TypeVariable_wk6 = new H.TypeVariable(C.Type_wMy, "T", 9);
< C.Type_e2q = H.createRuntimeType("_BroadcastStream");
< C.TypeVariable_yPV = new H.TypeVariable(C.Type_e2q, "T", 9);
---
> C.TypeVariable_vje = new H.TypeVariable(C.Type_wMy, "T", 9);
> C.Type_iHe = H.createRuntimeType("_ControllerStream");
> C.TypeVariable_wMy = new H.TypeVariable(C.Type_iHe, "T", 9);
> C.TypeVariable_wSA = new H.TypeVariable(C.Type_MMm, "S", 9);
> C.Type_CWV = H.createRuntimeType("_TakeWhileStream");
> C.TypeVariable_woc = new H.TypeVariable(C.Type_CWV, "T", 9);
20648c20642,20648
< C.TypeVariable_zzp = new H.TypeVariable(C.Type_ifn, "T", 9);
---
> C.TypeVariable_y1j = new H.TypeVariable(C.Type_ifn, "T", 9);
> C.Type_6eq = H.createRuntimeType("_SkipStream");
> C.TypeVariable_yfz = new H.TypeVariable(C.Type_6eq, "T", 9);
> C.Type_lCi = H.createRuntimeType("Expando");
> C.TypeVariable_yz3 = new H.TypeVariable(C.Type_lCi, "T", 9);
> C.Type_Irt = H.createRuntimeType("_AsyncCompleter");
> C.TypeVariable_zrt = new H.TypeVariable(C.Type_Irt, "T", 9);
20877c20877
< init.metadata = [null, "value", "f", "error", "stackTrace", "path", "index", "start", "zone", "end", "element", "other", C.C_Object, "iterable", 0, "parent", "test", "onError", "o", "subscription", "self", "key", "name", "line", "e", "_", "cancelOnError", "onDone", "onData", "arg", "data", "message", "matchState", "object", "sink", "html", "validator", "frame", "duration", "treeSanitizer", "uri", "trace", "actual", "arg1", "item", "arg2", "callback", "type", "length", "count", true, "listener", "x", "string", "text", "reason", "verbose", "", "scheme", "v", "action", "attributeName", "useCapture", "inputEvent", "description", "stack", "a0", "host", "zoneValues", "receiver", "location", "node", "s", "dispatch", false, "source", "part", "a1", "n", "matcher", "separator", "propertyName", "runGuarded", "future", "testCase", "a2", "skipCount", "tag", "expected", "specification", "newValue", C.TypeVariable_wk6, C.TypeVariable_YCG, C.TypeVariable_kyR, "event", "handleDone", "resumeSignal", C.TypeVariable_iQW, C.TypeVariable_2V1, "k", "growable", "startIndex", C.TypeVariable_oSP, "bytes", "codeUnits", "from", "a", "failed", "passed", "mismatchDescription", "a3", "invocation", "id", "codeUnit", "argumentError", "errors", "result", "newChild", "char", "target", "results", "args", "context", "uncaughtError", "depth", "messageText", "b", "style", "success", "parts", "onTimeout", C.TypeVariable_Q9z, "removeMatching", C.TypeVariable_Gf5, "method", "t", "initialValue", "input", "at", "property", "combine", "createProxy", "oldChild", "deep", "str", "timeLimit", "refChild", C.TypeVariable_FYo, C.TypeVariable_6TA, C.TypeVariable_WfU, "oldValue", "a4", "buff", "port", "current", C.TypeVariable_qam, "pos", "encoding", C.Utf8Codec_false, "isMatch", "hasAuthority", "slashTerminated", "invalidValue", "minValue", "maxValue", C.TypeVariable_q96, "charCode", C.TypeVariable_E4S, "segments", "body", "windows", "fragment", "queryParameters", "query", "pathSegments", C.TypeVariable_Igx, "userInfo", "msg", C.TypeVariable_EJH, "errorHandler", C.TypeVariable_gc6, "existingArgumentNames", "namedArguments", "positionalArguments", "memberName", "indexable", "endName", "firstSegment", "startName", C.TypeVariable_4e8, "strictIPv6", C.TypeVariable_sxw, "microseconds", "lowerCase", "component", "charTable", "encodedComponent", "milliseconds", "canonicalTable", "seconds", "spaceToPlus", "minutes", "plusToSpace", "factor", "quotient", "obj", "base", "reference", "hours", C.TypeVariable_yPV, "days", C.TypeVariable_ES6, "byteString", "position", "byte", "buffer", "isUtc", "filterStacks", "listeners", "uriPolicy", "newEntry", "millisecondsSinceEpoch", "win", "constructor", "interceptor", C.TypeVariable_QC2, "document", C.TypeVariable_wEo, "extendsTagName", "w", "notificationHandler", "objects", "tagName", "typeExtension", "to", "url", "timestamp", C.TypeVariable_LAZ, "newNodes", "units", "endIndex", "nextCodeUnit", "leadingSurrogate", "refNode", "targetOrigin", "transfer", "attr", "formatStacks", "corrupted", "attrs", "isAttr", "svg", "captureThis", "arguments", "allowMalformed", "allowInvalid", "offset", "expectedModificationCount", "elements", "uriOrPath", "member", "promise", "slot", "map", "newContents", "number", "initialCapacity", "part1", "part2", "part3", "part4", "part5", "part6", "part7", "part8", C.TypeVariable_34s, "otherZone", "predicate", "terse", "userCode", "testFilter", "configAutoStart", "period", "onSuccess", "flag", C.TypeVariable_KDz, "val", "_stream", C.TypeVariable_aAc, C.TypeVariable_zzp, "wasInputPaused", "pendingEvents", "a5", "setUp", "st", "needle", "each", "convert", "isLayoutTest", "arg4", "arg3", "stage", "testResult", "ignored", "numberOfArguments", "sender", C.TypeVariable_VWS, C.TypeVariable_Y6h, C.TypeVariable_Eeh, C.TypeVariable_miO, "eventId", "zoneSpecification", "closure", "actualElement", "isolate", "failureHandler", "handler", "maxLineLength", "maxItems", "indent", "seen", "top", "child", "match", "externalTestCase", "segment", "newLength"];
---
> init.metadata = [null, "value", "f", "error", "stackTrace", "path", "index", "start", "zone", "end", "element", "other", C.C_Object, "iterable", 0, "parent", "test", "onError", "o", "subscription", "self", "key", "name", "line", "e", "_", "cancelOnError", "onDone", "onData", "arg", "data", "message", "matchState", "object", "sink", "html", "validator", "frame", "duration", "treeSanitizer", "uri", "trace", "actual", "arg1", "item", "arg2", "callback", "type", "length", "count", true, "listener", "x", "string", "text", "reason", "verbose", "", "scheme", "v", "action", "attributeName", "useCapture", "inputEvent", "description", "stack", "a0", "host", "zoneValues", "receiver", "location", "node", "s", "dispatch", false, "source", "part", "a1", "n", "matcher", "separator", "propertyName", "runGuarded", "future", "testCase", "a2", "skipCount", "tag", "expected", "specification", "newValue", C.TypeVariable_vje, C.TypeVariable_wSA, C.TypeVariable_K5z, "event", "handleDone", "resumeSignal", C.TypeVariable_MYA, C.TypeVariable_woc, "k", "growable", "startIndex", C.TypeVariable_0Tm, "bytes", "codeUnits", "from", "a", "failed", "passed", "mismatchDescription", "a3", "invocation", "id", "codeUnit", "argumentError", "errors", "result", "newChild", "char", "target", "results", "args", "context", "uncaughtError", "depth", "messageText", "b", "style", "success", "parts", "onTimeout", C.TypeVariable_27D, "removeMatching", C.TypeVariable_8ED, "method", "t", "initialValue", "input", "at", "property", "combine", "createProxy", "oldChild", "deep", "str", "timeLimit", "refChild", C.TypeVariable_lXb, C.TypeVariable_gUn, C.TypeVariable_OyV, "oldValue", "a4", "buff", "port", "current", C.TypeVariable_DTk, "pos", "encoding", C.Utf8Codec_false, "isMatch", "hasAuthority", "slashTerminated", "invalidValue", "minValue", "maxValue", C.TypeVariable_wMy, "charCode", C.TypeVariable_23h, "segments", "body", "windows", "fragment", "queryParameters", "query", "pathSegments", C.TypeVariable_cKo, "userInfo", "msg", C.TypeVariable_6vi, "errorHandler", C.TypeVariable_GR2, "existingArgumentNames", "namedArguments", "positionalArguments", "memberName", "indexable", "endName", "firstSegment", "startName", C.TypeVariable_FyU, "strictIPv6", C.TypeVariable_axv, "microseconds", "lowerCase", "component", "charTable", "encodedComponent", "milliseconds", "canonicalTable", "seconds", "spaceToPlus", "minutes", "plusToSpace", "factor", "quotient", "obj", "base", "reference", "hours", C.TypeVariable_6N7, "days", C.TypeVariable_6m8, "byteString", "position", "byte", "buffer", "isUtc", "filterStacks", "listeners", "uriPolicy", "newEntry", "millisecondsSinceEpoch", "win", "constructor", "interceptor", C.TypeVariable_yfz, "document", C.TypeVariable_RoN, "extendsTagName", "w", "notificationHandler", "objects", "tagName", "typeExtension", "to", "url", "timestamp", C.TypeVariable_zrt, "newNodes", "units", "endIndex", "nextCodeUnit", "leadingSurrogate", "refNode", "targetOrigin", "transfer", "attr", "formatStacks", "corrupted", "attrs", "isAttr", "svg", "captureThis", "arguments", "allowMalformed", "allowInvalid", "offset", "expectedModificationCount", "elements", "uriOrPath", "member", "promise", "slot", "map", "newContents", "number", "initialCapacity", "part1", "part2", "part3", "part4", "part5", "part6", "part7", "part8", C.TypeVariable_ECL, "otherZone", "predicate", "terse", "userCode", "testFilter", "configAutoStart", "period", "onSuccess", "flag", C.TypeVariable_yz3, "val", "_stream", C.TypeVariable_QTd, C.TypeVariable_y1j, "wasInputPaused", "pendingEvents", "a5", "setUp", "st", "needle", "each", "convert", "isLayoutTest", "arg4", "arg3", "stage", "testResult", "ignored", "numberOfArguments", "sender", C.TypeVariable_1uw, C.TypeVariable_d4k, C.TypeVariable_8eb, C.TypeVariable_2pe, "eventId", "zoneSpecification", "closure", "actualElement", "isolate", "failureHandler", "handler", "maxLineLength", "maxItems", "indent", "seen", "top", "child", "match", "externalTestCase", "segment", "newLength"];
21038c21038
< //# sourceMappingURL=out1.js.map
---
> //# sourceMappingURL=out2.js.map
Good point Harry. I also the idea you mentioned offline: we might want check whether 2 subsequent runs of dart2js with the same input and flags have the same output.
@iposva-google - does the VM has a mechanism to make sources of non-determinism more likely to show up while testing (for example, a way to force hash-codes to be generated at random with a different seed)?
Fix available: https://codereview.chromium.org/1358363002/
Thanks @rakudrama for the fix in https://github.com/dart-lang/sdk/commit/8852bf9e14683b15607f9df42d69bd58acf873bc
A couple tests seem to be failing in this FYI bot:
http://build.chromium.org/p/client.dart.fyi/builders/dart2js-dump-info-be/builds/7460/steps/Compare%20outputs/logs/stdio