The script counter currently counts instruction bytes and spill bytes, and it does so using the size() method to obtain the current buffer position. The size() method is only accurate on the ARM when pending pools are flushed. Using the size() method with a pending pool to flush is most likely a programming error so I would like to assert that the pools are flushed in the size() method. It would be possible to use the buffer offset, excluding the pools, but this may not be available in future with an elastic assembler buffer. This issue has been discussed before and the feedback received at the time was that this code can just be removed so I would like to do so and uplift this to beta (31) in support of the asm buffer work.
Created attachment 8441875 [details] [diff] [review] Remove the instruction counters from the script counters. https://tbpl.mozilla.org/?tree=Try&rev=b614e5829cf4
The try run had some failures on Windows debug build tests but I see the same failures on other close runs and I do not think they are related to this bug.
Comment on attachment 8441875 [details] [diff] [review] Remove the instruction counters from the script counters. [Approval Request Comment] Bug caused by (feature/regressing bug #): Feature was added in bug 814489. User impact if declined: None, but this code is not accurate for the ARM backend and if this were not just used to generate some statistics then it would likely indicate a programming error so an assertion to catch such usage is being added in pending patches. Would like to get this uplifted to ESR 31 to avoid blocking other patches. Testing completed (on m-c, etc.): Locally, and a try run. Risk to taking this patch (and alternatives if risky): low. String or IDL/UUID changes made by this patch: n/a