Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index a7cf421b5ba96df5accb00b8083b809af4d21bdf..12efbc17ab1dce65edb519496bda9dcbc953a9e6 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -1050,6 +1050,19 @@ bool Genesis::InstallNatives() { |
script->set_type(Smi::FromInt(Script::TYPE_NATIVE)); |
global_context()->set_empty_script(*script); |
} |
+ { |
+ // Builtin function for OpaqueReference -- a JSValue-based object, |
+ // that keeps its field isolated from JavaScript code. It may store |
+ // objects, that JavaScript code may not access. |
+ Handle<JSFunction> opaque_reference_fun = |
+ InstallFunction(builtins, "OpaqueReference", JS_VALUE_TYPE, |
+ JSValue::kSize, Top::initial_object_prototype(), |
+ Builtins::Illegal, false); |
+ Handle<JSObject> prototype = |
+ Factory::NewJSObject(Top::object_function(), TENURED); |
+ SetPrototype(opaque_reference_fun, prototype); |
+ global_context()->set_opaque_reference_function(*opaque_reference_fun); |
+ } |
if (FLAG_natives_file == NULL) { |
// Without natives file, install default natives. |