Nicholas Nethercote
93a1b3630d
Bug 507087 - TM/nanojit: change _argtypes fields from 2 bits to 3 bits (TR sync). r=rreitmai,jorendorff.
2009-07-30 10:44:34 +10:00
Nicholas Nethercote
e33eb5cd4f
Bug 506346 - nanojit: remove compile warnings caused by the patch for bug 506139. r=rreitmai.
2009-07-27 10:34:44 +10:00
Nicholas Nethercote
d5dbe8400a
Bug 506177 - TM/nanojit: remove dead 'isfar' argument from asm_branch(). r=rreitmai.
2009-07-24 15:41:32 +10:00
Nicholas Nethercote
8aeefe7a20
Bug 506139 - TM/nanojit: merge TR whitespace changes in the i386 backend. r=rreitmai.
2009-07-24 10:02:22 +10:00
Nicholas Nethercote
c414a79e4f
Bug 501232 - nanojit: remove LIR_2 (3rd attempt!). r=edwsmith,gal.
2009-07-22 10:28:25 +10:00
Andreas Gal
9f57d1a918
Backed out changeset 8877e1f8645b (bug 501232).
2009-07-20 14:18:17 -07:00
Nicholas Nethercote
52ab095147
Bug 501232 - nanojit: remove LIR_2. r=edwsmith.
2009-07-17 16:25:18 +10:00
Nicholas Nethercote
acc2840ef2
Bug 504213: nanojit: rename LIR_alloc, LIR_addp, LIR_param to match tamarin-redux. r=graydon.
2009-07-15 10:00:43 +10:00
Robert Sayre
8a8f76b43b
Backed out changeset f4bcdda71b8f
2009-07-14 11:23:23 -04:00
Nicholas Nethercote
bb815f3ba9
Bug 501232: remove LIR_2. r=edwsmith.
2009-07-14 14:53:56 +10:00
Graydon Hoare
e404f743cd
Bug 503593 - NJ: whitespace and modeline cleanup, r=gal.
...
--HG--
extra : rebase_source : c7fcc1acaadb2264796a3ee7a20866eecc4dc484
2009-07-10 12:58:34 -07:00
Nicholas Nethercote
ab0511054e
Bug 502539: move displacements into load instructions. r=gal,edwsmith.
2009-07-07 09:26:12 +10:00
Nicholas Nethercote
a87c89d0ef
Bug 493125 - remove LIR_cs. r=edwsmith.
2009-07-02 12:21:28 +10:00
Nicholas Nethercote
5842226e62
Bug 492866: implement variable-width LIR. r=graydon.
2009-07-01 14:18:55 +10:00
Nicholas Nethercote
8de6422b09
Backed out changeset ae16e5919d19 (tree was closed for talos maintenance).
2009-07-01 11:33:54 +10:00
Nicholas Nethercote
4af0dc60ae
Make LIR variable-width (bug 492866, r=graydon).
2009-07-01 11:13:22 +10:00
Julian Seward
b96eed42da
Bug 494864 - Make nanojit debug output easier to follow, r=graydon.
2009-06-24 20:32:00 -07:00
Andreas Gal
f3194e9335
Move details of LIns format into LIns class itself (500053, r=dvander).
2009-06-23 14:51:15 -07:00
nnethercote@mozilla.com
015cf5504c
remove LIR_calli and LIR_fcalli (492478, r=edwsmith,jorendorff).
2009-06-19 10:20:26 +01:00
Andreas Gal
659a7a9b6c
Implement oracle-based speculative fmod/fdiv/fmul demotion (474443, r=graydon,dvander).
2009-06-12 08:33:32 -07:00
Andreas Gal
c70c0c7270
Bug 495396 - TM: missing early return in Nativei386 when generating LEA. r=edwsmith
2009-06-01 16:24:59 -04:00
Graydon Hoare
606ab3ebdf
Backout alignment-breaking patches for Bug 493821.
2009-05-19 20:26:31 -07:00
Andreas Gal
41689550b8
Bug 493821 - NJ: Fix sign-extension in imm64, r=graydon.
2009-05-19 18:27:01 -07:00
Nicholas Nethercote
90746fda0d
Bug 490947 - nanojit: remove reservation table. r=gal,edwsmith
2009-05-18 02:15:24 -04:00
Jacob Bramley
7dd0b8fd55
Bug 486669 - TraceMonkey: The ARM-specific _nSlot pointer should be reset along with _nIns. r=vlad,edwsmith
2009-05-09 15:35:56 -04:00
Nicholas Nethercote
9df38f0476
Bug 488775 - TM: widen LIR instructions. r=graydon,edwsmith
2009-05-09 14:38:34 -04:00
Andreas Gal
2866c6d091
Remove amd64 code (will be replaced with tamarin's new amd64 backend, 487981, r=danderson).
2009-04-13 16:16:10 -07:00
Vladimir Vukicevic
d317d0075d
b=480796; detect whether ARM chip has VFP and/or v6t2 instructions; r=gal
2009-03-20 15:53:33 -07:00
Nicholas Nethercote
ea15e54ba4
Bug 475876: change --with-valgrind to --enable-valgrind and add hooks to tell valgrind about the JIT's self-modifying code. r=gal (JIT parts), r=luser (build config parts).
2009-03-05 13:24:03 -08:00
Nicholas Nethercote
bf6590048b
Bug 478340 - TM: kill many of the warnings when building 'js'. r=mrbkap
2009-02-19 11:17:31 -08:00
David Mandelin
39b9e72a0c
Bug 475115: LIR_jtbl: jump tables to implement jsop_tableswitch, r=gal,r=edwsmith
2009-02-11 17:40:27 -08:00
Andreas Gal
fd4421f8bd
Don't try to align fragment entry with nopl since some processors do not support it (473552, r=graydon).
2009-02-10 17:18:57 -08:00
David Mandelin
e145a4b2b7
Fix warning for unhandled switch cases
2009-02-04 18:58:07 -08:00
Andreas Gal
4a9dbdaf12
Push a dummy copy of EBP onto the stack to make sure EBP is aligned in the new stack frame (472791, r=graydon,edwsmith).
2009-01-09 15:18:00 -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
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
Leon Sha<leon.sha@sun.com>
314e79c76f
Bug 468484 - Bug 463182 - Can not build tamarin-redux on solaris with Sun compiler. stejohns: review+, r=gal.
2008-11-06 13:37:37 +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
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
David Anderson
ed25d09ae1
Fixed a register allocation bug in nanojit when an argument using FST0 appeared twice in an argument list (bug 465484, r=edwsmith).
2008-12-04 12:34:38 -08:00
Brendan Eich
37c40ca7c0
Merge.
2008-11-17 16:29:40 -08:00
David Anderson
d46ed014cf
Fixed edge case in nanojit register allocation for shl/shr (bug 465135, r=gal).
2008-11-16 21:36:33 -08:00
timeless@mozdev.org
1efe45f72f
Bug 464212nanojit/Nativei386.cpp(148) : warning C4309: 'initializing' : truncation of constant value
...
r=gal
2008-11-11 11:20:07 +01:00
Andreas Gal
e609f0bb95
Cleanup GuardRecord, SideExit, and InterpStruct and extract VM-dependant fields (463313, r=danderson).
2008-11-07 15:23:43 -08:00
David Anderson
5ee0ea8b50
Fix using wrong regalloc helper in asm_ld peephole opt (r=rreitmai).
2008-11-04 16:52:25 -08:00
David Anderson
16b6dd740c
Peephole optimize various LIR load patterns for x86 addressing (bug 444682, r=gal).
2008-11-04 16:34:13 -08:00
Graydon Hoare
6901121f8d
Fix MSVC sensitivity to symbols called 'far'
2008-11-04 16:28:05 -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 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
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
Rick Reitmaier
2cc651e33b
refactor Assembler.cpp ; passing acceptance on mac
2008-10-20 10:15:07 -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
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
David Anderson
9c7d3f333f
Fixed regression where cmov was disabled on AMD64.
2008-10-01 17:58:38 -05:00
Vladimir Vukicevic
f761c61b8e
TM: move cmov_available setting into nj arch backends where appropriate
2008-09-30 17:15:09 -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
Ginn Chen
2763e5d63e
Make TraceMonkey build on Solaris x86 with Sun Studio 12 (bug 452588, r=danderson).
2008-09-05 16:56:03 -07:00
Ginn Chen
a3f5be56ad
Added new macro AVMPLUS_UNIX to reduce redundancy and add Solaris support to the TM browser build (bug 452589, r=dvander).
2008-09-05 15:15:00 -07:00
David Anderson
073cbf54c2
Improved AMD64 allocation for float ops that get stored back into memory.
2008-09-04 11:56:54 -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
Ginn Chen
76f8dc0daf
On x86 compilers without fastcall, simulate it when invoking traces and un-simulate it when invoking builtins (bug 452390, r=dvander).
2008-09-02 11:43:55 -07:00
David Anderson
1be49b5c2e
Use mmap() instead of valloc() in nanojit, abort on mprotect() failure (bug 451946, patch+r from Asko Tontti).
2008-09-02 10:15:26 -07:00
David Anderson
d5e48e84d7
Added descriptive messages to always-taken assertions in Nativei386.cpp.
2008-08-28 17:27:29 -07:00
David Anderson
bc995a482b
Fixed AMD64 loop branch patching for >32-bit offstes.
2008-08-27 16:52:28 -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
d7c7f1645b
Improved AMD64 out-of-range jumping, some cases are still broken though. Fixed i386 build.
2008-08-26 23:14:13 -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
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
aef458673b
Fixed codegen bug for amd64 64-bit binary ops.
2008-08-19 11:00:17 -07:00
David Anderson
b39fadd1f3
Updated nanojit for the AMD64 patch.
2008-08-18 12:32:14 -07:00
Andreas Gal
f0c74cce54
Sync with tamarin-tracing/nanojit tip.
2008-07-31 13:28:12 -07:00
Andreas Gal
591262852c
Don't allocate FpRegs if sse2 is enabled.
2008-07-17 15:00:22 -07:00
David Anderson
5dca2ad552
Synced nanojit with TT tip.
2008-07-16 14:21:31 -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
e4f8fa2f97
Sync nanojit with tamarin-tracing tip.
2008-07-07 02:47:40 -07:00
Andreas Gal
d263173a72
Avoid name clash between nanojit and jsinter.cpp (full patch queued up for tamarin).
2008-07-03 21:39:34 -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
Andreas Gal
5a17de3bca
Landed nanojit in TraceMonkey. This is untested and DEBUG must be off for now since we don't support AVM's String class.
2008-06-19 10:47:58 -07:00