I am new to Nan, V8, and C++ (so if I haven't put a big enough target on my 
back I don't know what else I can add). I've written a lot of JavaScript 
and, in the past, C, assembler, and kernel mode code, so hopefully the 
bulls-eye is a little smaller now.

I'm working with an existing code base and am trying to understand why 
things were done the way they were. It uses Nan to create an addon for 
nodejs. I'm hoping someone here can help me understand some pieces that 
escape me.

1. The code sets internal field count for each class - sometimes to 1 and 
sometimes to 2 - but never invokes "setInternalField()" or 
"getInternalField()". Is there some reason, possibly historical, that 
"setInternalFieldCount()" needed to be called to set a value? The way I 
have interpreted what I've read is that my code needs to set and get the 
value explicitly, so setting a value but never storing anything there makes 
no sense to me.

  // Prepare constructor template
 v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(New);
 ctor->InstanceTemplate()->SetInternalFieldCount(2);
 ctor->SetClassName(Nan::New("MyClass").ToLocalChecked());

2. Given that I'm storing something in internal fields, my understanding is 
that I need to free any resources (memory, etc.) that are used by the 
internal field if the object is GC'd. Doing that in the destructor seems to 
be the right way to handle that. Is that all there is to it?

3. What difference does it make to v8 if the internal field is an aligned 
pointer or not? Is the ability to set/get aligned pointers a consistency 
check so assumptions can be made? Does the interface check the alignment? 
(Not critical for me, I don't think, but I'd like to understand.)





-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to