I still don't understand what the point of this call is under any 
circumstances  when you can get the internal fields out of your object when 
you get it from the object you get from the kParamter call.



On Saturday, March 3, 2018 at 9:02:42 PM UTC-8, A.M. wrote:
>
> Not much help or documentation from Google here. I suppose they expect 
> everybody just to Google it. Anyway, just in case if anyone is interested, 
> here's what's going on here.
>
> The method `v8::internal::GlobalHandles::Node::CollectPhantomCallbackData` 
> packs internal fields in this loop:
>
>     if (weakness_type() != PHANTOM_WEAK && object()->IsJSObject()) {
>       auto jsobject = JSObject::cast(object());
>       int field_count = jsobject->GetEmbedderFieldCount();
>       for (int i = 0; i < v8::kEmbedderFieldsInWeakCallback; ++i) {
>         if (field_count == i) break;
>         auto field = jsobject->GetEmbedderField(i);
>         if (field->IsSmi()) embedder_fields[i] = field;
>       }
>     }
>
> The call `IsSmi` checks whether the least significant bit is zero or not, 
> as follows:
>
> const int kSmiTag = 0;
> const int kSmiTagSize = 1;
> const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1;
> ...
>
> #define HAS_SMI_TAG(value) \
>   ((reinterpret_cast<intptr_t>(value) & ::i::kSmiTagMask) == ::i::kSmiTag)
>
> So, internal fields in weak handle callbacks only passed in as non-NULL 
> values for v8 integer object type, which has this bit set, and not for 
> arbitrary object types. 
>
> A comment about this around where `kInternalFields` is defined would be 
> nice. 
>
>
>
>
>
>
>
>

-- 
-- 
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