tree 5f64e17754336b567dfd608d658394f4d5d38a6e
parent d4e1f1364424367346d2dbf1f4bb51966cb6e674
author Stephen Adams <sra@google.com> 1469581325 -0700
committer Stephen Adams <sra@google.com> 1469581325 -0700

Avoid using call-through stub on calls to fields.

This usually removes the demand for the call-through stub and sometimes enables optimizations on the field load, e.g.:

    WhereIterator: {
      "^": "Iterator;_iterator,_f",
      moveNext$0: function() {
        for (var t1 = this._iterator; t1.moveNext$0();)
          if (this._f$1(t1.get$current()) === true)
            return true;
        return false;
      },
      _f$1: function(arg0) {
        return this._f.call$1(arg0);
      }
      ...
-->
    WhereIterator: {
      "^": "Iterator;_iterator,_f",
      moveNext$0: function() {
        var t1, t2;
        for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();)
          if (t2.call$1(t1.get$current()) === true)
            return true;
        return false;
      },
      ...

BUG= https://github.com/dart-lang/sdk/issues/22197
R=sigmund@google.com

Review URL: https://codereview.chromium.org/2180363002 .
