Commit Graph

197 Commits

Author SHA1 Message Date
Vladimir Vukicevic
0034034e03 [arm] b=481761; use movw/movt when possible for loading 32-bit constants; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
b72889b918 [arm] b=481761; clean up load and store instructions; change move macro to follow covention; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
6ec71623d5 [arm] b=481761; rename MOV instructions to match ARM, not x86; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
7d6eca6372 [arm] b=481761; fix up asm_cmov; assert on non-qcmov; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
d0fa8fe9c9 [arm] b=481761; Finish up ALU op conversions; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
b992e5da9e [arm] b=481761; ARM ALU step 1; r=graydon 2009-03-20 15:53:14 -07:00
Vladimir Vukicevic
4afdab4e12 [arm] b=481761; Rename ccName -> condName, rename Scratch to IP; r=graydon 2009-03-20 15:53:14 -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
Hiroyuki Ikezoe
583692b648 b=481291, missing return statements in NativeARM.cpp, r=vlad 2009-03-04 12:32:11 -08:00
Vladimir Vukicevic
a8f8d5c9c7 b=479525; fix nanojit on Windows CE (calling conventions, disable regexp double-char optimization); r=dmandelin 2009-02-26 12:04:37 -08:00
Vladimir Vukicevic
63e0570b8d [arm] fix up ARM floating point comparisons; fixes ARM trace-test (relanding) 2009-01-23 00:53:15 -08:00
Andreas Gal
1d277bc633 Backout all patches since last mozilla-central merge (Thu Jan 22 19:14:02 2009 -500 by sayrer). 2009-01-25 02:58:22 -08:00
Vladimir Vukicevic
7679b7a4be [arm] fix up ARM floating point comparisons; fixes ARM trace-test 2009-01-23 00:53:15 -08:00
Graydon Hoare
39ed76ba7c Bug 468484 - Back out further arm-wince breakage from recent merging activity. 2008-12-11 17:09:45 -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
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
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
Brad Lassey
fdb2d669b4 Bug 464052 - windows compilers don't like variables named far r=crowder 2008-12-03 08:41:12 -05:00
Vladimir Vukicevic
1ad86545f7 [arm] b=462430, implement LIR_ldcs, re-enable regexp jit for ARM 2008-11-09 17:36:30 -08:00
Vladimir Vukicevic
55861cdf74 [arm] Fix up ARM nj backend to take into account exit block merging and other changes. Also simplify some branch code along the way. 2008-11-09 14:22:28 -08:00
Vladimir Vukicevic
26b45638d4 whitespace/tab cleanup in NativeARM.cpp 2008-11-08 22:27:24 -08:00
Graydon Hoare
95bed8b2ed Bug 461205 - make callee-save LIR_param use optional. r=gal,edwsmith 2008-10-22 14:32:37 -07:00
Vladimir Vukicevic
0a60bbe04b [arm] fix build after SideExit sharing patch 2008-10-22 11:11:51 -07:00
Vladimir Vukicevic
d2f0736eb6 [arm] misc codegen fix 2008-10-22 11:02:24 -07:00
Vladimir Vukicevic
57b6c8d721 [arm] Use real B/BX instead of BL for side exit jumps; no need to update lr 2008-10-22 11:02:24 -07:00
Vladimir Vukicevic
9ae67df93c [arm] Get rid of CALL, just use BL directly 2008-10-22 11:02:24 -07:00
Vladimir Vukicevic
844190ed5d [arm] Get correct value in return reg after fragment exit 2008-10-22 11:02:24 -07:00
Vladimir Vukicevic
89d7a76a6b [arm] Use correct register for return value; also don't bother saving full set of callee-saved registers using PUSH, they'll be saved individually 2008-10-20 17:20:05 -07:00
Vladimir Vukicevic
af0b642859 More ARM fixes; initialize free reg list correctly initially. Also use LastReg+1 instead of NJ_MAX_REGISTERS in RegAlloc -- LastReg+1 is what's used in the .h file, to avoid any mismatches. 2008-10-20 15:31:28 -07:00
Vladimir Vukicevic
3164784c33 Make ARM nanojit compile again (doesn't run) 2008-10-20 11:18:30 -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
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
f761c61b8e TM: move cmov_available setting into nj arch backends where appropriate 2008-09-30 17:15:09 -07:00
Vladimir Vukicevic
4a51b1989f [arm] Use preindexed STR instruction instead of separate STR and SUB in asm_pusharg 2008-09-05 18:24:58 -07:00
Vladimir Vukicevic
de76f2638d [arm] Have asm_quad copy direct from const to destination, if there's no register allocated for the const -- don't load into fp reg just to store it. 2008-09-05 17:24:54 -07:00
Vladimir Vukicevic
66c6f5db3a [arm] use arm_ADDi and let it take care of LD32 if necessary. 2008-09-05 17:23:36 -07:00
Vladimir Vukicevic
0b61a36a81 [arm] Don't load arg into a register in asm_pusharg if it's not in one already. 2008-09-05 17:19:31 -07:00
Vladimir Vukicevic
5c53ce04cc [arm] Don't use STMIA + ADD to move a fp call result into memory; use two STRs. Also use Scratch + tmp reg for asm_mmq, instead of just tmp. 2008-09-05 17:18:33 -07:00
Vladimir Vukicevic
7f39cd73d0 [arm] speed up store64 with constant value; also use xor for imm0 loads into a gp reg 2008-09-05 17:17:25 -07:00
Vladimir Vukicevic
02b2a31dc8 [arm] make asm_quad stick its constants into the instruction stream, with a branch over, to ensure that the data is close enough for a PC-relative FLDD 2008-09-05 17:15:23 -07:00
Vladimir Vukicevic
6ef2cd20aa [arm] Make ADDi into a function, since it's doing a lot of work 2008-09-05 17:14:05 -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
628b27d198 Indentation sanity fixes; no code changes. 2008-09-02 22:29:23 -07:00
Vladimir Vukicevic
2a520bab9f Split NativeThumb.cpp into NativeThumb.cpp and NativeARM.cpp; no code changes. 2008-09-02 22:29:23 -07:00