[webkit-dev] javascriptcore: explicitly call default getProperties function?
Geoffrey Garen
ggaren at apple.com
Tue Feb 26 11:46:09 PST 2008
Hi Michael.
One solution would be to maintain a hash or bitmap indicating which
lazy properties you had allocated so far:
JSValueRef GetProperty(JSContextRef ctx, JSObjectRef obj, JSStringRef
prop,
JSValueRef* exception)
{
if (!bitmapContains(prop)) {
JSValueRef lazy_loaded = lazy_load(...);
JSObjectSetProperty(ctx, obj, prop, lazy_loaded, ...)
}
return NULL; // Forward the property request to our parent class,
which holds the property we set through JSObjectSetProperty.
}
The hash / bitmap can be stored in the JSObjectRef, using the
JSObjectSetPrivate API.
Geoff
On Feb 25, 2008, at 4:31 PM, Michael Bieniosek wrote:
> Hi,
>
> I have a situation where I want to do lazy-loading of a javascript
> object's
> properties. I'm using the C API, in particular the getProperty
> callback.
>
> I want to write code that looks like:
>
> JSValueRef GetProperty(JSContextRef ctx, JSObjectRef obj,
> JSStringRef prop,
> JSValueRef* exception)
> {
> if (!JSValueHasProperty(ctx, obj, prop)) {
> JSValueRef lazy_loaded = lazy_load(...);
> JSObjectSetProperty(ctx, obj, prop, lazy_loaded, ...)
> return lazy_loaded;
> } else {
> return JSObjectGetProperty(ctx, obj, prop, exception);
> }
> }
>
> That is, I want use obj as a cache for my lazy_load function. This
> code
> doesn't work though, because the calls to JSObjectHasProperty and
> JSObjectGetProperty recursively call GetProperty.
>
> Is there a way to make this work?
>
> Thanks,
> Michael
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
More information about the webkit-dev
mailing list