06:54 | <Aapo Alasuutari> | RegExpBuiltinExec is of the opinion that reading and writing the "lastIndex" property of a native RegExp object can trigger user-code, but is that really the case? I at least cannot figure out a case for that: The property is an unconfigurable own property of each RegExp object; it is writable, but it shouldn't be possible to turn it into an accessor property or unset its [[Value]] so as to make the property lookup go into the prototype chain. Is there some other case that I'm missing here? |
07:08 | <Ashley Claymore> | The usercode warnings are pessimistic, spec text needs to opt-out. So maybe just that |
07:09 | <Aapo Alasuutari> | Yeah, I'm wondering if this is a case where I should open an editorial PR to add the opt-outs. |
07:10 | <Aapo Alasuutari> | (Well, that and also I'm wondering if in my engine code I need to be aware of possible GC points there.) |
07:15 | <Ashley Claymore> | I agree with your analysis that this wouldn't trigger usercode |
07:16 | <Ashley Claymore> | the property is installed when the regexp is created and it's a non configurable property. And the internal slot is checked for before this AO is called |
07:20 | <Ashley Claymore> | Unless it's the ToNumber call, rather than the Get |
07:21 | <Aapo Alasuutari> | Yeah, the ToLength call absolutely can trigger UC. |
07:21 | <Aapo Alasuutari> | And the Set calls can still throw errors. |
07:30 | <Aapo Alasuutari> | https://github.com/tc39/ecma262/pull/3636 |