[runtime] Setup Constructor for proxy_map
Bug: chromium:868473
Change-Id: I6a2f9be15cdc05cfa793650436c7ec3dd583bef4
Reviewed-on: https://chromium-review.googlesource.com/1158833
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Chandan Reddy <chandanreddy@google.com>
Cr-Commit-Position: refs/heads/master@{#54857}
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index ea5017f..e648729 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -3448,6 +3448,8 @@
name, proxy_function_map, Builtins::kProxyConstructor);
Handle<JSFunction> proxy_function = factory->NewFunction(args);
+ isolate_->proxy_map()->SetConstructor(*proxy_function);
+
proxy_function->shared()->set_internal_formal_parameter_count(2);
proxy_function->shared()->set_length(2);
diff --git a/src/objects-debug.cc b/src/objects-debug.cc
index 864301c..1c41e5b 100644
--- a/src/objects-debug.cc
+++ b/src/objects-debug.cc
@@ -1426,6 +1426,7 @@
void JSProxy::JSProxyVerify(Isolate* isolate) {
CHECK(IsJSProxy());
+ CHECK(map()->GetConstructor()->IsJSFunction());
VerifyPointer(isolate, target());
VerifyPointer(isolate, handler());
if (!IsRevoked()) {
diff --git a/test/mjsunit/regress/regress-5085.js b/test/mjsunit/regress/regress-5085.js
index 21b6962..167bfa0 100644
--- a/test/mjsunit/regress/regress-5085.js
+++ b/test/mjsunit/regress/regress-5085.js
@@ -64,3 +64,11 @@
a: 1
};
assertEquals(Proxy.prototype, {b: 2});
+
+(function testProxyCreationContext() {
+ let realm = Realm.create();
+ let p1 = new Proxy({}, {});
+ let p2 = Realm.eval(realm, "new Proxy({}, {})");
+ assertEquals(0, Realm.owner(p1));
+ assertEquals(1, Realm.owner(p2));
+})();