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
3cbd1cd998
Bug 450000 - Back out nanojit jump-patching machinery, r=danderson.
2008-12-10 17:31:17 -08:00
Graydon Hoare
ba3dc13800
Bug 468484 - Minor adjustments to match changes in tamarin, r=gal.
2008-12-10 17:25:46 -08:00
Graydon Hoare
37cfe58e72
Bug 468484 - Rename avmplus::AvmConfiguration, adjust sites of use, r=gal.
2008-12-10 17:19:40 -08: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
d1925631b4
Bug 468484 - trivial cleanups to simplify armjit merge (r=me), r=danderson.
2008-11-13 12:52:26 -05:00
Edwin Smith
774d38113c
Bug 468484 - Fix cascading register spilling bug 462522 (r=rreitmai+), r=danderson.
2008-10-31 15:56:02 -04: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
Steven Johnson
4dfea32fd4
Bug 468484 - redid nMarkExecute() to fix the bug. Now it always does exactly one page, r=gal.
2008-10-21 18:34:10 -07:00
Edwin Smith
4ab0561335
Bug 468484 - make asm_output[123] varadic, and add some LIR instruction comments, r=gal.
2008-10-21 14:53:14 -04:00
Steven Johnson
fbc6fd0ad9
Bug 468484 - internal tamarin-redux merge (mostly formatting), r=gal.
2008-10-20 15:52:11 -07: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
David Anderson
14bfd2d9ab
Fixed nanojit crashing when the reservation table filled (bug 460511, r=rickr).
2008-12-04 11:41:43 -08:00
Jesse Ruderman
e23679569a
Remove '\n' from NanoAssertMsgf calls (made redundant by the patch in bug 452674)
2008-11-12 18:02:34 -08:00
Andreas Gal
43daeaca87
Don't spill type definitions in avmplus.h into the global namespace (462288, r=danderson).
2008-11-07 15:52:51 -08:00
David Anderson
a6c715fb81
Fixed memory leak in nanojit's LabelStateMap (no bug, r=gal).
2008-11-04 19:22:13 -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
Graydon Hoare
5cfd909934
Bug 462228 - Merge code-patching functions in nanojit, r=rreitmai.
2008-11-04 14:18:17 -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
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
Vladimir Vukicevic
d2f0736eb6
[arm] misc codegen fix
2008-10-22 11:02:24 -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
Rick Reitmaier
2cc651e33b
refactor Assembler.cpp ; passing acceptance on mac
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
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
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
12aa1d345a
Bug 452674: change NanoAssert* macros to make it easier to check for nanojit assertions in automated testing. r=danderson.
2008-08-28 16:57:49 -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
9a5b3b4307
AMD64 trace-tests.js passes now (hacked in LIR_qcmov opcode, corrected builtin return types).
2008-08-19 17:19:19 -07:00
David Anderson
0f46c5d568
Fixed some bugs in the AMD64 port, still crash in 5 sunspider tests.
2008-08-18 16:23:37 -07:00
David Anderson
b39fadd1f3
Updated nanojit for the AMD64 patch.
2008-08-18 12:32:14 -07:00
David Anderson
40213894ff
Fixed nanojit using a variable before it got set (verbosity mode only it seems).
2008-08-12 10:45:24 -07:00
David Anderson
1b623f7d25
Added explicit deallocation (bug 443500, r=gal)
2008-08-11 16:01:21 -07:00
Andreas Gal
f0c74cce54
Sync with tamarin-tracing/nanojit tip.
2008-07-31 13:28:12 -07:00
David Anderson
5dca2ad552
Synced nanojit with TT tip.
2008-07-16 14:21:31 -07:00
Andreas Gal
a81b83090e
Sync with TT.
2008-07-15 13:06:05 -07:00
David Anderson
202828fb20
Merged with tamarin-tracing (Moved SideExit and GuardRecord out of nanojit, improved labelling)
2008-07-08 17:09:53 -07:00
Andreas Gal
228a13576a
Add a vmprivate field to the guard record (queued for review upstream).
2008-07-02 14:37:01 -07:00
Andreas Gal
08bd8d4245
Generate proper overflow detection code. Requires a trivial fix in nanojit (included, pending review to be pushed upstream).
2008-07-02 00:13:05 -07:00
Andreas Gal
697a294d14
Sync up with TT tip.
2008-07-01 14:46:10 -07:00
Andreas Gal
e6b28ce4f8
Sync with TT-tip.
2008-06-30 15:33:41 -07:00
Andreas Gal
4678be95aa
Fix a bug in tracing can_do_fast_inc_dec (wasn't tracking a copy and traced incorrect code). Merge with TT tip.
2008-06-24 15:57:33 -07:00
dvander@traceknight.local
490d9eb8b5
Fixed _thisfrag not being set in beginAssembly
2008-06-20 14:40:40 -07:00
dvander@traceknight.local
1d79a74ace
Fixed beginAssembly() not setting _thisfrag which verbosity requires
2008-06-20 14:38:39 -07:00
Andreas Gal
dbab3f5a43
Backed out changeset b142c62e7602
2008-06-20 14:29:10 -07:00