Commit Graph

706 Commits

Author SHA1 Message Date
Nicholas Nethercote
ac806a733d Bug 529900 - 64-bit - lots of assertions, crashes... r=edwsmith.
--HG--
extra : convert_revision : 3d99d6e37ba85c13d449352b8ce8283d4e0cbf0d
2009-11-24 15:30:04 +11:00
Nicholas Nethercote
b33368aede Bug 525379 - nanojit: make the _nIns/_nExitIns swap hack more consistent. r=edwsmith.
--HG--
extra : convert_revision : bad9394918255f4afcbff259153dc9d8c9afad25
2009-11-24 14:56:33 +11:00
Nicholas Nethercote
f0322be6c3 Bug 530713 - nanojit: fix LirReader::read() badness. r=edwsmith.
--HG--
extra : convert_revision : 39a8b47fd38af397e7fe0196637dc2e66cadb56b
2009-11-24 14:23:20 +11:00
Nicholas Nethercote
348df1cdbf Bug 529725 - nanojit: improve asm_prep_fcall() in i386 and Sparc backends. r=rreitmai.
--HG--
extra : convert_revision : 30767eb970427b1044fae5db99c2427f57e576fe
2009-11-23 11:04:59 +11:00
Julian Seward
937420dbec Bug 520905 - collapse callee saved register spills/reloads into LDMIA/STMIA instructions, r=vlad.
--HG--
extra : convert_revision : 73952814a07755be92fba1060efc97d5010b38c9
2009-11-20 10:11:33 -08:00
Edwin Smith
4a6316d03b Suppress unused parameter warning in PPC backend (r=me)
--HG--
extra : convert_revision : 4ac63c016a95f1c58082824cf6813692f51ae917
2009-11-19 10:09:38 -05:00
Nicholas Nethercote
4ca10e2ea0 Bug 515311 - nanojit: kill reservations in the PPC backend. r=rreitmai.
--HG--
extra : convert_revision : e0a0d3915764c663ccf1f0b6bedc14c7303ad239
2009-11-19 10:41:16 +11:00
Edwin Smith
efee9aec4c Fix Sparc bustage from bug 528419 (r=me)
--HG--
extra : convert_revision : 018f529d80309686b99d109eb132f520cf72a2fc
2009-11-18 16:07:09 -05:00
Edwin Smith
c75cfaf023 Fix PPC bustage (bug 513863, r=me)
--HG--
extra : convert_revision : 606f3e6e99b02907d3c983dd37aa7e011a7fa43e
2009-11-18 13:42:08 -05:00
Nicholas Nethercote
f0737b9579 ARM Bustage fix for bug 513863. r=me.
--HG--
extra : convert_revision : ee701ef7d0e4ca71ce73ac77a65fe8549429dce1
2009-11-18 12:33:34 +11:00
Nicholas Nethercote
e26daf15b9 Bug 513863 - nanojit: refactor registerAlloc(). r=rreitmai.
--HG--
extra : convert_revision : 6b7cffb8984f821980d38d4c9ccd31f8bdd3e363
2009-11-18 12:27:57 +11:00
Nicholas Nethercote
391f339dc4 Bustage fix: avoid compiler warning (which is treated as an error by tinderbox). r=me.
--HG--
extra : convert_revision : 225c22dfb86b51c2e28e0328d98032d52e10d58d
2009-11-18 11:35:39 +11:00
Nicholas Nethercote
5fd3964fe4 Bug 528419 - nanojit: overhaul i386 comparison handling. r=edwsmith.
--HG--
extra : convert_revision : f05d2e60125fd7ffc5ab67bb0541012638d4d1cb
2009-11-18 11:15:20 +11:00
Edwin Smith
9bd0901698 One more try to make osx64 and linux64 compilers happy with printf
--HG--
extra : convert_revision : 440f14010965f1f70afd90b30007988617f064a0
2009-11-17 15:09:27 -05:00
Edwin Smith
b39acdae73 Fix several underrunProtect bugs in X64 backend (bug 529219 r=edwsmith+)
I'm pushing this on behalf of nnethercote since tamarin had one additional
regression failure that this patch fixes.  Comments from the bug:

Bug 520712 introduced some underrunProtect() problems in the X64 backend.  A
follow-up patch fixed one of them, but there are several remaining.  This patch
fixes all of them, AFAICT, and commons out some code in the process hopefully
making things less error-prone.  (It also fixes a printf-style compile
warning.)

I tested this by reducing the size of chunks allocated by codeAlloc to only 128
bytes.  After doing that, without this patch, Tracemonkey was fairly crashy and
Tamarin was totally crashy;  with the patch both were fine, albeit slower than
usual.  (I tried 64 bytes as well but got assertions in the code allocator,
that seems to be Just Too Small.)

--HG--
extra : convert_revision : 7972be6204883c0ba472fe8caaa08f0b08660e72
2009-11-17 14:34:43 -05:00
Edwin Smith
18ad0c911d Fix assertion failure injected by X64 verbose code patch (bug 520712 r=dvander+)
When we test the size of an offset, we have to do it after underrunProtect
or else a jump can be inserted which then invalidates the instruction selection.

--HG--
extra : convert_revision : 9b249328236ffec433abb961c0737a82f437c7d4
2009-11-16 14:22:26 -05:00
Nicholas Nethercote
a8fa693ddd Bug 520712 - nanojit: print assembly code for X64 backend with TMFLAGS=assembly. r=edwsmith.
--HG--
extra : convert_revision : bc99b0483e324920fa4c55235d1f9da58eeebcaf
2009-11-16 13:14:39 +11:00
Nicholas Nethercote
97e38dea03 Bug 518242 - NJ: Remove insSkip and supporting machinery. r=graydon.
--HG--
extra : convert_revision : d0134ea858d0e34c389868a59aac7085451865b4
2009-11-13 16:18:40 +11:00
Graydon Hoare
ec80c24575 Bug 528320 - Improve warning-handling on windows, r=rreitmai.
--HG--
extra : convert_revision : c1dd9d0db4cf07210025b69e852f2ea43275a759
2009-11-12 15:07:31 -08:00
Julian Seward
6de060464c Bug 517883 - make TM fragment entry- and exit-profiling work on ARM, r=vlad.
--HG--
extra : rebase_source : 5ce347fc1855009b2e71a67ab4df69ee03e7d65b
extra : convert_revision : e133153691ce2daf3eb72bba7762191b61b7afcb
2009-11-12 14:30:36 -08:00
Nicholas Nethercote
ce6dd615de Bug 513865 - nanojit: make LirReader::read() clearer and faster. r=gal.
--HG--
extra : convert_revision : d78bd673c8652d17489559744f4a221c78811286
2009-11-13 09:26:26 +11:00
Nicholas Nethercote
3cdf300b3f Bug 527874 - nanojit: add and remove some uses of findSpecificRegForUnallocated(). r=rreitmai.
--HG--
extra : convert_revision : 8a61bb2085985eb84772ca1ad924eee5b7fe544f
2009-11-13 09:23:14 +11:00
Edwin Smith
9eada54d27 Fix NativeARM; missed one file when backing out registerAllocTmp (r=me)
--HG--
extra : convert_revision : ec94ce9d044ee358a65c259a6151ce660122f813
2009-11-12 08:39:32 -08:00
Edwin Smith
d7a89e77b5 Add LIR_jtbl instruction, and patch up lirasm to remove LIR_ji (bug 465582 r=nnethercote+, rreitmai+)
new opcode: LIR_jtbl.  jtbl takes a uint32_t index and a table of label
references (LIns**), representing a jump to one of the labels.

the index must be in range (range checking is not included in the opcode).

the table is allocated in memory at least as long lived as the LIR; this is
accomplished by doing the allocation from the same Allocator used by LirBuffer.

In the x86 backend, this is implemented with a simple jmp [R*4+ADDR] where ADDR
is the address of the table.  I added a new dataAllocator (Allocator&)
parameter to Assembler, which is used for allocating data along with code (data
& code have same lifetime).  The x86 backend allocates the final table of
addresses from this allocator and embeds the pointer to the table in code.

In other backends more than one instruction must be used due to limited range
of the constant part of the addressing mode (ppc, arm), or non-support for
full-range pc-relative indexing (x64, ppc64).

Anyone generating LIR code for use with LIR_jtbl must also generate a
LIR_regfence instruction after each label reachable by a forwards edge
from LIR_jtbl.  This is to workaround the register allocator's inability
to merge register states between 2 or more pre-existing targets.  LIR_regfence
is not required for backwards edges.

--HG--
extra : convert_revision : ee709eaaa30f720f77ab863ba4c9e6d10d69982b
2009-11-11 14:38:12 -05:00
Rick Reitmaier
90792e48c5 Silence win64 compiler gripe about unused var (r+me)
--HG--
extra : convert_revision : 6a40f9bbeae25cc7c79ce34db8226ab0ff786c57
2009-11-11 09:12:57 -08:00
Graydon Hoare
53519f8859 Bug 527178 - Improve valid-displacement checks, r=edwsmith, r=dvander.
--HG--
extra : rebase_source : b95743173b293bd4a2a54b37124d4e85cb16d425
extra : convert_revision : eadf0b1a3fd0bd28303b12b905eb94a09a2ade1b
2009-11-10 14:55:35 -08:00
Nicholas Nethercote
c8fb8e9279 Bug 527288 - TM: "Assertion failure: m != TT_INT32 || isInt32(*vp), at
../jstracer.cpp" with for, for...each.  r=edwsmith.

--HG--
extra : convert_revision : 8f59c1429621a0ebb1cab43c638e926df463d3a1
2009-11-11 11:47:39 +11:00
Rick Reitmaier
7fc8791eda Silence winmo compiler gripe about unused var (r+me)
--HG--
extra : convert_revision : f2504bf688652c6730b49dca93da149f419bb165
2009-11-10 14:49:12 -08:00
Jacob Bramley
9d5d377b24 Fix LIR_ov for LIR_mul on ARM. (bug 521161, r=gal)
--HG--
extra : convert_revision : 4d16a7956f99c889899f35fbd0ad3a9fb0c12e0d
2009-11-10 08:19:04 +00:00
Nicholas Nethercote
0a26c2fbaf Bug 515309 - nanojit: kill reservations in the ARM backend. r=Jacob.Bramley.
--HG--
extra : convert_revision : 271317c774639b9604d3e9ab9d67d615b5166c64
2009-11-10 17:27:09 +11:00
Nicholas Nethercote
8b9cbc6e8b Bug 525437 - clean up LIR_call. r=edwsmith.
--HG--
extra : convert_revision : 2f6b3b6eedb27044cc7699c923d4220dd169b823
2009-11-10 14:12:18 +11:00
Nicholas Nethercote
f49548f101 Bug 515310 - nanojit: kill reservations in the x64 backend. r=dvander
--HG--
extra : convert_revision : 5ca7d17649581013e1f275d6e2d26693f1b5c55d
2009-11-09 17:15:24 +11:00
David Anderson
db7ed2cb48 Reorganized the fragment class hierarchy (bug 524620, r=gal). 2009-11-05 15:04:54 -08:00
Nicholas Nethercote
dd4a2ec015 Bug 512634 - nanojit: identify RegAlloc invariants. r=edwsmith.
--HG--
extra : convert_revision : 2d5d94694fceca54934270a518a5b341ce13b2d0
2009-11-05 11:56:48 +11:00
Nicholas Nethercote
13dad87c06 Bug 502778 - nanojit: speed up CseFilter. r=edwsmith.
--HG--
extra : convert_revision : 98b64e95f3f98c85e4dfab9e66d16543cb27a8b6
2009-11-05 09:40:33 +11:00
Graydon Hoare
4990d750b2 Bug 526011 - Backed out changeset ccae3c736aed, premature landing.
--HG--
extra : convert_revision : ba29ca88bc1acdee7ae1a532f202ee99f08ce755
2009-11-04 10:15:41 -08:00
Nicholas Nethercote
b19353ba34 Bug 517405 - nanojit: don't compute x86 FP conditions twice(!). r=rreitmai.
--HG--
extra : convert_revision : bb0d40d10977953fffe3063745de0d8778bec6c6
2009-11-04 16:44:13 +11:00
Nicholas Nethercote
d97e5c6a9e Bug 516348 - nanojit: add findSpecificRegForUnallocated(). r=edwsmith.
--HG--
extra : convert_revision : 0e40a8977b80a96f9233488878589afcdfc8d800
2009-11-04 14:45:29 +11:00
Graydon Hoare
77b0404bd4 Bug 525392 - Fix ARM branch-patching logic, r=vlad.
--HG--
extra : convert_revision : 3510743118fdb7ba39e941894ccf7a80788f8421
2009-11-03 11:49:31 -08:00
David Anderson
0ceba054d4 Removed Fragment::vmprivate and Fragment::root (bug 526011, r=graydon).
--HG--
extra : convert_revision : ccae3c736aeddd81211073095132a7feb70c33e7
2009-11-03 10:16:17 -08:00
Jacob Bramley
6168fd499c Bug 525878 - The lirasm call1 test fails on ARM, r=graydon.
--HG--
extra : convert_revision : 9088798ea4a9ccdf7ffff83b97bc468213e72942
2009-11-02 10:32:02 -08:00
Jacob Bramley
357496b516 Rolling back changes that should have gone into nanojit-central. 2009-11-02 10:05:09 +00:00
Jacob Bramley
12af34360e Make LIR_ov work for LIR_mul on ARM. (bug 521161, r=gal) 2009-11-02 09:35:01 +00:00
Graydon Hoare
ad0e1f162f Nanojit merge death throes, no bug, r=dvander. 2009-10-29 18:42:14 -07:00
Graydon Hoare
01068a2a70 Bug 525293 - Followup to remove dead lines that shouldn't be in previous patch, r=dvander. 2009-10-29 13:31:55 -07:00
Graydon Hoare
9d9ae9f4a1 Bug 525293 - Cumulative remainder of changes from tamarin, r=dvander. 2009-10-29 12:29:28 -07:00
Robert Sayre
8218769bc0 Merge mozilla-central to tracemonkey. 2009-10-29 08:48:15 -07:00
Graydon Hoare
a87bf773fa Bug 524587 - remove softfloat guards, restore CodeAlloc ref-ptr, r=gal.
--HG--
extra : rebase_source : b7bca87acdd97bf8f0598c6069f7094a16488eb8
2009-10-27 15:24:12 -07:00
Makoto Kato
e3678e082a Bug 515545 - Add EXECUTE_TREE_TIMER code for Windows x64. r=dvander 2009-10-27 18:00:15 +09:00
Graydon Hoare
c22f99d364 Bug 524236 - ARM actually needs to check used-ness of call instruction in asm_call, r=gal. 2009-10-23 17:48:41 -07:00