lua-users home
lua-l archive

Re: Pushing a UserData pointer?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Rici Lake wrote:
...
If you don't want to go hacking the Lua core, I have another solution...
You say you're reffing the new userdata anyway; this is going to store a reference in the registry. There's no magic to luaL_ref other than that. So why not kill two birds with one stone? Instead of using luaL_ref to store a reference in the registry, store your own reference in the registry using a lightuserdata of the this pointer as a key. Then you can push the lua object onto the stack using the this pointer, without breaking the API and without incurring much overhead (since the hash of a lud is essentially the address).
The problem with that is now I would always have a pointer to the userdata and it would never GC, right? When I used my own table to store the lightuserdata key/userdata value pair, I made the values in that table weak so they would get collected properly.
Is there another way to avoid the GC problem?
--
chris marrin ,"",ドル
cmarrin@arch.sel.sony.com b` $ ,,.
(408) 955-3049 mP b' , 1$'
Sony ,.` ,b` ,` :$$'
 ,|` mP ,` ,mm
 ,b" b" ,` ,mm m$$ ,m ,`P$$
 m$` ,b` .` ,mm ,'|$P ,|"1$` ,b$P ,` :1ドル
 b$` ,$: :,`` |$$ ,` $$` ,|` ,$,,ドル`"$$ .` :$|
b$| _m$`,:` :1ドル ,` ,$Pm|` ` :$,ドル..;"' |$:
P$b, _;b$$b1ドル" |$$ ,` ,$$" ``' $$
 ```"```'" `"` `""` ""` ,P`
"As a general rule,don't solve puzzles that open portals to Hell"'

AltStyle によって変換されたページ (->オリジナル) /