Commit Graph

100 Commits

Author SHA1 Message Date
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
e26daf15b9 Bug 513863 - nanojit: refactor registerAlloc(). r=rreitmai.
--HG--
extra : convert_revision : 6b7cffb8984f821980d38d4c9ccd31f8bdd3e363
2009-11-18 12:27:57 +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
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
dd4a2ec015 Bug 512634 - nanojit: identify RegAlloc invariants. r=edwsmith.
--HG--
extra : convert_revision : 2d5d94694fceca54934270a518a5b341ce13b2d0
2009-11-05 11:56:48 +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
108c884253 Bug 522591 - move reader pipeline from assemble() to compile(), r=gal. 2009-10-23 14:58:10 -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
Graydon Hoare
59db3f60b0 Bug 519575 - NJ merge: more LIR.h drift, r=gal. 2009-09-29 16:36:37 -07:00
Graydon Hoare
0eca67091e Bug 519535 - NJ merge: add VTUNE dead code, r=gal. 2009-09-29 14:39:48 -07:00
Nicholas Nethercote
a2ec114552 Bug 519371 - NJ merge: add missing PEDANTIC occurrences. r=dvander. 2009-09-29 11:46:06 +10:00
Nicholas Nethercote
20271af76e Bug 518724 - NJ merge: yet more Assembler/Nativei386.cpp folderol. r=graydon. 2009-09-25 10:21:35 +10:00
Nicholas Nethercote
6695f76eda Bug 518491 - NJ merge: Assembler bits and pieces. r=graydon. 2009-09-24 12:30:56 +10:00
Graydon Hoare
c421bb6e66 Bug 517530 - NJ merge: whitespace, equivalent code, PPC churn, r=dvander. 2009-09-18 13:31:09 -07:00
Graydon Hoare
963fd74e53 Bug 516620 - Kill off residue of MMgc, r=gal.
--HG--
extra : rebase_source : 1bd814f499014507fb60ad554687b12b9fe09a3e
2009-09-10 16:29:36 -07:00
Nicholas Nethercote
ea34e5ace1 Bug 515901 - nanojit: make #ifdefs consistent for _fpuStkDepth. r=rreitmai. 2009-09-16 16:00:51 +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
Graydon Hoare
2521578c2d Backed out changeset 35777195800a, perf regression. 2009-09-14 21:07:57 -07:00
Graydon Hoare
5d33edd2e9 Bug 516620 - Kill off residue of MMgc, r=gal. 2009-09-10 16:29:36 -07:00
Graydon Hoare
1b282006e0 Bug 516567 - Remove unused error codes from Assembler, r=gal. 2009-09-10 16:05:47 -07:00
Nicholas Nethercote
4b5aeeae4f Bug 514551 - nanojit: avoid using ~allocator.free. r=edwsmith. 2009-09-11 16:21:10 +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
Nicholas Nethercote
a27675d43a Bug 513831 - nanojit: some regalloc comments, etc. r=edwsmith. 2009-09-04 09:18:01 +10:00
Andreas Gal
fadffac705 Make branchStateMap, patches, and labels fields of the Assembler (513884, r=rreitmai). 2009-09-01 15:27:34 -07:00
Andreas Gal
292f7e316d Don't restore FP twice when exiting a fragment (513787, r=rreitmai). 2009-08-31 16:35:50 -07:00
David Anderson
a33078ac37 Merge Assembler::disp() changes from tamarin-redux, always use 4-byte granularity (bug 513796, r=gal). 2009-08-31 16:14:22 -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
6c0c4d9616 Bug 512652 - TM: refactor Assembler::evict(). r=edwsmith. 2009-08-31 11:48:21 +10:00
Andreas Gal
64b13a5ec6 Remove useless FASTCALL declarations and make hashcode and equals less branchy (513539, r=dvander). 2009-08-30 00:11:12 -07:00
Andreas Gal
84094cb9d0 Remove remainder of now unused LIR_loop support code (513535, r=dvander). 2009-08-29 23:26:54 -07:00
Andreas Gal
706e1e3bd3 Remove unused hasLoop flag (513263, r=graydon). 2009-08-28 14:38:09 -07:00
Andreas Gal
317b5f2e3a Remove explicitSavedRegs and loop hacks from nanojit (513139, r=dvander). 2009-08-27 18:46:45 -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
Graydon Hoare
8c36a6157c Bug 512366 - insert some missing assembler bits, r=dvander. 2009-08-24 16:57:25 -07:00
Jacob Bramley
a3ca948c53 Bug 507117 - Merge Tamarin NativeARM changes into TraceMonkey, r=graydon.
--HG--
extra : rebase_source : f374bb29ae56dbff12da60d200868fa4f1e2b4fa
2009-08-24 15:57:55 -07:00
Graydon Hoare
503c025d90 Bug 511309 - Delete class Fragmento and all uses of it, r=dvander.
--HG--
extra : rebase_source : 47047589288ac0758e0068307b5a8f393db97606
2009-08-20 17:22:47 -07:00
Edwin Smith
ad06720f03 Bug 510078 - Convert LirNameMap to HashMap<> and Allocator, r=gal.
* * *
Don't allocate CodeAlloc with GC and dont extend GCFinalizedObject (bug 506390 r=tharwood+)

* Change PageMgr::CodeAlloc from pointer to embedded instance.
* Assembler takes CodeAlloc& now, like it already does for Allocator&
* PoolObject.cpp|h now use VMCFG_NANOJIT instead of (deprecated) FEATURE_NANOJIT
  (both #defines are equivalent)

--HG--
extra : rebase_source : 90847a654d7f669a4c2ac364dd9aae7be38cae77
2009-08-04 14:18:38 -04:00
Edwin Smith
3967b233d5 Bug 510036 - Convert LabelMap to HashMap<> and Allocator, r=gal.
--HG--
extra : rebase_source : 4f1385922085fe086084c418aa22dcc4cc4c1961
2009-08-04 13:56:48 -04:00
Edwin Smith
9c489db37c Bug 509893 - Convert NInsList to SeqBuilder<> and Allocator, r=gal.
--HG--
extra : rebase_source : ca2b073138301d78829fa1096e0cb3da607073de
2009-08-04 13:21:15 -04:00
Edwin Smith
7de6b2bc04 Bug 509890 - Convert InsList to SeqBuilder<> and Allocator, r=gal.
--HG--
extra : rebase_source : 22303e739a0a6669c634595149028872aa7bd334
2009-08-04 13:11:53 -04:00
Edwin Smith
3a5203b81c Bug 509885 - Convert NInsMap to Allocator, r=gal.
--HG--
extra : rebase_source : 3586f950b5698052af74081f8f986f32dc57fa68
2009-08-04 11:06:46 -04:00
Graydon Hoare
77e519e3e4 Bug 509883 - Grab bag of formatting churn, r=gal.
--HG--
extra : rebase_source : 05d7b651a381a9e5daca47a2140bd6f1b1154a5b
2009-08-04 11:33:14 -04:00
Edwin Smith
a65666cc5a Bug 509856 - convert LabelStateMap and RegAllocMap to Allocator based containers, r=gal. 2009-08-04 10:48:48 -04:00
Edwin Smith
1913010941 Bug 509818 - Replace StringList with SeqBuilder<char*>, use Allocator, r=dvander. 2009-08-04 09:54:47 -04:00
Edwin Smith
74be99c7ff Bug 509609 - Don't allocate CodeAlloc with GC and dont extend GCFinalizedObject, r=dvander. 2009-08-04 14:53:56 -04:00
Edwin Smith
a81fcd433a Bug 509596 - Remove some dead code, r=dvander.
--HG--
extra : rebase_source : 9d5ff6c6900b3befce2f6b6bf13d02a582f4a35d
2009-08-03 15:18:55 -04:00
Graydon Hoare
114f8d3c01 Bug 507302 - more whitespace fixes, r=nnethercote.
--HG--
extra : rebase_source : 7d208da8eabd76f66cfe323b5b598f45130299c6
2009-07-29 16:21:40 -07:00