diff --git a/src/core/evaluator.js b/src/core/evaluator.js
index 41f6571a7..09417e0ee 100644
--- a/src/core/evaluator.js
+++ b/src/core/evaluator.js
@@ -1920,6 +1920,7 @@ var OperatorList = (function OperatorListClosure() {
     this.fnArray = [];
     this.argsArray = [];
     this.dependencies = {};
+    this._totalLength = 0;
     this.pageIndex = pageIndex;
     this.intent = intent;
   }
@@ -1929,6 +1930,14 @@ var OperatorList = (function OperatorListClosure() {
       return this.argsArray.length;
     },
 
+    /**
+     * @returns {number} The total length of the entire operator list,
+     *                   since `this.length === 0` after flushing.
+     */
+    get totalLength() {
+      return (this._totalLength + this.length);
+    },
+
     addOp: function(fn, args) {
       this.fnArray.push(fn);
       this.argsArray.push(args);
@@ -1977,12 +1986,15 @@ var OperatorList = (function OperatorListClosure() {
         new QueueOptimizer().optimize(this);
       }
       var transfers = getTransfers(this);
+      var length = this.length;
+      this._totalLength += length;
+
       this.messageHandler.send('RenderPageChunk', {
         operatorList: {
           fnArray: this.fnArray,
           argsArray: this.argsArray,
           lastChunk: lastChunk,
-          length: this.length
+          length: length
         },
         pageIndex: this.pageIndex,
         intent: this.intent
diff --git a/src/core/worker.js b/src/core/worker.js
index 7440534e7..72caafc7f 100644
--- a/src/core/worker.js
+++ b/src/core/worker.js
@@ -467,7 +467,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
           finishWorkerTask(task);
 
           info('page=' + pageNum + ' - getOperatorList: time=' +
-               (Date.now() - start) + 'ms, len=' + operatorList.fnArray.length);
+               (Date.now() - start) + 'ms, len=' + operatorList.totalLength);
         }, function(e) {
           finishWorkerTask(task);
           if (task.terminated) {
diff --git a/test/unit/evaluator_spec.js b/test/unit/evaluator_spec.js
index 5e21122c5..c4543c407 100644
--- a/test/unit/evaluator_spec.js
+++ b/test/unit/evaluator_spec.js
@@ -305,4 +305,25 @@ describe('evaluator', function() {
       });
     });
   });
+
+  describe('operator list', function () {
+    function MessageHandlerMock() { }
+    MessageHandlerMock.prototype = {
+      send: function () { },
+    };
+
+    it('should get correct total length after flushing', function () {
+      var operatorList = new OperatorList(null, new MessageHandlerMock());
+      operatorList.addOp(OPS.save, null);
+      operatorList.addOp(OPS.restore, null);
+
+      expect(operatorList.totalLength).toEqual(2);
+      expect(operatorList.length).toEqual(2);
+
+      operatorList.flush();
+
+      expect(operatorList.totalLength).toEqual(2);
+      expect(operatorList.length).toEqual(0);
+    });
+  });
 });