| Index: src/debug/mirrors.js
|
| diff --git a/src/debug/mirrors.js b/src/debug/mirrors.js
|
| index 85ff2b2a90e3cae5eb10ee852cd8ef6f870f451f..31387abc95c8bc319f3a36f38444b8ea55eb310a 100644
|
| --- a/src/debug/mirrors.js
|
| +++ b/src/debug/mirrors.js
|
| @@ -11,6 +11,7 @@
|
| var GlobalArray = global.Array;
|
| var IsNaN = global.isNaN;
|
| var JSONStringify = global.JSON.stringify;
|
| +var GlobalMap = global.Map;
|
| var MathMin = global.Math.min;
|
|
|
| // ----------------------------------------------------------------------------
|
| @@ -73,12 +74,12 @@ var next_handle_ = 0;
|
| var next_transient_handle_ = -1;
|
|
|
| // Mirror cache.
|
| -var mirror_cache_ = [];
|
| +var mirror_cache_ = new GlobalMap();
|
| var mirror_cache_enabled_ = true;
|
|
|
|
|
| function MirrorCacheIsEmpty() {
|
| - return next_handle_ == 0 && mirror_cache_.length == 0;
|
| + return mirror_cache_.size === 0;
|
| }
|
|
|
|
|
| @@ -90,7 +91,7 @@ function ToggleMirrorCache(value) {
|
|
|
| function ClearMirrorCache(value) {
|
| next_handle_ = 0;
|
| - mirror_cache_ = [];
|
| + mirror_cache_.clear();
|
| }
|
|
|
|
|
| @@ -120,17 +121,7 @@ function MakeMirror(value, opt_transient) {
|
|
|
| // Look for non transient mirrors in the mirror cache.
|
| if (!opt_transient && mirror_cache_enabled_) {
|
| - for (var id in mirror_cache_) {
|
| - mirror = mirror_cache_[id];
|
| - if (mirror.value() === value) {
|
| - return mirror;
|
| - }
|
| - // Special check for NaN as NaN == NaN is false.
|
| - if (mirror.isNumber() && IsNaN(mirror.value()) &&
|
| - typeof value == 'number' && IsNaN(value)) {
|
| - return mirror;
|
| - }
|
| - }
|
| + if (mirror_cache_.has(value)) return mirror_cache_.get(value);
|
| }
|
|
|
| if (IS_UNDEFINED(value)) {
|
| @@ -171,7 +162,7 @@ function MakeMirror(value, opt_transient) {
|
| mirror = new ObjectMirror(value, MirrorType.OBJECT_TYPE, opt_transient);
|
| }
|
|
|
| - if (mirror_cache_enabled_) mirror_cache_[mirror.handle()] = mirror;
|
| + if (mirror_cache_enabled_) mirror_cache_.set(value, mirror);
|
| return mirror;
|
| }
|
|
|
| @@ -187,7 +178,10 @@ function LookupMirror(handle) {
|
| if (!mirror_cache_enabled_) {
|
| throw MakeError(kDebugger, "Mirror cache is disabled");
|
| }
|
| - return mirror_cache_[handle];
|
| + for (var value of mirror_cache_.values()) {
|
| + if (value.handle() == handle) return value;
|
| + }
|
| + return UNDEFINED;
|
| }
|
|
|
|
|
|
|