X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fv8%2Fsrc%2Fmirror-debugger.js;h=da031d3383b55321827fee2d8bbb8e14477e7049;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=c36d6fd720b7bf1096de432cd180b797a0d77ad8;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/v8/src/mirror-debugger.js b/src/v8/src/mirror-debugger.js index c36d6fd..da031d3 100644 --- a/src/v8/src/mirror-debugger.js +++ b/src/v8/src/mirror-debugger.js @@ -85,6 +85,8 @@ function MakeMirror(value, opt_transient) { mirror = new MapMirror(value); } else if (IS_SET(value) || IS_WEAKSET(value)) { mirror = new SetMirror(value); + } else if (IS_MAP_ITERATOR(value) || IS_SET_ITERATOR(value)) { + mirror = new IteratorMirror(value); } else if (ObjectIsPromise(value)) { mirror = new PromiseMirror(value); } else if (IS_GENERATOR(value)) { @@ -163,6 +165,7 @@ var SCOPE_TYPE = 'scope'; var PROMISE_TYPE = 'promise'; var MAP_TYPE = 'map'; var SET_TYPE = 'set'; +var ITERATOR_TYPE = 'iterator'; var GENERATOR_TYPE = 'generator'; // Maximum length when sending strings through the JSON protocol. @@ -217,6 +220,7 @@ var ScopeType = { Global: 0, // - PromiseMirror // - MapMirror // - SetMirror +// - IteratorMirror // - GeneratorMirror // - PropertyMirror // - InternalPropertyMirror @@ -456,6 +460,15 @@ Mirror.prototype.isSet = function() { /** + * Check whether the mirror reflects an iterator. + * @returns {boolean} True if the mirror reflects an iterator + */ +Mirror.prototype.isIterator = function() { + return this instanceof IteratorMirror; +}; + + +/** * Allocate a handle id for this object. */ Mirror.prototype.allocateHandle_ = function() { @@ -1343,6 +1356,16 @@ function SetMirror(value) { inherits(SetMirror, ObjectMirror); +function IteratorGetValues_(iter, next_function) { + var result = []; + var next; + while (!(next = %_CallFunction(iter, next_function)).done) { + result.push(next.value); + } + return result; +} + + /** * Returns an array of elements of a set. * This will keep elements alive for WeakSets. @@ -1354,13 +1377,31 @@ SetMirror.prototype.values = function() { return %GetWeakSetValues(this.value_); } - var result = []; var iter = %_CallFunction(this.value_, builtins.SetValues); - var next; - while (!(next = iter.next()).done) { - result.push(next.value); + return IteratorGetValues_(iter, builtins.SetIteratorNextJS); +}; + + +function IteratorMirror(value) { + %_CallFunction(this, value, ITERATOR_TYPE, ObjectMirror); +} +inherits(IteratorMirror, ObjectMirror); + + +/** + * Returns a preview of elements of an iterator. + * Does not change the backing iterator state. + * + * @returns {Array.} Array of elements of an iterator. + */ +IteratorMirror.prototype.preview = function() { + if (IS_MAP_ITERATOR(this.value_)) { + return IteratorGetValues_(%MapIteratorClone(this.value_), + builtins.MapIteratorNextJS); + } else if (IS_SET_ITERATOR(this.value_)) { + return IteratorGetValues_(%SetIteratorClone(this.value_), + builtins.SetIteratorNextJS); } - return result; };