Thanks for those ideas Bart.
I think I will try stashing an index into the array in the smart pointer 
(along side the pointer) and use your idea of a stack of indices to the 
available null entries.
I'm currently working on embedding v8 for comparison purposes, so I won't 
do this immediately.


On Wednesday, August 10, 2016 at 11:06:23 PM UTC+12, Bart Janssens wrote:
>
> On Wed, Aug 10, 2016 at 11:46 AM Kit Adams <[email protected] 
> <javascript:>> wrote:
>
>> Thank you for those links, they are a great help.
>>
>> Is there an "unprotect_from_gc(T* val)"?
>>
>> I am looking for a smart pointer a bit like v8's UniquePersistent<>.
>>
>> I guess I could make one that searched through the array for the value in 
>> order to remove it (in the smart pointer's dtor).
>>
>>
> No, I didn't need unprotect so far. Iterating over the array is one way, 
> another option would be to keep a std::map along with the array to 
> immediately find the index. I think removing elements from the array is 
> cumbersome, it's probably best to set the value to null (by assigning a 
> jl_box_voidpointer(nullptr), setting a jl_value_t* to null directly feels 
> wrong) and depending on how many times objects are added / removed keep a 
> stack of the empty spots in the array so they can be reused.
>
>

Reply via email to