-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Move dtor information from ResourceAny
into a Store
#8061
Move dtor information from ResourceAny
into a Store
#8061
Conversation
This commit moves the internals of the `ResourceAny` type related to destructors into the auxiliary data within a `Store`. This avoids the need to carry around pointers with `ResourceAny` and additionally makes it easier to work with. As part of this commit this also updates the behavior of `ResourceAny::try_from_resource` to no longer need an `InstancePre` and type information. This was required originally to get `ResourceAny::resource_drop` working to drop the host resource. In retrospect I'm not sure if this was the best goal to achieve because `Resource<T>` already has no destructor support and one of the more common use cases for the conversion is to simply turn around and give it back to a component where a component already has enough destructor information. In the end this should make both `ResourceAny` and `Resource<T>` pretty close to "just an index" which is easier to reason about when working with resources than carrying additional pointers.
cc @rvolosatovs as this is touching on the work of #7688 |
Subscribe to Label Actioncc @peterhuene
This issue or pull request has been labeled: "wasmtime:api"
Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, thanks.
Should ResourceIndex
be removed altogether and not be returned anymore by LinkerInstance::resource
?
It appears that this PR closes #7714
Good points! And sorry again for not realizing this is probably the best way to go sooner, I realize this is a bit of a runaround with the API :( |
This commit moves the internals of the
ResourceAny
type related to destructors into the auxiliary data within aStore
. This avoids the need to carry around pointers withResourceAny
and additionally makes it easier to work with.As part of this commit this also updates the behavior of
ResourceAny::try_from_resource
to no longer need anInstancePre
and type information. This was required originally to getResourceAny::resource_drop
working to drop the host resource. In retrospect I'm not sure if this was the best goal to achieve becauseResource<T>
already has no destructor support and one of the more common use cases for the conversion is to simply turn around and give it back to a component where a component already has enough destructor information.In the end this should make both
ResourceAny
andResource<T>
pretty close to "just an index" which is easier to reason about when working with resources than carrying additional pointers.Closes #7714