Applying this patch makes static analysis fail, but shouldn't. http://hg.mozilla.org/tracemonkey/rev/186ae511d5f2
It looks like the analysis is correct: you're calling guard(), which requires a stack, from guardNotGlobalObject which doesn't have a stack.
(In reply to comment #3) > It looks like the analysis is correct: you're calling guard(), which requires a > stack, from guardNotGlobalObject which doesn't have a stack. Why do we have to hand-annotate the transitive closure of calls-JS_REQUIRES_STACK? I recall being told we did not need to do anything that computers can infer for us. If a method uses cx->fp, we should hand-annotate. If a method calls a JS_REQUIRES_STACK method, no annotation should be required. /be
All the automatic analyses are function-local. They can only operate on the declared signature of the functions that are being called. So any method that calls a JS_REQUIRES_STACK method must either 1) be annotated JS_REQUIRES_STACK 2) somewhere in the body of the method, call a function which is JS_FORCES_STACK, so that you know you have safely bailed off trace.
JS_REQUIRES_STACK has been removed.
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.