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.