diff --git a/nan_weak.h b/nan_weak.h index 7e7ab07b..5a3a3707 100644 --- a/nan_weak.h +++ b/nan_weak.h @@ -276,7 +276,15 @@ inline void Persistent::SetWeak( int count = self->InternalFieldCount(); void *internal_fields[kInternalFieldsInWeakCallback] = {0, 0}; for (int i = 0; i < count && i < kInternalFieldsInWeakCallback; i++) { +#if (V8_MAJOR_VERSION > 14) || \ + (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION > 2) || \ + (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION == 2 && V8_BUILD_NUMBER >= 194) + internal_fields[i] = self->GetAlignedPointerFromInternalField( + i, v8::kEmbedderDataTypeTagDefault + ); +# else internal_fields[i] = self->GetAlignedPointerFromInternalField(i); +# endif } wcbd = new WeakCallbackInfo

( reinterpret_cast*>(this) @@ -284,7 +292,15 @@ inline void Persistent::SetWeak( , 0 , internal_fields[0] , internal_fields[1]); +#if (V8_MAJOR_VERSION > 14) || \ + (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION > 2) || \ + (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION == 2 && V8_BUILD_NUMBER >= 194) + self->SetAlignedPointerInInternalField( + 0, wcbd, v8::kEmbedderDataTypeTagDefault + ); +# else self->SetAlignedPointerInInternalField(0, wcbd); +# endif v8::PersistentBase::SetWeak( static_cast*>(0) , WeakCallbackInfo

::template invoketwofield