Commit Graph

142 Commits

Author SHA1 Message Date
Nicholas Nethercote
b7cf8c804f Bug 531324 - nanojit: improve int32 constant generation in i386 backend. r=graydon.
--HG--
extra : convert_revision : 3b04b5fdd47f0469f040fb147d60ed4cd30d8c8e
2009-11-30 17:26:15 +11:00
Nicholas Nethercote
dfc1dd039d Bug 515313 - nanojit: finish killing reservations. r=edwsmith.
--HG--
extra : convert_revision : 1b6cb808f3048c25857613fa6e77e865fee51d8e
2009-11-24 23:00:23 -08:00
Nicholas Nethercote
a603d864d1 Bug 512181 - nanojit: rework TMFLAGS=assembly,regalloc,activation. r=edwsmith.
--HG--
extra : convert_revision : 43e64a1135f17761aad95ee7ce2d1692aa937579
2009-11-24 22:38:51 -08: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
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
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
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
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
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
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
9d9ae9f4a1 Bug 525293 - Cumulative remainder of changes from tamarin, r=dvander. 2009-10-29 12:29:28 -07:00
Graydon Hoare
c287bc3151 Bug 522314 - Make x86 virtual stack pointer code optional, g=gal.
--HG--
extra : rebase_source : c0feec3b6f94580fab0e8569a817bf36db7ed1ab
2009-10-23 13:46:09 -07:00
Graydon Hoare
399e52afa4 Bug 523505 - move icache flushing logic around, r=gal. 2009-10-21 16:26:52 -07:00
Graydon Hoare
d88df29f9d Bug 522316 - more miscellaneous drift from tamarin, r=dvander.
--HG--
extra : rebase_source : 7b92362823d4ef60ebced322c1588b6cd9f445e4
2009-10-14 13:48:00 -07:00
Andreas Gal
b4c8bbda6f Avoid redundant stack pointer fiddling when calling functions (514827, r=rreitmai,dvander). 2009-10-07 14:25:29 -07:00
Nicholas Nethercote
4565f5f07e Bug 519376 - NJ merge: move __SUNPRO _CC gunk. r=dvander. 2009-09-30 11:25:39 +10:00
Makoto Kato
968b3b2fc0 Bug 518775 - Remove unused Windows x64 code of Nativei386.cpp. r=gal 2009-09-28 18:27:21 +09:00
Nicholas Nethercote
6695f76eda Bug 518491 - NJ merge: Assembler bits and pieces. r=graydon. 2009-09-24 12:30:56 +10:00
Graydon Hoare
0d45861f13 Bug 518011 - NJ merge: XORPD in x86, and some tidying, r=gal.
--HG--
extra : rebase_source : 96eeedbe25f5931ed71835d0cb7383188e016880
2009-09-21 17:03:07 -07:00
Graydon Hoare
c421bb6e66 Bug 517530 - NJ merge: whitespace, equivalent code, PPC churn, r=dvander. 2009-09-18 13:31:09 -07:00
Nicholas Nethercote
66fe28e11c Bug 516909 - nanojit: improve LIR_div/LIR_mod codegen. r=gal. 2009-09-17 11:10:26 +10:00
Nicholas Nethercote
d43a49fd27 Bug 516903 - nanojit: fix printing of cmov, cmovq. r=edwsmith. 2009-09-17 10:39:03 +10:00
Julian Seward
b214130415 Bug 503424 - Add built-in support for compiled-trace and -guard profiling, r=graydon. 2009-09-15 15:05:53 -07:00
Nicholas Nethercote
497b41e674 Bug 515904 - nanojit: merge bug 513007 from Tamarin. r=graydon. 2009-09-14 08:29:29 +10:00
Nicholas Nethercote
4faa4a2405 Bug 515312 - nanojit: kill reservations in the Sparc backend. r=leon.sha. 2009-09-11 14:43:50 +10:00
Nicholas Nethercote
f110b091bc Bug 514349 - nanojit: start to kill Reservations. r=edwsmith,rreitmai. 2009-09-10 11:00:18 +10:00
Nicholas Nethercote
65a88a5c2c Bug 514625 - nanojit: kill AR::highwatermark. r=edwsmith. 2009-09-08 09:11:53 +10:00
Andreas Gal
026f651d69 Incorrect register hint for LIR_param for 386 backend (514344, r=njn). 2009-09-02 21:09:34 -07:00
Nicholas Nethercote
5adc17c6a5 Bug 514110 - nanojit: avoid getresv() because it has a redundant test. r=gal. 2009-09-03 09:36:51 +10:00
Nicholas Nethercote
84f6367d69 Bug 512614 - nanojit: remove FST1..FST7 from Nativei386.cpp. r=edwsmith. 2009-09-01 16:55:15 +10:00
Andreas Gal
292f7e316d Don't restore FP twice when exiting a fragment (513787, r=rreitmai). 2009-08-31 16:35:50 -07:00
Nicholas Nethercote
686dcb25be Bug 512610 - nanojit: some register allocation clean-ups. r=edwsmith. 2009-08-31 15:33:46 +10:00
Nicholas Nethercote
e7fbdc867c Bug 512398 - nanojit: kill RegAlloc::used. r=edwsmith. 2009-08-31 15:02:08 +10:00
Nicholas Nethercote
6c0c4d9616 Bug 512652 - TM: refactor Assembler::evict(). r=edwsmith. 2009-08-31 11:48:21 +10:00
Andreas Gal
317b5f2e3a Remove explicitSavedRegs and loop hacks from nanojit (513139, r=dvander). 2009-08-27 18:46:45 -07:00
Graydon Hoare
5b06cc0665 Bug 510602 - Massage LIR opcodes to merge state, r=dvander. 2009-08-27 17:52:46 -07:00
David Anderson
67d863503e Merged Assembler.h!nRegisterAllocFromSet changes from tamarin-redux (bug 513083, r=gal). 2009-08-27 13:50:30 -07:00
David Anderson
c04fa74537 Merged Assembler.h!nPatchBranch changes from tamarin-redux (bug 513079, r=gal). 2009-08-27 13:47:39 -07:00
David Anderson
83d28f8a00 Merged LIR_alloc changes from tamarin-redux (bug 513069, r=gal). 2009-08-27 13:22:30 -07:00
Graydon Hoare
8c36a6157c Bug 512366 - insert some missing assembler bits, r=dvander. 2009-08-24 16:57:25 -07:00
Edwin Smith
2c7e0812af Bug 507039 - Remove _startingIns from Assembler, r=nnethercote.
--HG--
extra : rebase_source : f4f5451a94fa60bb8059688bd64a6638e69a32c7
2009-07-23 13:46:44 -04:00
Graydon Hoare
b8154cc364 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00
Nicholas Nethercote
f71d930576 Bug 507528 - TM/nanojit: add indirect call code to the core and x86 back-end. r=rreitmai. 2009-08-03 08:54:02 +10:00
Graydon Hoare
2e92fcbbe3 Backed out changeset d0be9284ea67 2009-07-30 14:28:26 -07:00
Graydon Hoare
998a2e55b1 Backed out changeset 137cbe3c46a9 2009-07-30 14:25:03 -07:00
Edwin Smith
da15262810 Bug 507039 - Remove _startingIns from Assembler, r=nnethercote. 2009-07-23 13:46:44 -04:00
Graydon Hoare
caf3859643 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00