Inconsistently, heap exo object state can store non-Passables. #1648
Labels
kriskowal-review-2024-01
Issues that kriskowal wants to bring to the attention of the team for review as of January, 2024
I noticed while reviewing Agoric/agoric-sdk#7891 and thinking about
zone.isStorable
.The premise of
isStorable
should be that if a value is storable for a given zone, then it can also be used as values in mapStores made by that zone, and be held in exo instance state variables. The current implementation of heap mapStores in@agoric/store
does successfully enforce that it only stores Passable values. However, the heap exo class maker and class kit maker does not check that the values of the state variables are Passable. ThusisStorable
Further, while heap mapStores understand and enforce
keyShape
andvalueShape
, heap exos silently ignorestateShape
. This again makes refactoring from, for example, heap to virtual more surprising for exos than for mapStores.The text was updated successfully, but these errors were encountered: