Commit Graph

28 Commits

Author SHA1 Message Date
Jim Blandy
b3a9d80456 Bug 469225: Make js/src/configure take a --disable-arm-vfp option. r=vladimir
This controls whether NJ_ARM_VFP is #defined in the SpiderMonkey
build.  By default it is enabled.

Note that commenting out the hard-wired definition of NJ_ARM_VFP in
js/src/nanojit/NativeARM.h makes that line of the file match what's in
tamarin-redux, so hopefully there won't be conflicts with whatever
arrangement Adobe comes up with to control this.
2008-12-19 10:20:36 -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
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
4ab0561335 Bug 468484 - make asm_output[123] varadic, and add some LIR instruction comments, r=gal. 2008-10-21 14:53:14 -04: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
efb82ea705 [arm] correctly have chk version of LD underrunProtect 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
eb73398c11 [arm] Enable VFP 2008-10-22 11:02:24 -07:00
Vladimir Vukicevic
3164784c33 Make ARM nanojit compile again (doesn't run) 2008-10-20 11:18:30 -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
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
Vladimir Vukicevic
81dcc17709 Get rid of bogus nanojit arm platform stats line 2008-09-10 13:08:08 -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
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
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
420e72ed85 b=449526, TM: fix up ARM code generation / softfloat 2008-09-02 22:29:23 -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
e4f8fa2f97 Sync nanojit with tamarin-tracing tip. 2008-07-07 02:47:40 -07:00
Andreas Gal
e6b28ce4f8 Sync with TT-tip. 2008-06-30 15:33:41 -07:00
Andreas Gal
0e152648fe Added Native*.h from TT. 2008-06-18 20:57:17 -07:00