(In reply to Logan Smyth [:loganfsmyth] from comment #3)
The second issue is, I would guess, because https://hg.mozilla.org/mozilla-central/diff/937d4dcd886732318b8722ee66052463a6c4bf19/js/src/debugger/Script.cpp put
JSOp::InitPrivateElem in the section for sideeffect-free bytecodes. I assume that was following the lead because the other
Init* bytecodes are in there, but at least for this one, this means you can initialize an element on an object that already existed. AFAIK the assumption for the other
Init* bytecodes is that if you're initializing a property for the first time, the object that the property is attached to is also newly-allocated. That assumption does not hold up in for private fields in this case, so we'll need to move that to be an effectful bytecode.
Do you happen to know if any of the other
Init* bytecodes will have similar issues with class fields?
Ah -- that's a mea-culpa then. I'll prep a patch to fix that and open a separate bug. Regarding your Q about fields: We're definitely in a bit of trouble; I'll open a new bug and cc you on it. I'm not sure what the right fix is there; it may be we cannot classify any of the initelem bytecodes as effecting.