Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: src/mirror-debugger.js

Issue 1126103006: Provide accessor for object internal properties that doesn't require debugger to be active (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/contexts.h ('k') | src/objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2012 the V8 project authors. All rights reserved. 1 // Copyright 2006-2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 "use strict"; 4 "use strict";
5 5
6 // Handle id counters. 6 // Handle id counters.
7 var next_handle_ = 0; 7 var next_handle_ = 0;
8 var next_transient_handle_ = -1; 8 var next_transient_handle_ = -1;
9 9
10 // Mirror cache. 10 // Mirror cache.
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 897
898 /** 898 /**
899 * Return the internal properties of the value, such as [[PrimitiveValue]] of 899 * Return the internal properties of the value, such as [[PrimitiveValue]] of
900 * scalar wrapper objects, properties of the bound function and properties of 900 * scalar wrapper objects, properties of the bound function and properties of
901 * the promise. 901 * the promise.
902 * This method is done static to be accessible from Debug API with the bare 902 * This method is done static to be accessible from Debug API with the bare
903 * values without mirrors. 903 * values without mirrors.
904 * @return {Array} array (possibly empty) of InternalProperty instances 904 * @return {Array} array (possibly empty) of InternalProperty instances
905 */ 905 */
906 ObjectMirror.GetInternalProperties = function(value) { 906 ObjectMirror.GetInternalProperties = function(value) {
907 if (IS_STRING_WRAPPER(value) || IS_NUMBER_WRAPPER(value) || 907 var properties = %DebugGetInternalProperties(value);
908 IS_BOOLEAN_WRAPPER(value)) { 908 var result = [];
909 var primitiveValue = %_ValueOf(value); 909 for (var i = 0; i < properties.length; i += 2) {
910 return [new InternalPropertyMirror("[[PrimitiveValue]]", primitiveValue)]; 910 result.push(new InternalPropertyMirror(properties[i], properties[i + 1]));
911 } else if (IS_FUNCTION(value)) {
912 var bindings = %BoundFunctionGetBindings(value);
913 var result = [];
914 if (bindings && IS_ARRAY(bindings)) {
915 result.push(new InternalPropertyMirror("[[TargetFunction]]",
916 bindings[0]));
917 result.push(new InternalPropertyMirror("[[BoundThis]]", bindings[1]));
918 var boundArgs = [];
919 for (var i = 2; i < bindings.length; i++) {
920 boundArgs.push(bindings[i]);
921 }
922 result.push(new InternalPropertyMirror("[[BoundArgs]]", boundArgs));
923 }
924 return result;
925 } else if (IS_MAP_ITERATOR(value) || IS_SET_ITERATOR(value)) {
926 var details = IS_MAP_ITERATOR(value) ? %MapIteratorDetails(value)
927 : %SetIteratorDetails(value);
928 var kind;
929 switch (details[2]) {
930 case 1: kind = "keys"; break;
931 case 2: kind = "values"; break;
932 case 3: kind = "entries"; break;
933 }
934 var result = [
935 new InternalPropertyMirror("[[IteratorHasMore]]", details[0]),
936 new InternalPropertyMirror("[[IteratorIndex]]", details[1])
937 ];
938 if (kind) {
939 result.push(new InternalPropertyMirror("[[IteratorKind]]", kind));
940 }
941 return result;
942 } else if (IS_GENERATOR(value)) {
943 return [
944 new InternalPropertyMirror("[[GeneratorStatus]]",
945 GeneratorGetStatus_(value)),
946 new InternalPropertyMirror("[[GeneratorFunction]]",
947 %GeneratorGetFunction(value)),
948 new InternalPropertyMirror("[[GeneratorReceiver]]",
949 %GeneratorGetReceiver(value))
950 ];
951 } else if (ObjectIsPromise(value)) {
952 return [
953 new InternalPropertyMirror("[[PromiseStatus]]", PromiseGetStatus_(value)),
954 new InternalPropertyMirror("[[PromiseValue]]", PromiseGetValue_(value))
955 ];
956 } 911 }
957 return []; 912 return result;
958 } 913 }
959 914
960 915
961 /** 916 /**
962 * Mirror object for functions. 917 * Mirror object for functions.
963 * @param {function} value The function object reflected by this mirror. 918 * @param {function} value The function object reflected by this mirror.
964 * @constructor 919 * @constructor
965 * @extends ObjectMirror 920 * @extends ObjectMirror
966 */ 921 */
967 function FunctionMirror(value) { 922 function FunctionMirror(value) {
(...skipping 2094 matching lines...) Expand 10 before | Expand all | Expand 10 after
3062 } 3017 }
3063 if (!NUMBER_IS_FINITE(value)) { 3018 if (!NUMBER_IS_FINITE(value)) {
3064 if (value > 0) { 3019 if (value > 0) {
3065 return 'Infinity'; 3020 return 'Infinity';
3066 } else { 3021 } else {
3067 return '-Infinity'; 3022 return '-Infinity';
3068 } 3023 }
3069 } 3024 }
3070 return value; 3025 return value;
3071 } 3026 }
OLDNEW
« no previous file with comments | « src/contexts.h ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698