Commit Graph

327 Commits

Author SHA1 Message Date
Vladimir Vukicevic
3b44833a46 call underrunProtect more aggressively, and remove some LD32_nochks that weren't being protected 2009-03-20 15:53:38 -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
Vladimir Vukicevic
904d0dce27 Fix asm_quad to use existing load instructions; fix branch macros to use existing conditional branch macro 2009-03-20 15:53:14 -07:00
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
Ginn Chen
ea9689bd2a Bug 474757 Several build failures on Solaris build for js/src r=danderson 2009-01-23 16:09:27 +08:00
Ginn Chen
9473943bf6 Bug 474757 Several build failures on Solaris build for js/src r=danderson 2009-01-23 15:57:54 +08:00
Robert Sayre
e21c1a1d06 Merge m-c to tracemonkey.
--HG--
rename : js/src/js.cpp => js/src/shell/js.cpp
2009-01-14 18:25:22 -05:00
Andreas Gal
46c4fe89b3 Trampolines can be 2 words, so take that into account when reserving space for LIR_call instructions (473225, r=danderson). 2009-01-12 19:46:13 -08:00
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
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
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
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
Neil Rashbrook
13238265ed Bug 469289 Make nanojit build with VC7.1 r=danderson 2008-12-13 23:45:38 +00:00
Graydon Hoare
aac4a6a13a Bug 468484 - Back out further arm-wince breakage from recent merging activity. 2008-12-11 16:11:29 -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
Jeff Walden
6afac16038 Bug 465255 - Rewrite TraceRecorder::cmp, take five. (Three, sir!) Three! r=gal 2008-12-08 21:11:56 -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
Jim Blandy
a04892f62e Bug 465640: Use autoconf to declare stdint types on platforms that don't have stdint.h r=bsmedberg
At configure time, check for <stdint.h>.  If we don't have it, find
integer types of various sizes.  On Windows, where we can't run
compilation tests in configure, hard-code definitions suggesting the
use of the built-in __intN types for the exact-size types, and
<stddef.h> for the pointer-sized types.

Use namespace-clean names for the preprocessor macros we define.
Since these types are used in the public JavaScript API, the configure
script needs to place the definitions it finds in js-config.h, the
installed configure-generated header, so it can be used by jsapi.h and
that gang.

New header js/src/jsstdint.h does what it takes to get definitions for
the exact-size and pointer-size integral types.  It includes
<stdint.h> when available, uses the types found by configure.in to
define the {,u}int{8,16,32,64,ptr}_t types itself, or uses the __intN
types and the <stddef.h> header.

Remove now-unnecessary and possibly conflicting definitions of intN_t
types from js/src/nanojit/avmplus.h.
2009-01-13 10:50:24 -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
d1925631b4 Bug 468484 - trivial cleanups to simplify armjit merge (r=me), r=danderson. 2008-11-13 12:52:26 -05: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
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
Edwin Smith
795ab907f0 Bug 468484 - fix boundary bug injected by CallInfo change, r=gal. 2008-10-22 15:18:41 -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
Graydon Hoare
a6428d33c2 Bug 468484 - Re-insert asm-counting code lost in previous redux-tracemonkey merge, r=gal. 2008-12-09 11:53:26 -08:00
Jeff Walden
e48c310d01 Dangit, why do the tests run correctly locally in small batches? Backing out bug 465255... 2008-12-08 22:19:54 -08:00
Jeff Walden
f143157358 Bug 465255 - Rewrite TraceRecorder::cmp, take two. r=gal 2008-12-08 21:11:56 -08: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
Graydon Hoare
0fc5a42ca4 Bug 468484 - Change Fragmento's fragment map from a pointer to a member, r=gal. 2008-12-08 15:23:41 -08:00
Andreas Gal
e346e5cf60 Eliminate mergeCount from fragments since its unused (468391, r=danderson). 2008-12-07 19:13:50 -08:00
Robert Sayre
685eced553 Merge m-c to tracemonkey. 2008-12-06 00:54:08 -08:00
Jeff Walden
77eeb36575 Back out bug 465255, seems I was wrong about the compile error and warning being the only bugs. 2008-12-05 19:51:35 -08:00
Jeff Walden
6cb6d5d43b Bug 465255 - Rewrite TraceRecorder::cmp. r=gal 2008-12-05 16:17:59 -08: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
David Anderson
14bfd2d9ab Fixed nanojit crashing when the reservation table filled (bug 460511, r=rickr). 2008-12-04 11:41:43 -08:00
Brad Lassey
fdb2d669b4 Bug 464052 - windows compilers don't like variables named far r=crowder 2008-12-03 08:41:12 -05:00
Roy Tam
d3c6e1f3d0 Bug 453636 Make nanojit build with VC7.1 r=danderson a191=beltzner 2008-11-27 10:21:22 +00:00
Brendan Eich
37c40ca7c0 Merge. 2008-11-17 16:29:40 -08:00
Andreas Gal
cdbe1015e3 Don't attempt to do CSE across labels (465276, r=danderson). 2008-11-17 00:05:29 -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
Jesse Ruderman
e23679569a Remove '\n' from NanoAssertMsgf calls (made redundant by the patch in bug 452674) 2008-11-12 18:02:34 -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
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
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
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
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
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
a6c715fb81 Fixed memory leak in nanojit's LabelStateMap (no bug, r=gal). 2008-11-04 19:22:13 -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
David Mandelin
c92c2000cc Bug 461050 WIP: compiling simple regexps, r=danderson,agal 2008-11-04 14:51:51 -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
db369008ec Fixed memory leak in LInsHashSet (bug 462826, r=gal). 2008-11-03 19:43:47 -08:00
David Mandelin
d0a8376658 Bug 462412: API to delete a single fragment, r=danderson 2008-11-03 16:14:44 -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
David Anderson
bf1a78f4fe Implemented multiple type specialized trees per entry point (bug 450833, r=gal) 2008-10-27 20:42:49 -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
Vladimir Vukicevic
0a60bbe04b [arm] fix build after SideExit sharing patch 2008-10-22 11:11:51 -07:00
Vladimir Vukicevic
efb82ea705 [arm] correctly have chk version of LD underrunProtect 2008-10-22 11:02:24 -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
eb73398c11 [arm] Enable VFP 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
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
Edwin Smith
d238c8bb21 remove dead refs to non-existant class RegionTracker 2008-10-20 10:15:07 -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