On 2016-04-19 11:48 PM, Jeff Walden wrote:
> On 04/19/2016 08:37 PM, Ehsan Akhgari wrote:
>> As far as I understand, the js namespace is used internally in
>> SpiderMonkey, and the JS namespace contains the public API symbols.
>> However, I occasionally come across things in the public headers in
>> namespace js that I need to use.  Examples include js::GCPolicy,
>> js::RootedBase, js::GetBuiltinClass, and js::Unbox.
>>
>> Is there any significance to these names being under namespace js rather
>> than JS?
> 
> No.  People are just sometimes slackers about putting things in the right 
> namespace.  That and, sometimes we have gunky garbage APIs that we don't 
> quite want to anoint as likely to remain relatively consistent in the long 
> run, so we put them in namespace js rather than JS, until such time as we 
> rigorize/systematize them better.

I see, makes sense.

>> Does that mean that these are not supposed to be used as external
>> APIs?
> 
> They're available to be used.  Tho sometimes, on a case-by-case basis you are 
> not expected to understand, we would rather you not.  GCPolicy, RootedBase, 
> and GetBuiltinClass are reasonably not-frowned-upon.  Unbox is slightly 
> dodgier but is okayish (or at least we'll fix you up if and when we modify 
> it).  That might possibly be better served by 
> Boolean/Number/String/Symbol-specific methods to extract the primitive from 
> objects of such types.

About Unbox specifically, what are the methods that you're suggesting to
use?  For example thinking about BooleanObject, I can't find any other
public API that allows me to extract the boolean primitive inside it...

Thanks,
Ehan

_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to