@@ -376,6 +376,13 @@ NativeApiMethodCallbackPolicy methodCallbackPolicyForSelector(
376376 return readEngineMethodCallbackPolicyValue (runtime, policyValue);
377377}
378378
379+ NativeApiMethodCallbackPolicy nativeAccessorCallbackPolicy (
380+ NativeApiMethodCallbackPolicy policy) {
381+ policy.skipCallbackIfAssociatedObjectTruthy .push_back (
382+ " __nativeApiAccessorCallbackState" );
383+ return policy;
384+ }
385+
379386Class dispatchSuperclassForEngineDerivedReceiver (id receiver,
380387 Class defaultSuperclass) {
381388 if (receiver == nil ) {
@@ -759,9 +766,9 @@ throw JSError(runtime,
759766 propertyMember->selectorName , propertyMember->signatureOffset ,
760767 (propertyMember->flags & metagen::mdMemberReturnOwned) != 0 ,
761768 getter.asObject (runtime).asFunction (runtime),
762- methodCallbackPolicyForSelector (runtime, methodPoliciesPtr,
763- propertyName,
764- propertyMember->selectorName ));
769+ nativeAccessorCallbackPolicy ( methodCallbackPolicyForSelector (
770+ runtime, methodPoliciesPtr, propertyName,
771+ propertyMember->selectorName ) ));
765772 } else if (propertyMember == nullptr && getter.isObject () &&
766773 getter.asObject (runtime).isFunction (runtime)) {
767774 auto overrides = methodOverridesForName (members, propertyName);
@@ -774,9 +781,9 @@ throw JSError(runtime,
774781 member.signatureOffset ,
775782 (member.flags & metagen::mdMemberReturnOwned) != 0 ,
776783 getter.asObject (runtime).asFunction (runtime),
777- methodCallbackPolicyForSelector (runtime, methodPoliciesPtr,
778- propertyName,
779- member.selectorName ));
784+ nativeAccessorCallbackPolicy ( methodCallbackPolicyForSelector (
785+ runtime, methodPoliciesPtr, propertyName,
786+ member.selectorName ) ));
780787 }
781788 }
782789
@@ -788,9 +795,10 @@ throw JSError(runtime,
788795 propertyMember->setterSelectorName ,
789796 propertyMember->setterSignatureOffset , false ,
790797 setter.asObject (runtime).asFunction (runtime),
791- methodCallbackPolicyForSelector (
792- runtime, methodPoliciesPtr, propertyName,
793- propertyMember->setterSelectorName ));
798+ nativeAccessorCallbackPolicy (
799+ methodCallbackPolicyForSelector (
800+ runtime, methodPoliciesPtr, propertyName,
801+ propertyMember->setterSelectorName )));
794802 }
795803 }
796804
0 commit comments