Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / tools / detect-builtins.js
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 (function(global) {
6
7   var GetProperties = function(this_name, object) {
8     var result = {};
9     try {
10       var names = Object.getOwnPropertyNames(object);
11     } catch(e) {
12       return;
13     }
14     for (var i = 0; i < names.length; ++i) {
15       var name = names[i];
16       if (typeof object === "function") {
17         if (name === "length" ||
18             name === "name" ||
19             name === "arguments" ||
20             name === "caller" ||
21             name === "prototype") {
22           continue;
23         }
24       }
25       // Avoid endless recursion.
26       if (this_name === "prototype" && name === "constructor") continue;
27       // Could get this from the parent, but having it locally is easier.
28       var property = { "name": name };
29       try {
30         var value = object[name];
31       } catch(e) {
32         property.type = "getter";
33         result[name] = property;
34         continue;
35       }
36       var type = typeof value;
37       property.type = type;
38       if (type === "function") {
39         property.length = value.length;
40         property.prototype = GetProperties("prototype", value.prototype);
41       }
42       property.properties = GetProperties(name, value);
43       result[name] = property;
44     }
45     return result;
46   };
47
48   var g = GetProperties("", global, "");
49   print(JSON.stringify(g, undefined, 2));
50
51 })(this);  // Must wrap in anonymous closure or it'll detect itself as builtin.