Hi,

suppose I have wrapped a vector TJsVec and there's a function static void 
multiply(const v8::FunctionCallbackInfo<v8::Value>& Args); that returns a 
new TJsVec, scaled by a scalar:

void TJsVec::multiply(const FunctionCallbackInfo<Value>& Args) {
  Isolate* Isolate = Isolate::GetCurrent();
  HandleScope Scope(Isolate);
  
  /* error checking -- make sure Args.Length() >= 1 and Args[0] is a number 
*/ 
  TJsVec* JsVec = ... /* unwraps the object */ 
  const double Scalar = Args[0]->NumberValue();
  TFloatVector ResV; // ResV = JsVec->Vec * Scalar 
   ... /* scales JsVec->Vec by scalar using internal linear algebra library 
*/
  
   TJsVec* JsResV = new TJsVec(ResV);
   JsResV->Wrap(Args.Holder()); // (1)
   // (2) 
   Args.GetReturnValue().Set(JsResV); // (3)
}

Note that TJsVec is derived from node::ObjectWrap, i.e. we have class 
TJsVec : public node::ObjectWrap { ... };.

I have several questions regarding this code:
 (*) What exactly does the line JsResV->Wrap(Args.Holder()) do? Why do we 
pass it Args.Holder()?
 (*) What does Args.GetReturnValue().Set(JsResV); do? 
 (*) And, most important, suppose I executed Javascript function in the 
place (2). *Could V8 garbage-collected JsResV?* I.e. is object elligible 
for delition at (2) -- immediately after creation and before the function 
"returns" it in (3)? 

Furher, should I move the line (3) immediately after creating the object? 

Blaz.

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/f4da084b-1579-4875-997c-87e9ec29de7e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to