| OLD | NEW |
| 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 | 4 |
| 5 (function(global, utils) { | 5 (function(global, utils) { |
| 6 "use strict"; | 6 "use strict"; |
| 7 | 7 |
| 8 // ---------------------------------------------------------------------------- | 8 // ---------------------------------------------------------------------------- |
| 9 // Imports | 9 // Imports |
| 10 | 10 |
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 /** | 537 /** |
| 538 * Base class for all value mirror objects. | 538 * Base class for all value mirror objects. |
| 539 * @param {string} type The type of the mirror | 539 * @param {string} type The type of the mirror |
| 540 * @param {value} value The value reflected by this mirror | 540 * @param {value} value The value reflected by this mirror |
| 541 * @param {boolean} transient indicate whether this object is transient with a | 541 * @param {boolean} transient indicate whether this object is transient with a |
| 542 * transient handle | 542 * transient handle |
| 543 * @constructor | 543 * @constructor |
| 544 * @extends Mirror | 544 * @extends Mirror |
| 545 */ | 545 */ |
| 546 function ValueMirror(type, value, transient) { | 546 function ValueMirror(type, value, transient) { |
| 547 %_CallFunction(this, type, Mirror); | 547 %_Call(Mirror, this, type); |
| 548 this.value_ = value; | 548 this.value_ = value; |
| 549 if (!transient) { | 549 if (!transient) { |
| 550 this.allocateHandle_(); | 550 this.allocateHandle_(); |
| 551 } else { | 551 } else { |
| 552 this.allocateTransientHandle_(); | 552 this.allocateTransientHandle_(); |
| 553 } | 553 } |
| 554 } | 554 } |
| 555 inherits(ValueMirror, Mirror); | 555 inherits(ValueMirror, Mirror); |
| 556 | 556 |
| 557 | 557 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 583 return this.value_; | 583 return this.value_; |
| 584 }; | 584 }; |
| 585 | 585 |
| 586 | 586 |
| 587 /** | 587 /** |
| 588 * Mirror object for Undefined. | 588 * Mirror object for Undefined. |
| 589 * @constructor | 589 * @constructor |
| 590 * @extends ValueMirror | 590 * @extends ValueMirror |
| 591 */ | 591 */ |
| 592 function UndefinedMirror() { | 592 function UndefinedMirror() { |
| 593 %_CallFunction(this, MirrorType.UNDEFINED_TYPE, UNDEFINED, ValueMirror); | 593 %_Call(ValueMirror, this, MirrorType.UNDEFINED_TYPE, UNDEFINED); |
| 594 } | 594 } |
| 595 inherits(UndefinedMirror, ValueMirror); | 595 inherits(UndefinedMirror, ValueMirror); |
| 596 | 596 |
| 597 | 597 |
| 598 UndefinedMirror.prototype.toText = function() { | 598 UndefinedMirror.prototype.toText = function() { |
| 599 return 'undefined'; | 599 return 'undefined'; |
| 600 }; | 600 }; |
| 601 | 601 |
| 602 | 602 |
| 603 /** | 603 /** |
| 604 * Mirror object for null. | 604 * Mirror object for null. |
| 605 * @constructor | 605 * @constructor |
| 606 * @extends ValueMirror | 606 * @extends ValueMirror |
| 607 */ | 607 */ |
| 608 function NullMirror() { | 608 function NullMirror() { |
| 609 %_CallFunction(this, MirrorType.NULL_TYPE, null, ValueMirror); | 609 %_Call(ValueMirror, this, MirrorType.NULL_TYPE, null); |
| 610 } | 610 } |
| 611 inherits(NullMirror, ValueMirror); | 611 inherits(NullMirror, ValueMirror); |
| 612 | 612 |
| 613 | 613 |
| 614 NullMirror.prototype.toText = function() { | 614 NullMirror.prototype.toText = function() { |
| 615 return 'null'; | 615 return 'null'; |
| 616 }; | 616 }; |
| 617 | 617 |
| 618 | 618 |
| 619 /** | 619 /** |
| 620 * Mirror object for boolean values. | 620 * Mirror object for boolean values. |
| 621 * @param {boolean} value The boolean value reflected by this mirror | 621 * @param {boolean} value The boolean value reflected by this mirror |
| 622 * @constructor | 622 * @constructor |
| 623 * @extends ValueMirror | 623 * @extends ValueMirror |
| 624 */ | 624 */ |
| 625 function BooleanMirror(value) { | 625 function BooleanMirror(value) { |
| 626 %_CallFunction(this, MirrorType.BOOLEAN_TYPE, value, ValueMirror); | 626 %_Call(ValueMirror, this, MirrorType.BOOLEAN_TYPE, value); |
| 627 } | 627 } |
| 628 inherits(BooleanMirror, ValueMirror); | 628 inherits(BooleanMirror, ValueMirror); |
| 629 | 629 |
| 630 | 630 |
| 631 BooleanMirror.prototype.toText = function() { | 631 BooleanMirror.prototype.toText = function() { |
| 632 return this.value_ ? 'true' : 'false'; | 632 return this.value_ ? 'true' : 'false'; |
| 633 }; | 633 }; |
| 634 | 634 |
| 635 | 635 |
| 636 /** | 636 /** |
| 637 * Mirror object for number values. | 637 * Mirror object for number values. |
| 638 * @param {number} value The number value reflected by this mirror | 638 * @param {number} value The number value reflected by this mirror |
| 639 * @constructor | 639 * @constructor |
| 640 * @extends ValueMirror | 640 * @extends ValueMirror |
| 641 */ | 641 */ |
| 642 function NumberMirror(value) { | 642 function NumberMirror(value) { |
| 643 %_CallFunction(this, MirrorType.NUMBER_TYPE, value, ValueMirror); | 643 %_Call(ValueMirror, this, MirrorType.NUMBER_TYPE, value); |
| 644 } | 644 } |
| 645 inherits(NumberMirror, ValueMirror); | 645 inherits(NumberMirror, ValueMirror); |
| 646 | 646 |
| 647 | 647 |
| 648 NumberMirror.prototype.toText = function() { | 648 NumberMirror.prototype.toText = function() { |
| 649 return %_NumberToString(this.value_); | 649 return %_NumberToString(this.value_); |
| 650 }; | 650 }; |
| 651 | 651 |
| 652 | 652 |
| 653 /** | 653 /** |
| 654 * Mirror object for string values. | 654 * Mirror object for string values. |
| 655 * @param {string} value The string value reflected by this mirror | 655 * @param {string} value The string value reflected by this mirror |
| 656 * @constructor | 656 * @constructor |
| 657 * @extends ValueMirror | 657 * @extends ValueMirror |
| 658 */ | 658 */ |
| 659 function StringMirror(value) { | 659 function StringMirror(value) { |
| 660 %_CallFunction(this, MirrorType.STRING_TYPE, value, ValueMirror); | 660 %_Call(ValueMirror, this, MirrorType.STRING_TYPE, value); |
| 661 } | 661 } |
| 662 inherits(StringMirror, ValueMirror); | 662 inherits(StringMirror, ValueMirror); |
| 663 | 663 |
| 664 | 664 |
| 665 StringMirror.prototype.length = function() { | 665 StringMirror.prototype.length = function() { |
| 666 return this.value_.length; | 666 return this.value_.length; |
| 667 }; | 667 }; |
| 668 | 668 |
| 669 StringMirror.prototype.getTruncatedValue = function(maxLength) { | 669 StringMirror.prototype.getTruncatedValue = function(maxLength) { |
| 670 if (maxLength != -1 && this.length() > maxLength) { | 670 if (maxLength != -1 && this.length() > maxLength) { |
| 671 return this.value_.substring(0, maxLength) + | 671 return this.value_.substring(0, maxLength) + |
| 672 '... (length: ' + this.length() + ')'; | 672 '... (length: ' + this.length() + ')'; |
| 673 } | 673 } |
| 674 return this.value_; | 674 return this.value_; |
| 675 }; | 675 }; |
| 676 | 676 |
| 677 StringMirror.prototype.toText = function() { | 677 StringMirror.prototype.toText = function() { |
| 678 return this.getTruncatedValue(kMaxProtocolStringLength); | 678 return this.getTruncatedValue(kMaxProtocolStringLength); |
| 679 }; | 679 }; |
| 680 | 680 |
| 681 | 681 |
| 682 /** | 682 /** |
| 683 * Mirror object for a Symbol | 683 * Mirror object for a Symbol |
| 684 * @param {Object} value The Symbol | 684 * @param {Object} value The Symbol |
| 685 * @constructor | 685 * @constructor |
| 686 * @extends Mirror | 686 * @extends Mirror |
| 687 */ | 687 */ |
| 688 function SymbolMirror(value) { | 688 function SymbolMirror(value) { |
| 689 %_CallFunction(this, MirrorType.SYMBOL_TYPE, value, ValueMirror); | 689 %_Call(ValueMirror, this, MirrorType.SYMBOL_TYPE, value); |
| 690 } | 690 } |
| 691 inherits(SymbolMirror, ValueMirror); | 691 inherits(SymbolMirror, ValueMirror); |
| 692 | 692 |
| 693 | 693 |
| 694 SymbolMirror.prototype.description = function() { | 694 SymbolMirror.prototype.description = function() { |
| 695 return %SymbolDescription(%_ValueOf(this.value_)); | 695 return %SymbolDescription(%_ValueOf(this.value_)); |
| 696 } | 696 } |
| 697 | 697 |
| 698 | 698 |
| 699 SymbolMirror.prototype.toText = function() { | 699 SymbolMirror.prototype.toText = function() { |
| 700 return %_CallFunction(this.value_, SymbolToString); | 700 return %_Call(SymbolToString, this.value_); |
| 701 } | 701 } |
| 702 | 702 |
| 703 | 703 |
| 704 /** | 704 /** |
| 705 * Mirror object for objects. | 705 * Mirror object for objects. |
| 706 * @param {object} value The object reflected by this mirror | 706 * @param {object} value The object reflected by this mirror |
| 707 * @param {boolean} transient indicate whether this object is transient with a | 707 * @param {boolean} transient indicate whether this object is transient with a |
| 708 * transient handle | 708 * transient handle |
| 709 * @constructor | 709 * @constructor |
| 710 * @extends ValueMirror | 710 * @extends ValueMirror |
| 711 */ | 711 */ |
| 712 function ObjectMirror(value, type, transient) { | 712 function ObjectMirror(value, type, transient) { |
| 713 type = type || MirrorType.OBJECT_TYPE; | 713 type = type || MirrorType.OBJECT_TYPE; |
| 714 %_CallFunction(this, type, value, transient, ValueMirror); | 714 %_Call(ValueMirror, this, type, value, transient); |
| 715 } | 715 } |
| 716 inherits(ObjectMirror, ValueMirror); | 716 inherits(ObjectMirror, ValueMirror); |
| 717 | 717 |
| 718 | 718 |
| 719 ObjectMirror.prototype.className = function() { | 719 ObjectMirror.prototype.className = function() { |
| 720 return %_ClassOf(this.value_); | 720 return %_ClassOf(this.value_); |
| 721 }; | 721 }; |
| 722 | 722 |
| 723 | 723 |
| 724 ObjectMirror.prototype.constructorFunction = function() { | 724 ObjectMirror.prototype.constructorFunction = function() { |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 } | 954 } |
| 955 | 955 |
| 956 | 956 |
| 957 /** | 957 /** |
| 958 * Mirror object for functions. | 958 * Mirror object for functions. |
| 959 * @param {function} value The function object reflected by this mirror. | 959 * @param {function} value The function object reflected by this mirror. |
| 960 * @constructor | 960 * @constructor |
| 961 * @extends ObjectMirror | 961 * @extends ObjectMirror |
| 962 */ | 962 */ |
| 963 function FunctionMirror(value) { | 963 function FunctionMirror(value) { |
| 964 %_CallFunction(this, value, MirrorType.FUNCTION_TYPE, ObjectMirror); | 964 %_Call(ObjectMirror, this, value, MirrorType.FUNCTION_TYPE); |
| 965 this.resolved_ = true; | 965 this.resolved_ = true; |
| 966 } | 966 } |
| 967 inherits(FunctionMirror, ObjectMirror); | 967 inherits(FunctionMirror, ObjectMirror); |
| 968 | 968 |
| 969 | 969 |
| 970 /** | 970 /** |
| 971 * Returns whether the function is resolved. | 971 * Returns whether the function is resolved. |
| 972 * @return {boolean} True if the function is resolved. Unresolved functions can | 972 * @return {boolean} True if the function is resolved. Unresolved functions can |
| 973 * only originate as functions from stack frames | 973 * only originate as functions from stack frames |
| 974 */ | 974 */ |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 /** | 1108 /** |
| 1109 * Mirror object for unresolved functions. | 1109 * Mirror object for unresolved functions. |
| 1110 * @param {string} value The name for the unresolved function reflected by this | 1110 * @param {string} value The name for the unresolved function reflected by this |
| 1111 * mirror. | 1111 * mirror. |
| 1112 * @constructor | 1112 * @constructor |
| 1113 * @extends ObjectMirror | 1113 * @extends ObjectMirror |
| 1114 */ | 1114 */ |
| 1115 function UnresolvedFunctionMirror(value) { | 1115 function UnresolvedFunctionMirror(value) { |
| 1116 // Construct this using the ValueMirror as an unresolved function is not a | 1116 // Construct this using the ValueMirror as an unresolved function is not a |
| 1117 // real object but just a string. | 1117 // real object but just a string. |
| 1118 %_CallFunction(this, MirrorType.FUNCTION_TYPE, value, ValueMirror); | 1118 %_Call(ValueMirror, this, MirrorType.FUNCTION_TYPE, value); |
| 1119 this.propertyCount_ = 0; | 1119 this.propertyCount_ = 0; |
| 1120 this.elementCount_ = 0; | 1120 this.elementCount_ = 0; |
| 1121 this.resolved_ = false; | 1121 this.resolved_ = false; |
| 1122 } | 1122 } |
| 1123 inherits(UnresolvedFunctionMirror, FunctionMirror); | 1123 inherits(UnresolvedFunctionMirror, FunctionMirror); |
| 1124 | 1124 |
| 1125 | 1125 |
| 1126 UnresolvedFunctionMirror.prototype.className = function() { | 1126 UnresolvedFunctionMirror.prototype.className = function() { |
| 1127 return 'Function'; | 1127 return 'Function'; |
| 1128 }; | 1128 }; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1158 }; | 1158 }; |
| 1159 | 1159 |
| 1160 | 1160 |
| 1161 /** | 1161 /** |
| 1162 * Mirror object for arrays. | 1162 * Mirror object for arrays. |
| 1163 * @param {Array} value The Array object reflected by this mirror | 1163 * @param {Array} value The Array object reflected by this mirror |
| 1164 * @constructor | 1164 * @constructor |
| 1165 * @extends ObjectMirror | 1165 * @extends ObjectMirror |
| 1166 */ | 1166 */ |
| 1167 function ArrayMirror(value) { | 1167 function ArrayMirror(value) { |
| 1168 %_CallFunction(this, value, ObjectMirror); | 1168 %_Call(ObjectMirror, this, value); |
| 1169 } | 1169 } |
| 1170 inherits(ArrayMirror, ObjectMirror); | 1170 inherits(ArrayMirror, ObjectMirror); |
| 1171 | 1171 |
| 1172 | 1172 |
| 1173 ArrayMirror.prototype.length = function() { | 1173 ArrayMirror.prototype.length = function() { |
| 1174 return this.value_.length; | 1174 return this.value_.length; |
| 1175 }; | 1175 }; |
| 1176 | 1176 |
| 1177 | 1177 |
| 1178 ArrayMirror.prototype.indexedPropertiesFromRange = function(opt_from_index, | 1178 ArrayMirror.prototype.indexedPropertiesFromRange = function(opt_from_index, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1195 }; | 1195 }; |
| 1196 | 1196 |
| 1197 | 1197 |
| 1198 /** | 1198 /** |
| 1199 * Mirror object for dates. | 1199 * Mirror object for dates. |
| 1200 * @param {Date} value The Date object reflected by this mirror | 1200 * @param {Date} value The Date object reflected by this mirror |
| 1201 * @constructor | 1201 * @constructor |
| 1202 * @extends ObjectMirror | 1202 * @extends ObjectMirror |
| 1203 */ | 1203 */ |
| 1204 function DateMirror(value) { | 1204 function DateMirror(value) { |
| 1205 %_CallFunction(this, value, ObjectMirror); | 1205 %_Call(ObjectMirror, this, value); |
| 1206 } | 1206 } |
| 1207 inherits(DateMirror, ObjectMirror); | 1207 inherits(DateMirror, ObjectMirror); |
| 1208 | 1208 |
| 1209 | 1209 |
| 1210 DateMirror.prototype.toText = function() { | 1210 DateMirror.prototype.toText = function() { |
| 1211 var s = JSONStringify(this.value_); | 1211 var s = JSONStringify(this.value_); |
| 1212 return s.substring(1, s.length - 1); // cut quotes | 1212 return s.substring(1, s.length - 1); // cut quotes |
| 1213 }; | 1213 }; |
| 1214 | 1214 |
| 1215 | 1215 |
| 1216 /** | 1216 /** |
| 1217 * Mirror object for regular expressions. | 1217 * Mirror object for regular expressions. |
| 1218 * @param {RegExp} value The RegExp object reflected by this mirror | 1218 * @param {RegExp} value The RegExp object reflected by this mirror |
| 1219 * @constructor | 1219 * @constructor |
| 1220 * @extends ObjectMirror | 1220 * @extends ObjectMirror |
| 1221 */ | 1221 */ |
| 1222 function RegExpMirror(value) { | 1222 function RegExpMirror(value) { |
| 1223 %_CallFunction(this, value, MirrorType.REGEXP_TYPE, ObjectMirror); | 1223 %_Call(ObjectMirror, this, value, MirrorType.REGEXP_TYPE); |
| 1224 } | 1224 } |
| 1225 inherits(RegExpMirror, ObjectMirror); | 1225 inherits(RegExpMirror, ObjectMirror); |
| 1226 | 1226 |
| 1227 | 1227 |
| 1228 /** | 1228 /** |
| 1229 * Returns the source to the regular expression. | 1229 * Returns the source to the regular expression. |
| 1230 * @return {string or undefined} The source to the regular expression | 1230 * @return {string or undefined} The source to the regular expression |
| 1231 */ | 1231 */ |
| 1232 RegExpMirror.prototype.source = function() { | 1232 RegExpMirror.prototype.source = function() { |
| 1233 return this.value_.source; | 1233 return this.value_.source; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1285 }; | 1285 }; |
| 1286 | 1286 |
| 1287 | 1287 |
| 1288 /** | 1288 /** |
| 1289 * Mirror object for error objects. | 1289 * Mirror object for error objects. |
| 1290 * @param {Error} value The error object reflected by this mirror | 1290 * @param {Error} value The error object reflected by this mirror |
| 1291 * @constructor | 1291 * @constructor |
| 1292 * @extends ObjectMirror | 1292 * @extends ObjectMirror |
| 1293 */ | 1293 */ |
| 1294 function ErrorMirror(value) { | 1294 function ErrorMirror(value) { |
| 1295 %_CallFunction(this, value, MirrorType.ERROR_TYPE, ObjectMirror); | 1295 %_Call(ObjectMirror, this, value, MirrorType.ERROR_TYPE); |
| 1296 } | 1296 } |
| 1297 inherits(ErrorMirror, ObjectMirror); | 1297 inherits(ErrorMirror, ObjectMirror); |
| 1298 | 1298 |
| 1299 | 1299 |
| 1300 /** | 1300 /** |
| 1301 * Returns the message for this eror object. | 1301 * Returns the message for this eror object. |
| 1302 * @return {string or undefined} The message for this eror object | 1302 * @return {string or undefined} The message for this eror object |
| 1303 */ | 1303 */ |
| 1304 ErrorMirror.prototype.message = function() { | 1304 ErrorMirror.prototype.message = function() { |
| 1305 return this.value_.message; | 1305 return this.value_.message; |
| 1306 }; | 1306 }; |
| 1307 | 1307 |
| 1308 | 1308 |
| 1309 ErrorMirror.prototype.toText = function() { | 1309 ErrorMirror.prototype.toText = function() { |
| 1310 // Use the same text representation as in messages.js. | 1310 // Use the same text representation as in messages.js. |
| 1311 var text; | 1311 var text; |
| 1312 try { | 1312 try { |
| 1313 text = %_CallFunction(this.value_, ErrorToString); | 1313 text = %_Call(ErrorToString, this.value_); |
| 1314 } catch (e) { | 1314 } catch (e) { |
| 1315 text = '#<Error>'; | 1315 text = '#<Error>'; |
| 1316 } | 1316 } |
| 1317 return text; | 1317 return text; |
| 1318 }; | 1318 }; |
| 1319 | 1319 |
| 1320 | 1320 |
| 1321 /** | 1321 /** |
| 1322 * Mirror object for a Promise object. | 1322 * Mirror object for a Promise object. |
| 1323 * @param {Object} value The Promise object | 1323 * @param {Object} value The Promise object |
| 1324 * @constructor | 1324 * @constructor |
| 1325 * @extends ObjectMirror | 1325 * @extends ObjectMirror |
| 1326 */ | 1326 */ |
| 1327 function PromiseMirror(value) { | 1327 function PromiseMirror(value) { |
| 1328 %_CallFunction(this, value, MirrorType.PROMISE_TYPE, ObjectMirror); | 1328 %_Call(ObjectMirror, this, value, MirrorType.PROMISE_TYPE); |
| 1329 } | 1329 } |
| 1330 inherits(PromiseMirror, ObjectMirror); | 1330 inherits(PromiseMirror, ObjectMirror); |
| 1331 | 1331 |
| 1332 | 1332 |
| 1333 function PromiseGetStatus_(value) { | 1333 function PromiseGetStatus_(value) { |
| 1334 var status = %DebugGetProperty(value, promiseStatusSymbol); | 1334 var status = %DebugGetProperty(value, promiseStatusSymbol); |
| 1335 if (status == 0) return "pending"; | 1335 if (status == 0) return "pending"; |
| 1336 if (status == 1) return "resolved"; | 1336 if (status == 1) return "resolved"; |
| 1337 return "rejected"; | 1337 return "rejected"; |
| 1338 } | 1338 } |
| 1339 | 1339 |
| 1340 | 1340 |
| 1341 function PromiseGetValue_(value) { | 1341 function PromiseGetValue_(value) { |
| 1342 return %DebugGetProperty(value, promiseValueSymbol); | 1342 return %DebugGetProperty(value, promiseValueSymbol); |
| 1343 } | 1343 } |
| 1344 | 1344 |
| 1345 | 1345 |
| 1346 PromiseMirror.prototype.status = function() { | 1346 PromiseMirror.prototype.status = function() { |
| 1347 return PromiseGetStatus_(this.value_); | 1347 return PromiseGetStatus_(this.value_); |
| 1348 }; | 1348 }; |
| 1349 | 1349 |
| 1350 | 1350 |
| 1351 PromiseMirror.prototype.promiseValue = function() { | 1351 PromiseMirror.prototype.promiseValue = function() { |
| 1352 return MakeMirror(PromiseGetValue_(this.value_)); | 1352 return MakeMirror(PromiseGetValue_(this.value_)); |
| 1353 }; | 1353 }; |
| 1354 | 1354 |
| 1355 | 1355 |
| 1356 function MapMirror(value) { | 1356 function MapMirror(value) { |
| 1357 %_CallFunction(this, value, MirrorType.MAP_TYPE, ObjectMirror); | 1357 %_Call(ObjectMirror, this, value, MirrorType.MAP_TYPE); |
| 1358 } | 1358 } |
| 1359 inherits(MapMirror, ObjectMirror); | 1359 inherits(MapMirror, ObjectMirror); |
| 1360 | 1360 |
| 1361 | 1361 |
| 1362 /** | 1362 /** |
| 1363 * Returns an array of key/value pairs of a map. | 1363 * Returns an array of key/value pairs of a map. |
| 1364 * This will keep keys alive for WeakMaps. | 1364 * This will keep keys alive for WeakMaps. |
| 1365 * | 1365 * |
| 1366 * @param {number=} opt_limit Max elements to return. | 1366 * @param {number=} opt_limit Max elements to return. |
| 1367 * @returns {Array.<Object>} Array of key/value pairs of a map. | 1367 * @returns {Array.<Object>} Array of key/value pairs of a map. |
| 1368 */ | 1368 */ |
| 1369 MapMirror.prototype.entries = function(opt_limit) { | 1369 MapMirror.prototype.entries = function(opt_limit) { |
| 1370 var result = []; | 1370 var result = []; |
| 1371 | 1371 |
| 1372 if (IS_WEAKMAP(this.value_)) { | 1372 if (IS_WEAKMAP(this.value_)) { |
| 1373 var entries = %GetWeakMapEntries(this.value_, opt_limit || 0); | 1373 var entries = %GetWeakMapEntries(this.value_, opt_limit || 0); |
| 1374 for (var i = 0; i < entries.length; i += 2) { | 1374 for (var i = 0; i < entries.length; i += 2) { |
| 1375 result.push({ | 1375 result.push({ |
| 1376 key: entries[i], | 1376 key: entries[i], |
| 1377 value: entries[i + 1] | 1377 value: entries[i + 1] |
| 1378 }); | 1378 }); |
| 1379 } | 1379 } |
| 1380 return result; | 1380 return result; |
| 1381 } | 1381 } |
| 1382 | 1382 |
| 1383 var iter = %_CallFunction(this.value_, MapEntries); | 1383 var iter = %_Call(MapEntries, this.value_); |
| 1384 var next; | 1384 var next; |
| 1385 while ((!opt_limit || result.length < opt_limit) && | 1385 while ((!opt_limit || result.length < opt_limit) && |
| 1386 !(next = iter.next()).done) { | 1386 !(next = iter.next()).done) { |
| 1387 result.push({ | 1387 result.push({ |
| 1388 key: next.value[0], | 1388 key: next.value[0], |
| 1389 value: next.value[1] | 1389 value: next.value[1] |
| 1390 }); | 1390 }); |
| 1391 } | 1391 } |
| 1392 return result; | 1392 return result; |
| 1393 }; | 1393 }; |
| 1394 | 1394 |
| 1395 | 1395 |
| 1396 function SetMirror(value) { | 1396 function SetMirror(value) { |
| 1397 %_CallFunction(this, value, MirrorType.SET_TYPE, ObjectMirror); | 1397 %_Call(ObjectMirror, this, value, MirrorType.SET_TYPE); |
| 1398 } | 1398 } |
| 1399 inherits(SetMirror, ObjectMirror); | 1399 inherits(SetMirror, ObjectMirror); |
| 1400 | 1400 |
| 1401 | 1401 |
| 1402 function IteratorGetValues_(iter, next_function, opt_limit) { | 1402 function IteratorGetValues_(iter, next_function, opt_limit) { |
| 1403 var result = []; | 1403 var result = []; |
| 1404 var next; | 1404 var next; |
| 1405 while ((!opt_limit || result.length < opt_limit) && | 1405 while ((!opt_limit || result.length < opt_limit) && |
| 1406 !(next = %_CallFunction(iter, next_function)).done) { | 1406 !(next = %_Call(next_function, iter)).done) { |
| 1407 result.push(next.value); | 1407 result.push(next.value); |
| 1408 } | 1408 } |
| 1409 return result; | 1409 return result; |
| 1410 } | 1410 } |
| 1411 | 1411 |
| 1412 | 1412 |
| 1413 /** | 1413 /** |
| 1414 * Returns an array of elements of a set. | 1414 * Returns an array of elements of a set. |
| 1415 * This will keep elements alive for WeakSets. | 1415 * This will keep elements alive for WeakSets. |
| 1416 * | 1416 * |
| 1417 * @param {number=} opt_limit Max elements to return. | 1417 * @param {number=} opt_limit Max elements to return. |
| 1418 * @returns {Array.<Object>} Array of elements of a set. | 1418 * @returns {Array.<Object>} Array of elements of a set. |
| 1419 */ | 1419 */ |
| 1420 SetMirror.prototype.values = function(opt_limit) { | 1420 SetMirror.prototype.values = function(opt_limit) { |
| 1421 if (IS_WEAKSET(this.value_)) { | 1421 if (IS_WEAKSET(this.value_)) { |
| 1422 return %GetWeakSetValues(this.value_, opt_limit || 0); | 1422 return %GetWeakSetValues(this.value_, opt_limit || 0); |
| 1423 } | 1423 } |
| 1424 | 1424 |
| 1425 var iter = %_CallFunction(this.value_, SetValues); | 1425 var iter = %_Call(SetValues, this.value_); |
| 1426 return IteratorGetValues_(iter, SetIteratorNext, opt_limit); | 1426 return IteratorGetValues_(iter, SetIteratorNext, opt_limit); |
| 1427 }; | 1427 }; |
| 1428 | 1428 |
| 1429 | 1429 |
| 1430 function IteratorMirror(value) { | 1430 function IteratorMirror(value) { |
| 1431 %_CallFunction(this, value, MirrorType.ITERATOR_TYPE, ObjectMirror); | 1431 %_Call(ObjectMirror, this, value, MirrorType.ITERATOR_TYPE); |
| 1432 } | 1432 } |
| 1433 inherits(IteratorMirror, ObjectMirror); | 1433 inherits(IteratorMirror, ObjectMirror); |
| 1434 | 1434 |
| 1435 | 1435 |
| 1436 /** | 1436 /** |
| 1437 * Returns a preview of elements of an iterator. | 1437 * Returns a preview of elements of an iterator. |
| 1438 * Does not change the backing iterator state. | 1438 * Does not change the backing iterator state. |
| 1439 * | 1439 * |
| 1440 * @param {number=} opt_limit Max elements to return. | 1440 * @param {number=} opt_limit Max elements to return. |
| 1441 * @returns {Array.<Object>} Array of elements of an iterator. | 1441 * @returns {Array.<Object>} Array of elements of an iterator. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1453 }; | 1453 }; |
| 1454 | 1454 |
| 1455 | 1455 |
| 1456 /** | 1456 /** |
| 1457 * Mirror object for a Generator object. | 1457 * Mirror object for a Generator object. |
| 1458 * @param {Object} data The Generator object | 1458 * @param {Object} data The Generator object |
| 1459 * @constructor | 1459 * @constructor |
| 1460 * @extends Mirror | 1460 * @extends Mirror |
| 1461 */ | 1461 */ |
| 1462 function GeneratorMirror(value) { | 1462 function GeneratorMirror(value) { |
| 1463 %_CallFunction(this, value, MirrorType.GENERATOR_TYPE, ObjectMirror); | 1463 %_Call(ObjectMirror, this, value, MirrorType.GENERATOR_TYPE); |
| 1464 } | 1464 } |
| 1465 inherits(GeneratorMirror, ObjectMirror); | 1465 inherits(GeneratorMirror, ObjectMirror); |
| 1466 | 1466 |
| 1467 | 1467 |
| 1468 function GeneratorGetStatus_(value) { | 1468 function GeneratorGetStatus_(value) { |
| 1469 var continuation = %GeneratorGetContinuation(value); | 1469 var continuation = %GeneratorGetContinuation(value); |
| 1470 if (continuation < 0) return "running"; | 1470 if (continuation < 0) return "running"; |
| 1471 if (continuation == 0) return "closed"; | 1471 if (continuation == 0) return "closed"; |
| 1472 return "suspended"; | 1472 return "suspended"; |
| 1473 } | 1473 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1520 | 1520 |
| 1521 /** | 1521 /** |
| 1522 * Base mirror object for properties. | 1522 * Base mirror object for properties. |
| 1523 * @param {ObjectMirror} mirror The mirror object having this property | 1523 * @param {ObjectMirror} mirror The mirror object having this property |
| 1524 * @param {string} name The name of the property | 1524 * @param {string} name The name of the property |
| 1525 * @param {Array} details Details about the property | 1525 * @param {Array} details Details about the property |
| 1526 * @constructor | 1526 * @constructor |
| 1527 * @extends Mirror | 1527 * @extends Mirror |
| 1528 */ | 1528 */ |
| 1529 function PropertyMirror(mirror, name, details) { | 1529 function PropertyMirror(mirror, name, details) { |
| 1530 %_CallFunction(this, MirrorType.PROPERTY_TYPE, Mirror); | 1530 %_Call(Mirror, this, MirrorType.PROPERTY_TYPE); |
| 1531 this.mirror_ = mirror; | 1531 this.mirror_ = mirror; |
| 1532 this.name_ = name; | 1532 this.name_ = name; |
| 1533 this.value_ = details[0]; | 1533 this.value_ = details[0]; |
| 1534 this.details_ = details[1]; | 1534 this.details_ = details[1]; |
| 1535 this.is_interceptor_ = details[2]; | 1535 this.is_interceptor_ = details[2]; |
| 1536 if (details.length > 3) { | 1536 if (details.length > 3) { |
| 1537 this.exception_ = details[3]; | 1537 this.exception_ = details[3]; |
| 1538 this.getter_ = details[4]; | 1538 this.getter_ = details[4]; |
| 1539 this.setter_ = details[5]; | 1539 this.setter_ = details[5]; |
| 1540 } | 1540 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1663 /** | 1663 /** |
| 1664 * Mirror object for internal properties. Internal property reflects properties | 1664 * Mirror object for internal properties. Internal property reflects properties |
| 1665 * not accessible from user code such as [[BoundThis]] in bound function. | 1665 * not accessible from user code such as [[BoundThis]] in bound function. |
| 1666 * Their names are merely symbolic. | 1666 * Their names are merely symbolic. |
| 1667 * @param {string} name The name of the property | 1667 * @param {string} name The name of the property |
| 1668 * @param {value} property value | 1668 * @param {value} property value |
| 1669 * @constructor | 1669 * @constructor |
| 1670 * @extends Mirror | 1670 * @extends Mirror |
| 1671 */ | 1671 */ |
| 1672 function InternalPropertyMirror(name, value) { | 1672 function InternalPropertyMirror(name, value) { |
| 1673 %_CallFunction(this, MirrorType.INTERNAL_PROPERTY_TYPE, Mirror); | 1673 %_Call(Mirror, this, MirrorType.INTERNAL_PROPERTY_TYPE); |
| 1674 this.name_ = name; | 1674 this.name_ = name; |
| 1675 this.value_ = value; | 1675 this.value_ = value; |
| 1676 } | 1676 } |
| 1677 inherits(InternalPropertyMirror, Mirror); | 1677 inherits(InternalPropertyMirror, Mirror); |
| 1678 | 1678 |
| 1679 | 1679 |
| 1680 InternalPropertyMirror.prototype.name = function() { | 1680 InternalPropertyMirror.prototype.name = function() { |
| 1681 return this.name_; | 1681 return this.name_; |
| 1682 }; | 1682 }; |
| 1683 | 1683 |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1876 | 1876 |
| 1877 /** | 1877 /** |
| 1878 * Mirror object for stack frames. | 1878 * Mirror object for stack frames. |
| 1879 * @param {number} break_id The break id in the VM for which this frame is | 1879 * @param {number} break_id The break id in the VM for which this frame is |
| 1880 valid | 1880 valid |
| 1881 * @param {number} index The frame index (top frame is index 0) | 1881 * @param {number} index The frame index (top frame is index 0) |
| 1882 * @constructor | 1882 * @constructor |
| 1883 * @extends Mirror | 1883 * @extends Mirror |
| 1884 */ | 1884 */ |
| 1885 function FrameMirror(break_id, index) { | 1885 function FrameMirror(break_id, index) { |
| 1886 %_CallFunction(this, MirrorType.FRAME_TYPE, Mirror); | 1886 %_Call(Mirror, this, MirrorType.FRAME_TYPE); |
| 1887 this.break_id_ = break_id; | 1887 this.break_id_ = break_id; |
| 1888 this.index_ = index; | 1888 this.index_ = index; |
| 1889 this.details_ = new FrameDetails(break_id, index); | 1889 this.details_ = new FrameDetails(break_id, index); |
| 1890 } | 1890 } |
| 1891 inherits(FrameMirror, Mirror); | 1891 inherits(FrameMirror, Mirror); |
| 1892 | 1892 |
| 1893 | 1893 |
| 1894 FrameMirror.prototype.details = function() { | 1894 FrameMirror.prototype.details = function() { |
| 1895 return this.details_; | 1895 return this.details_; |
| 1896 }; | 1896 }; |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2307 * Mirror object for scope of frame or function. Either frame or function must | 2307 * Mirror object for scope of frame or function. Either frame or function must |
| 2308 * be specified. | 2308 * be specified. |
| 2309 * @param {FrameMirror} frame The frame this scope is a part of | 2309 * @param {FrameMirror} frame The frame this scope is a part of |
| 2310 * @param {FunctionMirror} function The function this scope is a part of | 2310 * @param {FunctionMirror} function The function this scope is a part of |
| 2311 * @param {number} index The scope index in the frame | 2311 * @param {number} index The scope index in the frame |
| 2312 * @param {Array=} opt_details Raw scope details data | 2312 * @param {Array=} opt_details Raw scope details data |
| 2313 * @constructor | 2313 * @constructor |
| 2314 * @extends Mirror | 2314 * @extends Mirror |
| 2315 */ | 2315 */ |
| 2316 function ScopeMirror(frame, fun, index, opt_details) { | 2316 function ScopeMirror(frame, fun, index, opt_details) { |
| 2317 %_CallFunction(this, MirrorType.SCOPE_TYPE, Mirror); | 2317 %_Call(Mirror, this, MirrorType.SCOPE_TYPE); |
| 2318 if (frame) { | 2318 if (frame) { |
| 2319 this.frame_index_ = frame.index_; | 2319 this.frame_index_ = frame.index_; |
| 2320 } else { | 2320 } else { |
| 2321 this.frame_index_ = UNDEFINED; | 2321 this.frame_index_ = UNDEFINED; |
| 2322 } | 2322 } |
| 2323 this.scope_index_ = index; | 2323 this.scope_index_ = index; |
| 2324 this.details_ = new ScopeDetails(frame, fun, index, opt_details); | 2324 this.details_ = new ScopeDetails(frame, fun, index, opt_details); |
| 2325 } | 2325 } |
| 2326 inherits(ScopeMirror, Mirror); | 2326 inherits(ScopeMirror, Mirror); |
| 2327 | 2327 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2362 }; | 2362 }; |
| 2363 | 2363 |
| 2364 | 2364 |
| 2365 /** | 2365 /** |
| 2366 * Mirror object for script source. | 2366 * Mirror object for script source. |
| 2367 * @param {Script} script The script object | 2367 * @param {Script} script The script object |
| 2368 * @constructor | 2368 * @constructor |
| 2369 * @extends Mirror | 2369 * @extends Mirror |
| 2370 */ | 2370 */ |
| 2371 function ScriptMirror(script) { | 2371 function ScriptMirror(script) { |
| 2372 %_CallFunction(this, MirrorType.SCRIPT_TYPE, Mirror); | 2372 %_Call(Mirror, this, MirrorType.SCRIPT_TYPE); |
| 2373 this.script_ = script; | 2373 this.script_ = script; |
| 2374 this.context_ = new ContextMirror(script.context_data); | 2374 this.context_ = new ContextMirror(script.context_data); |
| 2375 this.allocateHandle_(); | 2375 this.allocateHandle_(); |
| 2376 } | 2376 } |
| 2377 inherits(ScriptMirror, Mirror); | 2377 inherits(ScriptMirror, Mirror); |
| 2378 | 2378 |
| 2379 | 2379 |
| 2380 ScriptMirror.prototype.value = function() { | 2380 ScriptMirror.prototype.value = function() { |
| 2381 return this.script_; | 2381 return this.script_; |
| 2382 }; | 2382 }; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2483 }; | 2483 }; |
| 2484 | 2484 |
| 2485 | 2485 |
| 2486 /** | 2486 /** |
| 2487 * Mirror object for context. | 2487 * Mirror object for context. |
| 2488 * @param {Object} data The context data | 2488 * @param {Object} data The context data |
| 2489 * @constructor | 2489 * @constructor |
| 2490 * @extends Mirror | 2490 * @extends Mirror |
| 2491 */ | 2491 */ |
| 2492 function ContextMirror(data) { | 2492 function ContextMirror(data) { |
| 2493 %_CallFunction(this, MirrorType.CONTEXT_TYPE, Mirror); | 2493 %_Call(Mirror, this, MirrorType.CONTEXT_TYPE); |
| 2494 this.data_ = data; | 2494 this.data_ = data; |
| 2495 this.allocateHandle_(); | 2495 this.allocateHandle_(); |
| 2496 } | 2496 } |
| 2497 inherits(ContextMirror, Mirror); | 2497 inherits(ContextMirror, Mirror); |
| 2498 | 2498 |
| 2499 | 2499 |
| 2500 ContextMirror.prototype.data = function() { | 2500 ContextMirror.prototype.data = function() { |
| 2501 return this.data_; | 2501 return this.data_; |
| 2502 }; | 2502 }; |
| 2503 | 2503 |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3122 // Functions needed by the debugger runtime. | 3122 // Functions needed by the debugger runtime. |
| 3123 utils.InstallFunctions(utils, DONT_ENUM, [ | 3123 utils.InstallFunctions(utils, DONT_ENUM, [ |
| 3124 "ClearMirrorCache", ClearMirrorCache | 3124 "ClearMirrorCache", ClearMirrorCache |
| 3125 ]); | 3125 ]); |
| 3126 | 3126 |
| 3127 // Export to debug.js | 3127 // Export to debug.js |
| 3128 utils.Export(function(to) { | 3128 utils.Export(function(to) { |
| 3129 to.MirrorType = MirrorType; | 3129 to.MirrorType = MirrorType; |
| 3130 }); | 3130 }); |
| 3131 }) | 3131 }) |
| OLD | NEW |