Closed Bug 550273 Opened 16 years ago Closed 15 years ago

ARM backend fails to JIT some acceptance testcases

Categories

(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect, P2)

ARM
Linux
defect

Tracking

(Not tracked)

VERIFIED FIXED
Q3 11 - Serrano

People

(Reporter: brbaker, Assigned: kpalacz)

References

Details

Running the arm-linux shell with -Djitordie shows that there are some testcases that the ARM backend is unable to JIT. mops/mops.abc ecma3/LexicalConventions/e7_7_3.abc ecma3/Expressions/e11_2_1_1.abc ecma3/String/e15_5_4_6_2_rt.abc ecma3/String/e15_5_3_2_1.abc ecma3/String/e15_5_3_2_2.abc ecma3/String/e15_5_4_4_4_rt.abc ecma3/ObjectObjects/e15_2_1_1_rt.abc ecma3/GlobalObject/e15_1_2_3_1.abc ecma3/GlobalObject/e15_1_2_7.abc ecma3/GlobalObject/e15_1_2_6.abc ecma3/Math/e15_8_2_1.abc ecma3/Number/toLocaleString_rt.abc ecma3/Number/e15_7_4_2_4.abc ecma3/RegExp/eregress_103087.abc ecma3/Array/e15_4_4_4_1.abc regress/vector_domain_bug.abc as3/Expressions/asOperator/asOper.abc as3/ShellClasses/Domain.abc Shell was compiled for arm-linux using patch from bug# 550202 This is how the runtests was called (notice that I am piggy-backing on the arm-android config for known ARM failures/skips) ./runtests.py --config=arm-andriod-tvm-release-Djitordie --notimecheck --vmargs="-Djitordie" * exact same testcases that failed to jit when I also ran with VFP support with -Darm_vfp * same failures with both -Darm_arch 5 and 7
Flags: flashplayer-triage+
Flags: flashplayer-qrb?
Assignee: nobody → rreitmai
Flags: flashplayer-qrb? → flashplayer-qrb+
Priority: -- → P2
Target Milestone: --- → flash10.1
Status: NEW → ASSIGNED
Target Milestone: flash10.1 → flash10.2
Do we know /why/ we fail to JIT these cases? If not then we risk releasing code that has unknown performance traps on ARM. Also, since some AS3 facilities are being very lightly covered by the test suite (as eg the "as" operator, whose tests are in the above list) we risk that their JIT implementation is not tested on ARM at all. Granted, small risk given the structure of the system overall, but still.
(In reply to comment #1) > Do we know /why/ we fail to JIT these cases? Is there a way from the shell to get more information on why JIT fails? Or is this something that needs to be determined by debugging the shell? Just wondering if there is more information that I can provide.
Target Milestone: flash10.2 → flash10.1
Good points, Lars. Let's do the analysis and decide on targeting.
Assignee: rreitmai → kpalacz
All the jit-or-die failures are due to the JIT trying to reserve more stack space for locals than the hardcoded limit (256 entries on ARM and MIPS, more on other architectures), and only happen while trying to compile global$init(), containing lengthy initialization sequences. It's doubtful that these locals are actually all live all the time and really require that stack space but that's how it seems to work.
This problem only occurs for global$init() and can be safely deferred to Future.
Priority: P2 → --
Target Milestone: flash10.1 → Future
May resolve itself depending on the resolution of bug 542016.
Depends on: 556175
Priority: -- → P2
Target Milestone: Future → flash10.2
ARM backend has been increased to 1024 entries, and rematerialization has been improved (bug 555255) to reduce stack pressure. Needs retesting.
Brent, please retest.
Flags: flashplayer-bug+
QA Contact: nanojit → brbaker
retested -Djitordie on linux-arm with TR rev 5878 and all tests pass.
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.