Commit Graph

68 Commits

Author SHA1 Message Date
Andreas Gal
4fb7be0fff Backed out changeset 8775c279e59c 2009-01-12 19:39:55 -08:00
Andreas Gal
162f124fd9 Trampolines can be 2 words, so take that into account when reserving space for LIR_call instructions (473225, r=graydon). 2009-01-12 17:16:21 -08:00
Andreas Gal
6a2d183fee Stop generating LIR when running out of memory in the regexp compiler (471924, r=danderson). 2009-01-02 15:50:56 -08:00
Andreas Gal
a59109830e Use a single lirbuf for the tracer and rewind lirbuf during GC (471821, r=danderson). 2009-01-02 10:55:02 -08:00
David Mandelin
90baccb99f Bug 471602 part 1: make regexp compiler use one shared LIR buffer, r=gal 2008-12-31 16:41:33 -08:00
Andreas Gal
21b0d26f45 Allocate the next page to be used in a lirbuf early to avoid running OOM during a page overflow (471316, r=danderson). 2008-12-30 17:03:43 -08:00
Graydon Hoare
67237b98c7 Bug 469012 - crashing LirBufWriter::insLinkToFar, r=danderson. 2008-12-19 16:20:51 -08:00
Graydon Hoare
77e4ed2e26 Bug 464862 - Calculate call-argument deltas relative to last word of LirCallIns, not first, r=danderson. 2008-12-19 16:20:13 -08:00
Graydon Hoare
bb7e9793cf Bug 468484 - back out most of changeset 2963765d5585 and ifdef-guard members of avmplus::Config, fix arm build.
* * *
Bug 468484 - ifdef-guard members of avmplus::Config structure that broke ARM build.
2008-12-11 13:50:55 -08:00
Graydon Hoare
ba3dc13800 Bug 468484 - Minor adjustments to match changes in tamarin, r=gal. 2008-12-10 17:25:46 -08:00
Edwin Smith
b5094e7c4a Bug 468484 - isQuad(LIR_callh) on 32bit cpu's should be false (r=dvander+), r=danderson. 2008-11-20 15:39:45 -05:00
Edwin Smith
6415706f0d Bug 468484 - Fixed a couple more small nanojit injections, r=danderson. 2008-11-19 15:16:20 -05:00
Rick Reitmaier
a70c5b7d48 Bug 468484 - LirBuffer has been modified to provide advance warning of out of memory (OOM) conditions, r=danderson.
LirBuffer has been modified to provide advance warning of
out of memory (OOM) conditions.

A new page is allocated LIR_BUF_THRESHOLD instructions
prior to reaching the end of page.  If the page allocation fails,
call to outOmem() will return true.  The buffer can still be
safely written to during during this period but it is assumed
the higher level code will catch this condition and handle
it appropriately as writing LIR_BUF_THRESHOLD instructions
past this point will cause a crash.

This opportunity was also taken to re-factor the code for
LirBufWriter making it more platform agnostic.
- All non-LInsp data in the instruction stream is now managed
  through structures that overlay the memory region.
- prepFor() was added to replace the multiple
  ensureReferenceable() calls for each instruction.
- insCall() was also modified somewhat in that the
  arguments are now stored growing downwards from
  the position of the pseudo instruction LirCallIns.

CodegenLIR now has LirBuffer checks at the granularity
of each emitXXX() call that is exposed publicly.  This seemed
like a reasonable approach since a client could potentially
call at this level indefinitely.  If we want to reduce the frequency
of these checks then we'd have to push the check up into the
verifier.

Assembler OOM handling has also changed.  The variable
_startingIns was added and contains the location at which
the assembler began writing code for the current
begin/assem/end sequence.   If an OOM condition occurs
the assembler will reset the current instruction pointer
to _startingIns, effectively overwriting the code that has
been generated.  This allows the assembler to produce
code indefinitely (and without error) until the upper layers
have noticed the error and respond accordingly.

The constant LARGEST_UNDERRUN_PROT was added
and needs to be set to a platform specific value that is
equal to or greater than the number of NIns written for
the largest possible instruction.  i.e.  you cannot write
more than this number of NIns to the buffer for each
call to underrunProtect().
2008-11-14 12:46:35 -08:00
Edwin Smith
903336fe43 Bug 468484 - Fixed bug causing too much spilling, other arm tweaks, r=danderson. 2008-10-28 15:16:05 -04:00
Edwin Smith
795ab907f0 Bug 468484 - fix boundary bug injected by CallInfo change, r=gal. 2008-10-22 15:18:41 -04:00
Steven Johnson
13f8b6629c Bug 468484 - Macro-ize calls to new/delete to account for MMgc interactions, r=gal. 2008-10-20 15:51:13 -07:00
Andreas Gal
cdbe1015e3 Don't attempt to do CSE across labels (465276, r=danderson). 2008-11-17 00:05:29 -08:00
Jeff Walden
c90c1d272e Bug 463697 - Need an equivalent to jsopcode.tbl, but for LIR opcodes/instructions, take two. r=gal, r=edwsmith on the first iteration as well 2008-11-08 01:45:50 -08:00
Andreas Gal
51726b48f9 Backed out changeset cb559a14ad77 2008-11-10 19:14:00 -08:00
Jeff Walden
932287a573 Bug 463697 - Need an equivalent to jsopcode.tbl, but for LIR opcodes/instructions. r=gal, r=edwsmith 2008-11-08 01:45:50 -08:00
Graydon Hoare
9198f045ad Bug 462228 - Add interface to disconnect and reconnect loops in nanojit, r=gal. 2008-11-04 14:20:19 -08:00
David Anderson
db369008ec Fixed memory leak in LInsHashSet (bug 462826, r=gal). 2008-11-03 19:43:47 -08:00
David Anderson
65f7adbd31 Fixed OOM handling when starting a recorder or assembler (bug 451322, r=gal+rreitmai). 2008-11-03 16:10:20 -08:00
David Mandelin
f8d1b7798b Preserve param1 over loop iters if it is used, desk r=danderson 2008-10-31 16:48:14 -07:00
Andreas Gal
4eafb60801 Add 16-bit non-volatile loads to nanojit (454301, r=danderson). 2008-10-30 14:17:42 -07:00
Rob Arnold
6e2f659fac Fix memory leak in LInsHashSet::grow - bug 461069 r=danderson 2008-10-22 23:07:37 -04:00
Andreas Gal
e2a6acb46a Use LIR_loop for loop edge to avoid going into a side exit handler at every loop edge (461231, r=danderson). 2008-10-22 16:00:08 -07:00
Graydon Hoare
95bed8b2ed Bug 461205 - make callee-save LIR_param use optional. r=gal,edwsmith 2008-10-22 14:32:37 -07:00
Andreas Gal
b14d526b66 Merge. 2008-10-21 17:50:52 -07:00
Andreas Gal
ec7efc925c Remove code to unlink trees to reduce the size of GuardRecord. Allow GuardRecords to share one common SideExit structure. The VM places both explicitly into the LIR (460538, r=danderson). 2008-10-21 17:50:32 -07:00
Edwin Smith
9ce451ef43 fix linux compile errors 2008-10-20 10:15:07 -07:00
Edwin Smith
1896977ce5 fixes to enable ARM nanojit to build, at least 2008-10-20 10:15:07 -07:00
David Mandelin
b81d96a696 Taking change from tamarin-redux needed to allow LIR forward branches 2008-10-17 18:01:19 -07:00
Graydon Hoare
bf84bf6273 Merge tamarin-redux (nanojit2) into tracemonkey (457786, r=edwsmith,gal,danderson). 2008-10-13 13:29:18 -07:00
Jason Orendorff
a27d101dab Bug 458735 - Improve internal API for traceable natives (r=brendan, nanojit r=edwsmith) 2008-10-08 17:08:33 -05:00
Andreas Gal
bd2e228fd0 Fix constant folding for cmov and add folding of or/and/xor (457456, r=danderson). 2008-09-27 13:10:24 -07:00
Andreas Gal
5fdd5d2b67 Properly handle cmov and sse2 flags, and put them in a central place not into each platform-dependant assembler (457355, r=danderson). 2008-09-26 20:39:21 -07:00
David Anderson
ccd5e825b9 Fixed jstracer's operator delete leaking out into other shared libraries (bug 452721, r=gal). 2008-09-23 18:12:53 -07:00
Andreas Gal
dab25898eb Don't export operator new/delete except if really needed (452721, r=danderson). 2008-09-16 13:57:59 -07:00
David Anderson
85d4033733 Fixed a verbosity mode memory leak in LirNameMap::addName (bug 453895, r=sayrer). 2008-09-05 16:05:13 -07:00
David Anderson
5e828c58d4 Fixed float ops to deal with being handed an LHS GPR reservation on AMD64.
Fixed nanojit LIR verbosity crashing on AMD64.
2008-09-04 11:53:49 -07:00
Vladimir Vukicevic
a4ec50d569 Add VFP for floating point ops to nanojit ARM backend. 2008-09-02 22:29:23 -07:00
Vladimir Vukicevic
420e72ed85 b=449526, TM: fix up ARM code generation / softfloat 2008-09-02 22:29:23 -07:00
Jesse Ruderman
67955c4c42 Add a message to a NanoAssert(0) to make it possible to match against. r=gal 2008-08-28 17:00:52 -07:00
David Anderson
d3cb344df7 Fixed asserting on valid LIR in AMD64 LIR_qcmov (bug 452545, patch from Makoto Kato). 2008-08-27 19:49:26 -07:00
David Anderson
d0d64bbeff Added LIR_qior/pior. Fixed more AMD64 page jumping bugs. Fixed some other AMD64 usage bugs in jstracer. 2008-08-27 16:08:59 -07:00
David Anderson
2a4faa131c Fixed crashing with the incremental allocation changes. Very long jumps are still a problem but at least now we assert. 2008-08-26 15:15:15 -07:00
Vladimir Vukicevic
1bbc109274 wrong condition check in nanojit with qjoin(qlo,qhi) 2008-08-20 11:32:22 -07:00
David Anderson
20e464b4f9 More AMD64 fixes (release build works now, and fixed verbosity bug). 2008-08-19 21:31:23 -07:00
David Anderson
9a5b3b4307 AMD64 trace-tests.js passes now (hacked in LIR_qcmov opcode, corrected builtin return types). 2008-08-19 17:19:19 -07:00