REGRESSION (r270874): Some React Native apps are reported broken on iOS
Created attachment 418061 [details]
Comment on attachment 418061 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=418061&action=review
> + bool reportAsEnumerable = !(slot.attributes() & PropertyAttribute::DontEnum) || structure(vm)->typeInfo().getOwnPropertySlotIsWrongAboutDontEnum();
The flag should probably be queried from slotBase() rather than |this|.
Created attachment 418064 [details]
Query GetOwnPropertySlotIsWrongAboutDontEnum from the slotBase().
I'm going to test this soon and can review too
Comment on attachment 418064 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=418064&action=review
Confirmed this fixes the React native crashes we were seeing
> +static constexpr unsigned GetOwnPropertySlotIsWrongAboutDontEnum = 1 << 20;
nit, I think I'd call this:
since we don't know definitively, but the runtime must be conservative.
> + static constexpr unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | OverridesGetOwnPropertyNames | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | GetOwnPropertySlotIsWrongAboutDontEnum;
is it worth reverting these back to how they used to be and provide this flag? Or should we make them truthful? I don't think we have evidence that this part of the patch broke stuff
Created attachment 418359 [details]
Patch for landing
Committed r271873: <https://trac.webkit.org/changeset/271873>
All reviewed patches have been landed. Closing bug and clearing flags on attachment 418359 [details].