-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[browser] introduce JSProxyContext #95959
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pavelsavara
added
arch-wasm
WebAssembly architecture
area-System.Runtime.InteropServices.JavaScript
os-browser
Browser variant of arch-wasm
labels
Dec 13, 2023
Tagging subscribers to 'arch-wasm': @lewing Issue Details
|
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
kg
reviewed
Dec 13, 2023
...ries/System.Runtime.InteropServices.JavaScript/System.Runtime.InteropServices.JavaScript.sln
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...rvices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Interop/JavaScriptExports.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...rvices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Interop/JavaScriptExports.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...rvices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Interop/JavaScriptExports.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...rvices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Interop/JavaScriptExports.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...time.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSException.cs
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...nteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSFunctionBinding.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...eropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSMarshalerArgument.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 13, 2023
...eropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSObject.References.cs
Outdated
Show resolved
Hide resolved
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
maraf
approved these changes
Dec 18, 2023
...m.Runtime.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSHost.cs
Outdated
Show resolved
Hide resolved
...eropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSMarshalerArgument.cs
Outdated
Show resolved
Hide resolved
...e.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSProxyContext.cs
Outdated
Show resolved
Hide resolved
- new JSMarshalerArgumentImpl.ContextHandle field - all calls from JS side will set JSMarshalerArgumentImpl.ContextHandle with current thread context - via set_arg_proxy_context - all calls to JS where runtime calls stackalloc JSMarshalerArgument will set JSMarshalerArgumentImpl.ContextHandle with Context of promise or function affinity - it will use InitializeWithContext, JSImportNoCapture - these are Task and Function callbacks to JS - JSMarshalerArgument.ToManaged always uses new JSMarshalerArgument.ToManagedContext - JSMarshalerArgument.ToManagedContext always uses JSMarshalerArgumentImpl.ContextHandle, no magic - JSMarshalerArgument.ToJS always uses new JSMarshalerArgument.ToJSContext - JSMarshalerArgument.ToJSContext during JSImport uses JSProxyContext.CurrentOperationContext otherwise JSMarshalerArgumentImpl.ContextHandle
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
kg
reviewed
Dec 18, 2023
...pt/src/System/Runtime/InteropServices/JavaScript/Marshaling/JSMarshalerArgument.Exception.cs
Outdated
Show resolved
Hide resolved
kg
reviewed
Dec 18, 2023
kg
reviewed
Dec 18, 2023
kg
reviewed
Dec 18, 2023
kg
reviewed
Dec 18, 2023
...e.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/JSProxyContext.cs
Show resolved
Hide resolved
kg
approved these changes
Dec 18, 2023
maraf
approved these changes
Dec 19, 2023
cancellation thread safe Active issue dotnet#96173
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
This was referenced Jan 3, 2024
Closed
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
arch-wasm
WebAssembly architecture
area-System.Runtime.InteropServices.JavaScript
os-browser
Browser variant of arch-wasm
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.
JSProxyContext
which collects all proxies and handles relevant to particular WebWorker/UI threadJSProxyContext.OperationStack
to know the context of the current operation.JSObject
instance toJSImport
. Such instance already has thread affinityJSProxyContext.CaptureContextFromParameter
to capture the target thread to call into.JSProxyContext
JSProxyContext
instance as a lock around operations with handles.JSObject.ProxyContext
also for non-MT build. It simplifies the#if FEATURE_WASM_THREADS
hell.CancelablePromise
more asyncIsThreadCaptured
it was bit misleadingmono_wasm_invoke_method_raw
which doesn't require existingJSProxyContext
, for early calls.push_operation
,pop_operation
to be called beforeJSExport
callsinstall_synchronization_context
->install_main_synchronization_context