@@ -12,68 +12,40 @@ using v8::Isolate; |
12 | 12 | using v8::Local; |
13 | 13 | using v8::Number; |
14 | 14 | using v8::Object; |
15 | | -using v8::ReadOnly; |
16 | | -using v8::String; |
17 | 15 | using v8::Value; |
18 | 16 |
|
19 | 17 | // The config binding is used to provide an internal view of compile or runtime |
20 | 18 | // config options that are required internally by lib/*.js code. This is an |
21 | 19 | // alternative to dropping additional properties onto the process object as |
22 | 20 | // has been the practice previously in node.cc. |
23 | 21 |
|
24 | | -#define READONLY_BOOLEAN_PROPERTY(str) \ |
25 | | - do { \ |
26 | | - target->DefineOwnProperty(context, \ |
27 | | - FIXED_ONE_BYTE_STRING(isolate, str), \ |
28 | | - True(isolate), ReadOnly).FromJust(); \ |
29 | | - } while (0) |
30 | | - |
31 | | -#define READONLY_STRING_PROPERTY(obj, str, val) \ |
32 | | - do { \ |
33 | | - (obj)->DefineOwnProperty(context, \ |
34 | | - FIXED_ONE_BYTE_STRING(isolate, str), \ |
35 | | - String::NewFromUtf8( \ |
36 | | - isolate, \ |
37 | | - val.data(), \ |
38 | | - v8::NewStringType::kNormal).ToLocalChecked(), \ |
39 | | - ReadOnly).FromJust(); \ |
40 | | - } while (0) |
41 | | - |
42 | | - |
43 | | -#define READONLY_PROPERTY(obj, name, value) \ |
44 | | - do { \ |
45 | | - obj->DefineOwnProperty(env->context(), \ |
46 | | - FIXED_ONE_BYTE_STRING(isolate, name), \ |
47 | | - value, ReadOnly).FromJust(); \ |
48 | | - } while (0) |
49 | | - |
50 | 22 | static void Initialize(Local<Object> target, |
51 | 23 | Local<Value> unused, |
52 | 24 | Local<Context> context) { |
53 | 25 | Environment* env = Environment::GetCurrent(context); |
54 | 26 | Isolate* isolate = env->isolate(); |
55 | 27 |
|
56 | 28 | #ifdef NODE_FIPS_MODE |
57 | | - READONLY_BOOLEAN_PROPERTY("fipsMode"); |
| 29 | + READONLY_TRUE_PROPERTY(target, "fipsMode"); |
58 | 30 | // TODO(addaleax): Use options parser variable instead. |
59 | 31 | if (per_process_opts->force_fips_crypto) |
60 | | - READONLY_BOOLEAN_PROPERTY("fipsForced"); |
| 32 | + READONLY_TRUE_PROPERTY(target, "fipsForced"); |
61 | 33 | #endif |
62 | 34 |
|
63 | 35 | #ifdef NODE_HAVE_I18N_SUPPORT |
64 | 36 |
|
65 | | - READONLY_BOOLEAN_PROPERTY("hasIntl"); |
| 37 | + READONLY_TRUE_PROPERTY(target, "hasIntl"); |
66 | 38 |
|
67 | 39 | #ifdef NODE_HAVE_SMALL_ICU |
68 | | - READONLY_BOOLEAN_PROPERTY("hasSmallICU"); |
| 40 | + READONLY_TRUE_PROPERTY(target, "hasSmallICU"); |
69 | 41 | #endif // NODE_HAVE_SMALL_ICU |
70 | 42 |
|
71 | 43 | #if NODE_USE_V8_PLATFORM |
72 | | - READONLY_BOOLEAN_PROPERTY("hasTracing"); |
| 44 | + READONLY_TRUE_PROPERTY(target, "hasTracing"); |
73 | 45 | #endif |
74 | 46 |
|
75 | 47 | #if !defined(NODE_WITHOUT_NODE_OPTIONS) |
76 | | - READONLY_BOOLEAN_PROPERTY("hasNodeOptions"); |
| 48 | + READONLY_TRUE_PROPERTY(target, "hasNodeOptions"); |
77 | 49 | #endif |
78 | 50 |
|
79 | 51 | // TODO(addaleax): This seems to be an unused, private API. Remove it? |
@@ -83,35 +55,35 @@ static void Initialize(Local<Object> target, |
83 | 55 | #endif // NODE_HAVE_I18N_SUPPORT |
84 | 56 |
|
85 | 57 | if (env->options()->preserve_symlinks) |
86 | | - READONLY_BOOLEAN_PROPERTY("preserveSymlinks"); |
| 58 | + READONLY_TRUE_PROPERTY(target, "preserveSymlinks"); |
87 | 59 | if (env->options()->preserve_symlinks_main) |
88 | | - READONLY_BOOLEAN_PROPERTY("preserveSymlinksMain"); |
| 60 | + READONLY_TRUE_PROPERTY(target, "preserveSymlinksMain"); |
89 | 61 |
|
90 | 62 | if (env->options()->experimental_modules) { |
91 | | - READONLY_BOOLEAN_PROPERTY("experimentalModules"); |
| 63 | + READONLY_TRUE_PROPERTY(target, "experimentalModules"); |
92 | 64 | const std::string& userland_loader = env->options()->userland_loader; |
93 | 65 | if (!userland_loader.empty()) { |
94 | 66 | READONLY_STRING_PROPERTY(target, "userLoader", userland_loader); |
95 | 67 | } |
96 | 68 | } |
97 | 69 |
|
98 | 70 | if (env->options()->experimental_vm_modules) |
99 | | - READONLY_BOOLEAN_PROPERTY("experimentalVMModules"); |
| 71 | + READONLY_TRUE_PROPERTY(target, "experimentalVMModules"); |
100 | 72 |
|
101 | 73 | if (env->options()->experimental_worker) |
102 | | - READONLY_BOOLEAN_PROPERTY("experimentalWorker"); |
| 74 | + READONLY_TRUE_PROPERTY(target, "experimentalWorker"); |
103 | 75 |
|
104 | 76 | if (env->options()->experimental_repl_await) |
105 | | - READONLY_BOOLEAN_PROPERTY("experimentalREPLAwait"); |
| 77 | + READONLY_TRUE_PROPERTY(target, "experimentalREPLAwait"); |
106 | 78 |
|
107 | 79 | if (env->options()->pending_deprecation) |
108 | | - READONLY_BOOLEAN_PROPERTY("pendingDeprecation"); |
| 80 | + READONLY_TRUE_PROPERTY(target, "pendingDeprecation"); |
109 | 81 |
|
110 | 82 | if (env->options()->expose_internals) |
111 | | - READONLY_BOOLEAN_PROPERTY("exposeInternals"); |
| 83 | + READONLY_TRUE_PROPERTY(target, "exposeInternals"); |
112 | 84 |
|
113 | 85 | if (env->abort_on_uncaught_exception()) |
114 | | - READONLY_BOOLEAN_PROPERTY("shouldAbortOnUncaughtException"); |
| 86 | + READONLY_TRUE_PROPERTY(target, "shouldAbortOnUncaughtException"); |
115 | 87 |
|
116 | 88 | READONLY_PROPERTY(target, |
117 | 89 | "bits", |
|