-
Notifications
You must be signed in to change notification settings - Fork 608
Commit 39dc8e6
committed
Update base for Update on "[ET-VK] Introduce
## Context
Currently when writing operators developers will save a reference to a `vTensor` retrieved from a `ComputeGraph`'s list of `values_` like so:
```
vTensor& vten = graph.get_val(vref).toTensor();
```
However, this is dangerous since if any values are added once the reference has been stored, `values_` which is a `std::vector` may have been resized and therefore have its contents moved, meaning the reference is now invalid.
To protect against this, this changeset introduces the `vTensorPtr` class which is a wrapper around a `vTensor*`. When constructed, it will increment a counter in the `ComputeGraph` instance, and when destroyed it will decrement the counter. `ComputeGraph` cannot add any values while the counter is not zero.
Since `Value` can be converted to other non-trivial types, this changeset also removes the `get_val` function entirely to guard against unsafe behaviour.
Differential Revision: [D55984187](https://our.internmc.facebook.com/intern/diff/D55984187/)
[ghstack-poisoned]vTensorPtr
to prevent reference invalidation and remove get_val()
API"1 parent cfd8d0d commit 39dc8e6Copy full SHA for 39dc8e6
File tree
Expand file treeCollapse file tree
0 file changed
+0
-0
lines changedFilter options
Expand file treeCollapse file tree
0 file changed
+0
-0
lines changed
0 commit comments