Add isolated contexts to PythonMonkey #453
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #208
Implement isolated JavaScript execution contexts in PythonMonkey.
Context
class ininclude/modules/pythonmonkey/pythonmonkey.hh
to encapsulate JSContext, global object, auto realm, and job queue.Context
class insrc/modules/pythonmonkey/pythonmonkey.cc
for initialization, destruction, and accessing the context.createContext
,evalInContext
, andcleanupContexts
functions insrc/modules/pythonmonkey/pythonmonkey.cc
to manage multiple contexts.eval
function insrc/modules/pythonmonkey/pythonmonkey.cc
to accept a context ID and evaluate JavaScript code within the specified context.src/modules/pythonmonkey/pythonmonkey.cc
to include thecontext
function.SuperGlobalContext
class ininclude/modules/pythonmonkey/pythonmonkey.hh
to encapsulate shared JSContext, global object, auto realm, and job queue.SuperGlobalContext
class insrc/modules/pythonmonkey/pythonmonkey.cc
for initialization and cleanup of shared resources.Context
class to referenceSuperGlobalContext
for shared resources.evalInContext
function to useSuperGlobalContext
for shared resources.SuperGlobalContext
accessible through aGLOBAL_CX
variable.JobQueue
class ininclude/JobQueue.hh
andsrc/JobQueue.cc
to accept a JSContext in the constructor.src/JSMethodProxy.cc
,src/JSObjectItemsProxy.cc
,src/JSObjectIterProxy.cc
,src/JSObjectKeysProxy.cc
,src/JSObjectProxy.cc
, andsrc/JSStringProxy.cc
to use theContext
object instead of the globalGLOBAL_CX
variable.