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