src: remove unneeded AssignToContext() call#9213
Conversation
|
Does this affect the result |
|
Yes, it does, and no, it shouldn't. Everything in the binding layer should be using |
Maybe I’m being naïve, but to me all of these look like exceptions to that rule? |
|
Those are from module initialization functions; those operate on the context they're passed when loaded (which is always a node context.) |
Oh, right. The (Sorry for the question spam) |
|
Oh, that's a good point. Those functions use On the flip side, using diff --git a/test/addons/make-callback/test.js b/test/addons/make-callback/test.js
index 43ad014..b67d114 100644
--- a/test/addons/make-callback/test.js
+++ b/test/addons/make-callback/test.js
@@ -36,6 +36,10 @@ const recv = {
assert.strictEqual(42, makeCallback(recv, 'one'));
assert.strictEqual(42, makeCallback(recv, 'two', 1337));
+// Check that callbacks on a receiver from a different context works.
+const foreignObject = vm.runInNewContext('({ fortytwo() { return 42; } })');
+assert.strictEqual(42, makeCallback(foreignObject, 'fortytwo'));
+
// Check that the callback is made in the context of the receiver.
const target = vm.runInNewContext(`
(function($Object) { |
|
I've been prodding at it and I observe that the AssignToContext() calls cause the weird issue where: auto context_1 = object->CreationContext();
auto context_2 = Environment::GetCurrent(context_1)->context();
CHECK_EQ(context_1, context_2); // Boom!It's not difficult to work around (I'll file a pull request) but it seems broken to me. |
|
#9221 landed. I'm going to land the first commit and drop the second one. |
It's only used once at startup in a single place so create the string in place instead of caching it for the lifetime of the isolate. PR-URL: nodejs#9213 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
810e256 to
63c47e7
Compare
It's only used once at startup in a single place so create the string in place instead of caching it for the lifetime of the isolate. PR-URL: #9213 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
|
@bnoordhuis should this be backported? |
ping @bnoordhuis |
It's only used once at startup in a single place so create the string in place instead of caching it for the lifetime of the isolate. PR-URL: #9213 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
It's only used once at startup in a single place so create the string in place instead of caching it for the lifetime of the isolate. PR-URL: #9213 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
It's only used once at startup in a single place so create the string in place instead of caching it for the lifetime of the isolate. PR-URL: #9213 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
It was added in commit 681fe59 ("vm: assign Environment to created
context") from April 2014 to work around a segmentation fault when
accessing process.env from another context but that is not necessary
anymore after commit 7e88a93 ("src: make accessors immune to context
confusion") from March 2015.
CI: https://ci.nodejs.org/job/node-test-pull-request/4599/