Commit Graph

137 Commits

Author SHA1 Message Date
Steven Johnson
894487e422 Bug 542133 - Add a real NJConfig struct to nanojit (r=edwsmith,r=nnethercote)
--HG--
extra : convert_revision : 353c06e32329377cc9ed5f66eeb6bcaf72ff3aea
2010-02-15 17:56:41 -08:00
Steven Johnson
66b97ac0b3 remove arm_thumb and arm_thumb2 flags (r=rreitmai,r=nnethercote,bug=541491)
--HG--
extra : convert_revision : b9b31e60f28eb87842aae9325944c1d03ca1b2a7
2010-01-28 13:37:40 -08:00
Steven Johnson
cc53ad5c4e Bug 541491 - ARM_ARCH, ARM_VFP, and ARM_THUMB2 should be runtime options everywhere (r=rreitmai,nnethercote)
--HG--
extra : convert_revision : 90cd176398da34d02665e189e6311b72e8d3657d
2010-01-26 10:37:38 -08:00
Steven Johnson
9efa35156a Add NJ_USES_QUAD_CONSTANTS mode (and i386 implementation) to allow for faster float constants on CPUs without useful 64-bit immediates. Instead of allocating stack space for the constants (and filling them in via move-immediates), allocate data space for them and embed literal pointers into the code stream. (r=edwsmith, r=nnethercote, bug=533546)
--HG--
extra : convert_revision : 42048199209f5614ee62adaa25cc6bf75821911a
2010-01-05 15:28:40 -08:00
Ginn Chen
b26ece67a0 Bug 537371 [x86_64]nanojit failed to compile with Sun Studio r=gal 2010-01-06 15:25:56 +08:00
Graydon Hoare
a87bf773fa Bug 524587 - remove softfloat guards, restore CodeAlloc ref-ptr, r=gal.
--HG--
extra : rebase_source : b7bca87acdd97bf8f0598c6069f7094a16488eb8
2009-10-27 15:24:12 -07:00
Makoto Kato
e3678e082a Bug 515545 - Add EXECUTE_TREE_TIMER code for Windows x64. r=dvander 2009-10-27 18:00:15 +09:00
Graydon Hoare
c287bc3151 Bug 522314 - Make x86 virtual stack pointer code optional, g=gal.
--HG--
extra : rebase_source : c0feec3b6f94580fab0e8569a817bf36db7ed1ab
2009-10-23 13:46:09 -07:00
Robert Sayre
87a106a5ac WINCE bustage fix 2009-10-17 13:54:48 -04:00
Graydon Hoare
a32e357aaa Bug 522587 - clean up variadic macro avoidance code, r=gal. 2009-10-15 16:04:55 -07:00
Andreas Gal
a52d2bf397 Pickup indirect call and microsoft emulator bugfix from redux (522377, r=graydon). 2009-10-14 16:30:48 -07:00
Andreas Gal
342c060e74 Leave choice of runtime or compile-time customization of ARM arch to embedding (522341, r=rreitmai). 2009-10-14 15:45:45 -07:00
Graydon Hoare
12e43d492a Bug 521340 - TM merge: more build infrastructure (tracemonkey side), r=nnethercote. 2009-10-09 12:58:39 -07:00
Graydon Hoare
83d572eefa Bug 519856 - NJ merge: move VMPI stuff from avmplus, r=jimb.
--HG--
extra : rebase_source : 69e1cbe19f88dfa6ca5e54dada3d961de4cb82bb
2009-09-30 17:45:17 -07:00
Makoto Kato
2dc0ebc45c Bug 515545 - Add EXECUTE_TREE_TIMER code for Windows x64. r=dvander 2009-10-04 17:03:18 +09:00
Graydon Hoare
7ac990150d Bug 517601 - TM merge: revive lirasm, r=jorendorff. 2009-09-18 16:07:49 -07:00
Graydon Hoare
c421bb6e66 Bug 517530 - NJ merge: whitespace, equivalent code, PPC churn, r=dvander. 2009-09-18 13:31:09 -07:00
Graydon Hoare
16f6673674 Bug 517366 - NJ Merge: A Container assertion and more VMPI insulation, r=dvander. 2009-09-17 18:13:05 -07:00
Graydon Hoare
963fd74e53 Bug 516620 - Kill off residue of MMgc, r=gal.
--HG--
extra : rebase_source : 1bd814f499014507fb60ad554687b12b9fe09a3e
2009-09-10 16:29:36 -07:00
Rich Walsh
f5f2f3bc1a Bug 510657 - implement OS/2 memory functionality in nanojit/avmplus, r=gal 2009-08-24 10:21:37 +02:00
Rich Walsh
26a48fb72d Bug 510657 - simple OS/2 build fix in nanojit/avmplus, r=graydon
--HG--
extra : rebase_source : 7d4d1a75b659862460ecccdef80ce95fca119e32
2009-08-19 13:42:46 +02:00
Edwin Smith
6652a33cf1 Bug 509833 - Convert live() analyzer to Allocator, r=gal. 2009-08-04 10:18:25 -04:00
Edwin Smith
10163c0cd1 Bug 507042 - class BitSet doesn't need GC support, r=dvander.
--HG--
extra : rebase_source : ad1835e60e926a8cdb570711b9deec0e1c40ead1
2009-07-08 16:21:55 -04:00
Edwin Smith
e299aec675 Bug 507031 - Replace use of avmplus:String with Allocator and char* in nanojit::LabelMap and LirNameMap, r=dvander.
--HG--
extra : rebase_source : 3c59dc7bff1ece5ac282da9b0cb8820674345684
2009-07-15 12:34:17 -04:00
Graydon Hoare
b8154cc364 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00
Jacek Caban
5da4c824d2 Bug 505123 - js3250.dll linking fails on MinGW on fastcall inline functions, a=jacek, r=graydon. 2009-08-06 13:40:05 -07:00
Graydon Hoare
2e92fcbbe3 Backed out changeset d0be9284ea67 2009-07-30 14:28:26 -07:00
Graydon Hoare
ef5f70907e Backed out changeset fc66e3f4afc9 2009-07-30 14:27:10 -07:00
Graydon Hoare
402e209fc1 Backed out changeset 83f39b3e8b10 2009-07-30 14:23:35 -07:00
Edwin Smith
1e964d04a7 Bug 507042 - class BitSet doesn't need GC support, r=dvander. 2009-07-08 16:21:55 -04:00
Edwin Smith
4179e603b3 Bug 507031 - Replace use of avmplus:String with Allocator and char* in nanojit::LabelMap and LirNameMap, r=dvander. 2009-07-15 12:34:17 -04:00
Graydon Hoare
caf3859643 Bug 504462 - Merge tamarin's CodeAlloc into tracemonkey, r=gal. 2009-07-15 16:50:01 -07:00
Nicholas Nethercote
d2f31c8fbd Bug 504465 - NJ: Move GC classes to namespace MMgc, r=graydon. 2009-07-16 11:50:27 -07:00
Neil Rashbrook
7d7253ddaa Bug 501609 Make js/src build with VC7.1 r=graydon 2009-07-15 20:31:26 +01: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
Julian Seward
b96eed42da Bug 494864 - Make nanojit debug output easier to follow, r=graydon. 2009-06-24 20:32:00 -07:00
Andreas Gal
a0182c819c Correctly disable conditional moves on platforms that do not support them (497455, r=graydon). 2009-06-10 15:21:10 -07:00
Jacob Bramley
d7dc2e67bf Bug 487416 - TraceMonkey: Improve run-time detection of ARM processor features. r=vlad 2009-05-09 16:14:38 -04:00
Robert Sayre
150b7d8a28 Merge tracemonkey to mozilla-central. 2009-03-24 13:49:05 -04:00
Jim Blandy
9391012cb0 Bug 479258: Don't define <stdint.h> types in public headers. r=brendan
On systems that don't have <stdint.h> (i.e., Microsoft, which is
tragically underfunded and cannot spare the resources necessary to
provide and support this header: http://tinyurl.com/absoh8),
SpiderMonkey header files should not introduce definitions for these
types, as doing so may conflict with client code's attempts to provide
its own definitions for these types.

Instead, have jstypes.h define JS{Int,Uint}{8,16,32,64,Ptr} types
based on configure's results, and make jsstdint.h into an uninstalled
header for use within SpiderMonkey that does whatever is necessary to
get definitions for the <stdint.h> types.

The changes to make the appropriate SpiderMonkey .cpp files #include
"jsstdint.h" explicitly are in a separate patch, for ease of review.
2009-03-18 11:38:15 -07:00
Leon Sha<leon.sha@sun.com>
128a82a274 Bug 476042 - Integrate sparc nanojit intro tracemonkey. r=gal, r=jim. 2009-02-16 10:10:03 +08:00
Graydon Hoare
195e361c59 Bug 477425 - Back out lirbuf-based allocation of fragments and treeinfos, r=gal. 2009-02-11 21:59:57 -08:00
Graydon Hoare
d459aeaced Bug 477425 - Allocate TreeInfo and UnstableExit in LirBuffer, r=gal. 2009-02-09 16:49:25 -08:00
Graydon Hoare
170e5b5921 Bug 473688 - provide a 2-level hash map (global, pc) -> tree, r=gal. 2009-01-26 19:53:19 -08: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
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
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
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