[webkit-dev] Some JSC API Suggestions

Brian Barnes ggadwa at charter.net
Fri Aug 14 07:24:20 PDT 2009


A couple of "convenience" API suggestions.  Again, I'm in the middle of 
a big switch over from Mozilla's SpiderMonkey to JSC, so I see a couple 
IMHO (and I've been wrong before!) API additions that might make it 
easier for new users.

.... JSValueMakeObject(.....)

I know you can cast to the JSObjectRef from JSValueRef (if it is indeed 
a value), but it's not immediately obvious from the API (I figured it 
out from the examples.)  And it gives an equivalent to JSValueToObject, 
like all other types have.  What to do if the value isn't an object is 
probably one reason it doesn't exist, but maybe that could be doc'd to 
return a JS null or exception could actually be part of the call.

... JSValueMakeArray(.....size_t argumentCount,JSValueRef *arguments.....)

Another one that can obviously be done in code but would be nice as a 
convenience.  Right now it takes a good 5-10 lines to build an array 
(complete with values, etc.)

... JSValueMakeException( .... const char *str ....)

Just a way to make exception creating easy, and it could attach 
sourceURL, line, etc, there (this would also give you a cheap way to 
find out where you are in execution if you wanted to build some kind of 
specialized debugger, make an exception, get the line -- the same trick 
you do in Java.)  It makes throwing exceptions a bit easier.  Also, 
SpiderMonkey had one nice thing that could be used, which is sprintf 
like variable count exception functions, for instance:

*exception=JSValueMakeException(ctx,"There is no %s by the name of 
%s",thing_str,name_str);

That would make it very easy to build and throw exceptions (in only one 
line most of the time) for most any exception.

Again, thanks for all the great work and listening to my suggestions, 
which might be dumb :)  I also have a couple places where I think the 
documentation generated from the header files could be updated, but I'll 
just bug you guys with one thing at a time.

[>] Brian




More information about the webkit-dev mailing list