Andreas Gal
012365500f
Removed bogus assert when stringifying objects (465209, r=brendan).
2008-11-16 13:51:29 -08:00
David Anderson
db46b11fa1
Fixed recorders already deeply aborted being pushed onto the deep abort stack (bug 465145, r=gal).
2008-11-16 02:34:51 -06:00
Brendan Eich
93a63ea9b2
Avoid bogus assertbotch (more work needed to reconstruct imacro stack depth).
2008-11-15 23:56:49 -08:00
Andreas Gal
4da6188c80
Implement ordered comparison for objects (465133, r=brendan).
2008-11-15 23:19:46 -08:00
David Anderson
321ce0dc05
Deep abort recorders outer recorders if we need to flush the JIT cache early (bug 463829, r=brendan,gal).
2008-11-15 18:54:24 -06:00
Brendan Eich
d3da4b8e87
Fast followup to pick nit in last commit.
2008-11-15 12:49:00 -08:00
Brendan Eich
eb9a67cd20
Bug 465013 - TM: General Error trying to play video on CNN (r=gal).
2008-11-15 12:41:26 -08:00
Brendan Eich
bab1f697ee
Bug 464978 - TM: hang with "[] + null" (r=danderson).
2008-11-15 10:33:50 -08:00
Graydon Hoare
acc4b45377
Bug 450000 - Support script timeouts in compiled code, r=gal.
2008-11-14 16:56:00 -08:00
Jeff Walden
8e7fb5c94b
Bug 464986 - Crash trying to compile a trace generated from stdin in debug build. r=danderson
2008-11-14 14:36:32 -08:00
Andreas Gal
acebe116c1
Don't flush JIT cache from within the recorder (464403, r=brendan).
2008-11-13 15:58:58 -08:00
Brendan Eich
fab08e017c
Fast followup to fix for-each-in (imacros bug, r=me).
2008-11-13 00:43:00 -08:00
Brendan Eich
cb47c4cf08
Bug 456511 - (imacros) TM: Make conversion work on arbitrary JSObjects (r=gal).
2008-11-13 00:30:20 -08:00
David Anderson
30101c6443
Fixed recursion in thin loops accidentally trying to close the parent loop (bug 464089, r=gal).
2008-11-12 19:00:15 -08:00
Andreas Gal
074d900a57
Backed out changeset a40f2117bcc0
2008-11-12 17:39:48 -08:00
Brendan
0ca607d76b
Add imacros to support conversion of arbitrary JSObjects (456511, r=gal).
2008-11-12 16:55:45 -08:00
Andreas Gal
d3c38eade4
Backed out changeset 313d3d61333d
2008-11-12 10:12:22 -08:00
Andreas Gal
348e1dc001
Make sure to flush the JIT cache after a gc even if we didn't import globals (464418, r=brendan).
2008-11-11 23:58:36 -08:00
timeless@mozdev.org
de4863a534
Bug 464214 warnings in jstracer
...
r=gal
2008-11-11 11:21:12 +01:00
Andreas Gal
55c5823950
Backed out changeset 594ec832d9a8
2008-11-07 18:19:35 -08:00
Andreas Gal
54ba19de70
Trace Function.apply and Function.call (462482, r=brendan).
2008-11-07 15:58:52 -08:00
Andreas Gal
41cc8a6bd1
Merge.
2008-11-07 15:24:16 -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
fa14a92fe7
Fixed multitrees assert when building failed speculated branches (bug 463490, r=gal).
2008-11-07 13:22:05 -08:00
Andreas Gal
a19551a824
Fix GC hangs when OOM during recovery pool re-allocation (463190, r=brendan).
2008-11-05 19:09:12 -08:00
Brendan Eich
7f1675516e
Bug 463259 - "Assertion failure: VALUE_IS_FUNCTION(cx, fval)" (r=mrbkap).
2008-11-05 14:25:39 -08:00
Jason Orendorff
5fdc83f169
Bug 462459 - TM: Better tracer support for |new Array(...)|. r=gal.
2008-11-05 07:29:38 -06:00
Andreas Gal
0d6e29aa6c
Scale down regexp native code cache to 1MB and delete cache on shutdown (r=danderson).
2008-11-04 19:11:23 -08:00
Andreas Gal
b8168d74d9
Merge.
2008-11-04 15:08:24 -08:00
Andreas Gal
cdec6ab0a7
Interpreter directly emits the this object found in the property cache for JSOP_CALLNAME, so do the same in the tracer (462989, r=mrbkap).
2008-11-04 15:07:38 -08:00
David Mandelin
c92c2000cc
Bug 461050 WIP: compiling simple regexps, r=danderson,agal
2008-11-04 14:51:51 -08:00
Robert Sayre
03d49a666b
Merge mozilla-central to tracemonkey.
2008-11-04 02:05:05 -05: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
timeless@mozdev.org
b93635a72f
Bug 454561 TM: Crash when JavaScript-Debugger is enabled [ @ jsd_lock ]
...
js_SynthesizeFrame needs to fill in all fields of JSInlineFrame.
r=brendan
2008-10-29 11:06:01 +01:00
Jason Orendorff
2c9b2dd1b4
Fix build breakage --with-static-checking. No bug#.
2008-10-31 11:54:48 -07:00
Andreas Gal
37b4dbe474
Don't manipulate stack during cpuid detection (fix for icc, r=danderson).
2008-10-30 17:56:27 -07:00
David Anderson
00bfbb7d80
Make sure double slots are marked as undemotable when stabilizing a tree with failed speculation (bug 462407, r=gal).
2008-10-30 15:54:22 -07:00
David Anderson
48b976a104
Don't coerce void to string when compiling inner tree calls (bug 462388, r=gal).
2008-10-30 13:48:22 -07:00
Andreas Gal
047344b36b
Merge.
2008-10-30 12:32:08 -07:00
Andreas Gal
0cc2b0cfdf
Fixed assert (fallout from 462265).
2008-10-30 12:31:39 -07:00
David Anderson
1f8d249207
Fixed not tracking linked peers as dependencies (bug 462282, r=gal).
2008-10-30 11:29:25 -07:00
Boris Zbarsky
d1afdda41f
Bug 462184. Make INCLUDE_VERBOSE_OUTPUT actually work, and rename it to JS_JIT_SPEW. r=brendan
2008-10-29 21:56:35 -07:00
David Anderson
685543cd89
Mark any double slot in an unstable exit as undemotable (bug 462071, r=gal).
2008-10-29 17:57:14 -07:00
David Anderson
7247e3ffe4
Fixed trees stabilizing from the wrong peer fragment (bug 462240, r=gal).
2008-10-29 16:12:16 -07:00
Andreas Gal
868e7934a2
Emit JSOP_APPLY for .apply(...) similar to JSOP_EVAL for .eval(...) (462209, r=brendan).
2008-10-29 13:30:41 -07:00
Brendan Eich
6ddc16bbe2
Bug 462103 - TM: We don't trace some variants of string + other type (gal+brendan red-headed stepchild).
2008-10-29 00:14:30 -07:00
Andreas Gal
7b8859883f
Merge.
2008-10-28 22:41:05 -07:00
Andreas Gal
4eca106b8a
Handle dslots == NULL case when reading past the actual length of an array (461974, r=danderson).
2008-10-28 22:40:10 -07:00
Jim Blandy
f83d8c9ea3
Bug 97954: Allow SpiderMonkey to be built on its own, or as part of Mozilla.
...
Give SpiderMonkey its own configure script and top-level Makefile.
Adjust js/src/Makefile as appropriate for life as a stand-alone
makefile, instead of a 'make export; make libs'-style Mozilla tier
makefile. Have the configure script accept '--with-nspr-cflags' and
'--with-nspr-libs' options for using an in-tree NSPR. Also accept
'--with-system-nspr', '--with-nspr-prefix', and
'--with-nspr-exec-prefix' flags for using an installed NSPR. Default
to --disable-jemalloc, assuming we don't have that part of the tree
available; have the top-level configure script pass --enable-jemalloc
as needed.
Since we no longer have an export phase to copy header files into
dist/include/js before we build the library, we need to be able to
find nanojit.h in the nanojit directory; fix references in
jsbuiltins.h and jstracer.cpp.
Give SpiderMonkey it its own copies of many of the files from ./config
and ./build. These are all exact copies, except as follows:
. js/src/config/Makefile.in: js/src only has a subset of
js/src/config, and thus a subset of the makefile targets.
. js/src/config/autoconf.mk.in: js/src/configure.in has its own make
variables to set, not set by the top-level configure script, so it
needs a custom automake.mk template.
. js/src/config/make-system-wrappers.pl: a copy from nsprpub/config,
so that we can build without having an NSPR source tree handy.
Invoke js/src/configure from ./configure, passing the values computed
for NSPR_CFLAGS and NSPR_LIBS by the top-level configure script.
Treat js/src as a static directory of the js tier, and create a new
config/js (just a Makefile) to be the js tier's non-static directory.
Let js/src/configure generate SpiderMonkey's makefiles, not
./configure.
Generate a 'js-config' script, which clients can call to find the
CFLAGS and LIBS values necessary to compile and link against an
installed SpiderMonkey library. Don't include the js-config script in
Macintosh packages.
Teach client.mk how to rebuild js/src/configure.
Tell Mercurial to ignore files generated by autoconf in js/src.
Further work:
. Right now, callers must define JS_THREADSAFE when #including jsapi.h.
This is fixed in a subsequent patch.
. js/src/configure is a trimmed copy of ./configure. It could be
trimmed more.
--HG--
rename : build/autoconf/acoutput-fast.pl => js/src/build/autoconf/acoutput-fast.pl
rename : build/autoconf/altoptions.m4 => js/src/build/autoconf/altoptions.m4
rename : build/autoconf/config.guess => js/src/build/autoconf/config.guess
rename : build/autoconf/config.sub => js/src/build/autoconf/config.sub
rename : build/autoconf/glib.m4 => js/src/build/autoconf/glib.m4
rename : build/autoconf/install-sh => js/src/build/autoconf/install-sh
rename : build/autoconf/make-makefile => js/src/build/autoconf/make-makefile
rename : build/autoconf/match-dir.sh => js/src/build/autoconf/match-dir.sh
rename : build/autoconf/nspr.m4 => js/src/build/autoconf/nspr.m4
rename : build/autoconf/pkg.m4 => js/src/build/autoconf/pkg.m4
rename : build/autoconf/update-makefile.sh => js/src/build/autoconf/update-makefile.sh
rename : build/cygwin-wrapper => js/src/build/cygwin-wrapper
rename : build/hcc => js/src/build/hcc
rename : build/hcpp => js/src/build/hcpp
rename : build/unix/mddepend.pl => js/src/build/unix/mddepend.pl
rename : build/unix/uniq.pl => js/src/build/unix/uniq.pl
rename : config/Makefile.in => js/src/config/Makefile.in
rename : config/Moz/Milestone.pm => js/src/config/Moz/Milestone.pm
rename : config/autoconf.mk.in => js/src/config/autoconf.mk.in
rename : config/config.mk => js/src/config/config.mk
rename : config/elf-dynstr-gc.c => js/src/config/elf-dynstr-gc.c
rename : config/fastcwd.pl => js/src/config/fastcwd.pl
rename : config/gcc_hidden.h => js/src/config/gcc_hidden.h
rename : config/insure.mk => js/src/config/insure.mk
rename : nsprpub/config/make-system-wrappers.pl => js/src/config/make-system-wrappers.pl
rename : config/milestone.pl => js/src/config/milestone.pl
rename : config/milestone.txt => js/src/config/milestone.txt
rename : config/mkdepend/Makefile.in => js/src/config/mkdepend/Makefile.in
rename : config/mkdepend/cppsetup.c => js/src/config/mkdepend/cppsetup.c
rename : config/mkdepend/def.h => js/src/config/mkdepend/def.h
rename : config/mkdepend/ifparser.c => js/src/config/mkdepend/ifparser.c
rename : config/mkdepend/ifparser.h => js/src/config/mkdepend/ifparser.h
rename : config/mkdepend/imakemdep.h => js/src/config/mkdepend/imakemdep.h
rename : config/mkdepend/include.c => js/src/config/mkdepend/include.c
rename : config/mkdepend/main.c => js/src/config/mkdepend/main.c
rename : config/mkdepend/mkdepend.man => js/src/config/mkdepend/mkdepend.man
rename : config/mkdepend/parse.c => js/src/config/mkdepend/parse.c
rename : config/mkdepend/pr.c => js/src/config/mkdepend/pr.c
rename : config/nfspwd.pl => js/src/config/nfspwd.pl
rename : config/nsinstall.c => js/src/config/nsinstall.c
rename : config/nsinstall.py => js/src/config/nsinstall.py
rename : config/pathsub.c => js/src/config/pathsub.c
rename : config/pathsub.h => js/src/config/pathsub.h
rename : config/preprocessor.pl => js/src/config/preprocessor.pl
rename : config/revdepth-nt.pl => js/src/config/revdepth-nt.pl
rename : config/revdepth.pl => js/src/config/revdepth.pl
rename : config/rules.mk => js/src/config/rules.mk
rename : config/system-headers => js/src/config/system-headers
rename : config/version.mk => js/src/config/version.mk
rename : config/version_win.pl => js/src/config/version_win.pl
rename : configure.in => js/src/configure.in
2008-10-29 08:29:22 -07:00
Andreas Gal
7da6b31283
Handle dslots == NULL case when reading past the actual length of an array (461974, r=danderson).
2008-10-28 22:40:10 -07:00
David Anderson
55c302718d
Fixed false-positive integer demotions on non-number types (bug 461945, r=gal)
2008-10-28 16:33:01 -07:00
Andreas Gal
25404443ff
GC no longer flushes the JIT cache. Instead just make sure the shape of the global object will mismatch next time we try to record or execute code, which in turn will force a flush of the code cache (458288, r=brendan/danderson).
2008-10-28 16:22:08 -07:00
Brendan Eich
bad1b50498
Re-land patch for bug 458851 now that latent bug it uncovered (not filed; see hg log) is fixed.
2008-10-28 14:04:29 -07:00
David Anderson
06ec3d4965
Merge.
2008-10-28 14:00:27 -07:00
Brendan Eich
e95f449f88
Fix tracing apply with wrong arguments (no bug, r=gal+dvander).
2008-10-28 13:58:20 -07:00
Jason Orendorff
5258c4d288
Bug 461723 - TM: "Assertion failure: (m != JSVAL_INT) || isInt32(*vp)" with "(0 + void 0) && 0". r=gal.
2008-10-28 11:52:38 -07:00
Jason Orendorff
37724bb378
Backed out changeset d4fe79372140 (bug 458851) due to persistent orange on TraceMonkey tinderboxes.
2008-10-28 10:49:06 -07:00
Brendan Eich
51f987553a
Bug 458851 - TM: for-in loops skip every other value in certain cases (r=gal/mrbkap).
2008-10-27 22:30:52 -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
Jason Orendorff
154b1955c7
Bug 456384 - TM: v8-richards.js benchmark opens a print dialog in browser with JIT enabled. r=brendan
2008-10-27 16:15:32 -07:00
Andreas Gal
ba12fe7023
Merge.
2008-10-25 01:04:47 -07:00
Andreas Gal
df30935a17
guardDenseArray and guardDenseArrayIndex must guard on the actual outcome, since we don't always abort trace if its not a dense array (461611, r=me).
2008-10-25 01:03:38 -07:00
David Anderson
e33e23e267
Fixed false positive demotions due to missing isPromoteInt (bug 461612, r=gal).
2008-10-25 01:50:38 -05:00
Andreas Gal
06b393e8a2
Trace reading from dense arrays out of bounds and trace undefined -> number conversion in binary ops (461611, r=brendan).
2008-10-24 21:51:04 -07:00
David Anderson
6ebb53e98e
Fixed branch demotions using the branch PC rather than the root PC, causing infinite records (bug 455547, r=gal).
2008-10-24 14:01:17 -07:00
Brendan Eich
fcca844194
Bug 461248 - Remove JSOP_RESUME (r=gal/jorendorff).
2008-10-24 12:34:08 -07:00
Jason Orendorff
90796fca26
Bug 461492 - TM: INT32 can't be used as return type for traceable native that actually returns an int. r=gal.
2008-10-24 12:49:54 -05:00
David Anderson
590d3d2443
Fixed crash from JIT cache flushes when js_Interpret was holding TraceRecorders (bug 458288, r=brendan).
2008-10-24 10:47:59 -07:00
Andreas Gal
19ed8b2e9c
Only track and look up LOOP_EXIT side exits in the tree info (r=danderson).
2008-10-22 22:29:51 -07:00
Andreas Gal
5b7d8ddbe0
Backed out changeset 82f5fed6d91a (Linux GCC doesn't seem to like clobbering ebx in inline assembly).
2008-10-22 19:08:28 -07:00
Andreas Gal
04b27d4cf3
Avoid pusha/popa inside assembly (icc crashes) when checking for SSE2 using cpuid (461280, r=danderson).
2008-10-22 18:55:54 -07:00
Andreas Gal
5cc94e1d59
Re-use loop exit side exit if we already have one for that PC location and the same type map (461076, r=danderson).
2008-10-22 16:27:25 -07: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
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
Jason Orendorff
e1877796ba
Bug 460501 - Round-trip change due to "&&" constant-folding leaving extra parens. r=brendan.
2008-10-21 13:35:22 -05:00
Vladimir Vukicevic
3164784c33
Make ARM nanojit compile again (doesn't run)
2008-10-20 11:18:30 -07:00
Jason Orendorff
e0b7bce037
Bug 459266 - TM: Allow CALLINFO macros to specify linkage. r=brendan.
2008-10-16 14:24:10 -05:00
Jason Orendorff
f8a75808ed
Bug 459446 - Trace JSOP_POPV. r=brendan.
2008-10-15 15:22:05 -05:00
Andreas Gal
ea1d9c5edc
Allow a single level of self-calling until we have support for recursion (459775, r=brendan).
2008-10-13 23:20:39 -07:00
Graydon Hoare
bf84bf6273
Merge tamarin-redux (nanojit2) into tracemonkey (457786, r=edwsmith,gal,danderson).
2008-10-13 13:29:18 -07:00
David Anderson
55ee8061f8
Return innermost guard from js_ExecuteTree and not outermost (r=gal).
2008-10-13 12:44:37 -07:00
Jason Orendorff
12c5730930
TM: Remove unreachable "return false" in TraceRecorder::record_JSOP_NOT. No bug, r=gal.
2008-10-13 14:10:35 -05:00
Jason Orendorff
6b88d0da8d
Bug 459426 - Reunite record_JSOP_{NEW,CALL}. r=gal.
2008-10-13 11:04:26 -05:00
Andreas Gal
9bfc3c5072
Properly recover from a nested side exit with more than a single level of nesting (459539, r=danderson).
2008-10-12 15:39:32 -07:00
Andreas Gal
d622ee23d8
Merge.
2008-10-11 20:27:03 -07:00
Andreas Gal
798a62ad00
Stack water level is off by +1 in getTop, and JSOP_CALLPROP premature updates the tracker (459537, r=danderson).
2008-10-11 20:26:29 -07:00
Boris Zbarsky
33415ac1fb
Adding some documentation
2008-10-10 12:43:30 -04:00
Jason Orendorff
232767cb27
Bug 459294 - TM: move soft float builtins next to SoftFloatFilter. r=andreas.
2008-10-10 11:31:23 -05:00
Andreas Gal
9a086f63ae
Don't carry around oldpc in AbortRecording path (459321, r=danderson).
2008-10-09 16:17:13 -07:00
Andreas Gal
35de6c0d9d
Merge.
2008-10-08 21:02:57 -07:00
Andreas Gal
c974289da5
Support thin loops (iteration < 2) by closing the loop even if we are on the last iteration (456431, r=danderson).
2008-10-08 21:02:04 -07:00
danderson
c56579e021
Blacklist loop if its unstable and we don't recompile it (459174, r=gal).
2008-10-08 19:58:40 -07:00
Andreas Gal
afc99f7ccc
In ifop, avoid eq0(eq0(x)), instead flip guard direction and use single eq0 (459164, r=danderson).
2008-10-08 17:49:54 -07:00
Andreas Gal
471ed73a35
Evaluate cond to true if value evaluates to true in non-fused if (459159, r=danderson).
2008-10-08 17:44:04 -07:00
Andreas Gal
fb350afe17
Non-fused ifs emit different comparison code than the interpreter uses (459151, r=danderson).
2008-10-08 16:23:54 -07:00
Jason Orendorff
3204ec178a
Bug 459085 - TM: Number.toString traceable native is broken (r=gal)
2008-10-08 17:19:15 -05: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
Andreas Gal
52f71e38dc
Add missing comparison before letting the result of the conditional move flow into the guard for ordered boolean comparisons (457778, r=danderson).
2008-10-07 13:32:30 -07:00
Andreas Gal
1b0fd40e30
Trace push and pop for dense and sparse arrays (453734, r=brendan).
2008-10-07 11:00:16 -07:00
Brendan Eich
19e9638dc3
Bug 457920 - regexp-dna.js and generality want JSOP_GETELEM(dense array, "0") (r=mrbkap/gal).
2008-10-06 22:30:36 -07:00
Boris Zbarsky
cab53dbee6
Bug 456165. Trace |new Date()|. r=brendan
2008-10-06 20:28:22 -04:00
David Anderson
26d5db2cc5
Merge.
2008-10-06 16:48:14 -07:00
David Anderson
a4daa1c332
Fixed NaN handling again after backout of busted patch (bug 458472, r=gal).
2008-10-06 16:47:05 -07:00
Andreas Gal
40d1236378
Add support for writing back a boxed value when side-exiting on JSOP_RESUME (453734, r=brendan).
2008-10-06 16:22:57 -07:00
Andreas Gal
95b8fa8a84
Backed out changeset 2176f46b2702 (trying to identify cause for tinderbox burning).
2008-10-06 13:58:11 -07:00
David Anderson
c34cf06820
Fixed incorrect handling of NaN in ifop causing one new branch per iteration (bug 458472, r=gal).
2008-10-03 17:28:03 -07:00
Brendan Eich
502fb4e4c8
Bug 456831 - TM: Trace JSOP_SETLOCALPOP (r=mrbkap).
2008-10-02 15:39:25 -07:00
David Anderson
15a55dfe6d
Fixed random test failures on AMD64, booleans were being loaded as 64-bit values.
2008-10-02 16:30:58 -05:00
Andreas Gal
49de341e4a
Fixed more confusion of quads/numbers while emitting LIR (bug 458076, r=danderson).
2008-10-01 18:04:39 -05:00
Andreas Gal
8aa08cec2a
For GETELEM/SETELEM we must check that its a native object first before trying to compare the objects shape to the shape of the global object to ensure its not aliasing the global object (457979, r=shaver).
2008-09-30 20:10:46 -07:00
Vladimir Vukicevic
f761c61b8e
TM: move cmov_available setting into nj arch backends where appropriate
2008-09-30 17:15:09 -07:00
Andreas Gal
83ea7eb834
Merge.
2008-09-30 16:35:52 -07:00
David Mandelin
a9fa2e79d8
Don't trace a property access with a watchpoint (455413, r=brendan)
2008-09-30 13:34:17 -07:00
Andreas Gal
9adad6d33a
Merge.
2008-09-30 13:02:53 -07:00
Andreas Gal
9c4eefd7ec
Fix guarding in case of sparse array setelem (regression from 457580, r=danderson).
2008-09-30 13:02:23 -07:00
David Anderson
0804b51ac0
Fixed cmp number check logic for 64-bit environments (bug 457129, r=gal).
2008-09-30 11:45:00 -05:00
David Anderson
60ff7369b3
Fixed global object ownership change not aborting recording (bug 455173, r=gal).
2008-09-29 23:55:58 -05:00
David Anderson
75e7abcf38
Fixed crash when charCodeAt failed (with NaN) while recording (bug 457795, r=gal).
2008-09-29 23:20:34 -05:00
Brendan Eich
11db6aaf1d
Always use JSBool (not bool sometimes, JSBool others) as JSVAL_IS_BOOLEAN's native slot type.
2008-09-29 22:27:43 -04:00
Andreas Gal
320dd48955
Add a resume point (JSOP_RESUME) immediately following JSOP_CALL (457789, r=mrbkap).
2008-09-29 18:49:40 -07:00
Andreas Gal
36e0e1fcbf
Catch negative indexes at recording time. At runtime the builtins already check for us. Also guard for shape and setters/getters for non-dense integer index setelem case (57580, r=mrbkap).
2008-09-28 17:11:47 -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
Andreas Gal
5cc5fdedb8
Merge.
2008-09-26 19:21:27 -07:00
Andreas Gal
9960750440
Can't use JSVAL_IS_BOOLEAN on trace since boolean type contains undefined (457351, r=brendan).
2008-09-26 19:20:52 -07:00
David Anderson
ce71880114
Fixed a bug where no shape guard was emitted if a property was not found, causing it to remain unseen if added later. Abort in this case instead. (bug 457171, r=brendan)
2008-09-26 19:18:00 -07:00
Andreas Gal
884eabf3d5
Cleanup SETELEM, box early (in case we side exit on that) and don't set return value if INITELEM or followed by POP (457336, r=brendan).
2008-09-26 17:33:40 -07:00
Andreas Gal
93a292bd90
Merge.
2008-09-26 14:16:25 -07:00
igor
19701dd91b
When replenishing the recovery double pool, detect if a GC happens (follow up work for 456826, r=gal).
2008-09-26 14:16:11 -07:00
Boris Zbarsky
fe2220afb1
Bug 456165 part 2. Trace Date.now. r=gal
2008-09-26 14:37:50 -04:00
Boris Zbarsky
a4b9ae6222
Bug 456370. Flush the fragment cache earlier on global shape mismatch. r=gal
2008-09-26 14:37:49 -04:00
Andreas Gal
7bb0a663e6
Use a pre-allocated pool of doubles to make sure we can safely recover in case of OOM or out of doubles (456826, r=brendan).
2008-09-25 19:11:48 -07:00
Brendan Eich
8030ce9609
Bug 457130 - TM: regexp lastIndex property not traced correctly (r=danderson).
2008-09-25 17:45:14 -07:00
David Anderson
3808521295
Workaround for intermittent js_GetClassObject failures (bug 457069, r=brendan).
2008-09-25 17:30:01 -07:00
Brendan Eich
9807c189fe
Bug 457127 - TM: Crash on digg.com with adblock plus [@ ReconstructPCStack] (r=danderson).
2008-09-25 17:05:06 -07:00
Brendan Eich
f875d89fa2
Bug 456810 - TM: Crash on digg.com with adblock plus [@ ReconstructPCStack] (r=gal).
2008-09-25 15:04:48 -07:00
Brendan Eich
b7841b8cfd
Fixed argc < nargs miscount in js_SynthesizeFrame and adjusted a related assertion (bug 456667, r=danderson).
2008-09-25 13:12:01 -07:00
Andreas Gal
4be7fad144
Merge.
2008-09-25 11:32:00 -07:00
Andreas Gal
5b117e1c3f
Rewrite and cleanup GETELEM and SETELEM (455748, r=brendan).
2008-09-25 11:31:40 -07:00
Jason Orendorff
c35bfc3682
Bug 389034 - JS_SetProperty() ends up resolving w/o JSRESOLVE_ASSIGNING (r=brendan, sr=bzbarsky)
2008-09-25 11:13:31 -05:00
Brendan Eich
d56e0c688e
Back off premature arguments tracing (453730 temporary measure).
2008-09-25 08:51:40 -07:00
Andreas Gal
97be5eae89
Merge.
2008-09-24 23:32:19 -07:00
Andreas Gal
eb5f8be2b1
Demote modulo operations to integer if both args are int (456934, r=brendan).
2008-09-24 23:28:56 -07:00
Brendan Eich
3238fa4180
Bug 456931 - TM: GVAR op record methods use wrong object (r=gal).
2008-09-24 23:09:46 -07:00
Brendan Eich
86b3bc3671
Bug 456932 - TM: Don't assert that global object can't grow additional properties if none are used by any trace and we don't check for global shape mismatches (r=gal).
2008-09-24 23:05:44 -07:00
Andreas Gal
c3ae2f8027
Merge.
2008-09-24 19:33:04 -07:00
Andreas Gal
f1cdf0fd1c
Make sure JSOP_DEFLOCALFUN pushes the right function object (456470, r=brendan).
2008-09-24 19:31:51 -07:00
Brendan Eich
ac41d655c4
Merge pull from mozilla-central.
2008-09-24 18:46:44 -07:00
Andreas Gal
5fdc88e6b7
Only fasttrack applys where the arguments array has the same lengths as the expected arguments of the called function (456494, r=brendan).
2008-09-24 16:45:27 -07:00
Andreas Gal
e50585b158
Merge.
2008-09-24 16:32:36 -07:00
Andreas Gal
2bc1ba7a91
The meaning of T changed in our builtin table to object-only, so we have to mark the string builtins now with S, instead of T (454682, r=brendan).
2008-09-24 16:31:07 -07:00
Brendan Eich
d0645c2e47
Bug 456875 - TM: js_SynthesizeFrame must js_GetCallObject if JSFUN_HEAVYWEIGHT (r=mrbkap).
2008-09-24 15:43:19 -07:00
Brendan Eich
536e07f808
Bug 455146 - TM: Going to NEW Facebook profile page causes crash. [ @FlushNativeStackFrame] (r=danderson,mrbkap).
2008-09-24 15:40:08 -07:00
Andreas Gal
619234db4c
Back out attempt to invoke natives that return a boxed value (namely push and pop, 453734).
2008-09-24 15:18:19 -07:00
David Anderson
a53ee95a20
Fixed breaks in switch statements causing premature end-of-traces (bug 456345, r=gal,brendan).
2008-09-24 13:12:25 -07:00
David Anderson
ccd5e825b9
Fixed jstracer's operator delete leaking out into other shared libraries (bug 452721, r=gal).
2008-09-23 18:12:53 -07:00
Andreas Gal
38a8e67fa5
Merge.
2008-09-23 17:19:02 -07:00
Andreas Gal
958c18fb2a
Add builtin for invocation of match() on String objects (454682, r=danderson).
2008-09-23 17:18:40 -07:00
Doug Turner
cf6bf884ef
Bug 456458 - JS Tracer uses file-system stat structure name - WinCE compile fails. patch by dougt, r=crowder
2008-09-23 14:35:29 -07:00
David Anderson
b3141a864c
Fix where recording could crash if globalObj->dslots got reallocated (bug 451137, bug 455137, r=gal).
2008-09-23 13:29:41 -07:00
Andreas Gal
9ae4f39d64
Don't demote dmod to imod since there is no case that is guaranteed to produce valid integer results for all inputs (456540, r=danderson).
2008-09-23 12:21:15 -07:00
Brendan Eich
ef1a9b029a
JS_snprintf for portability, not snprintf (bustage fix).
2008-09-23 00:59:59 -07:00
Andreas Gal
b967b5aec8
Use JS_snprintf instead of snprintf which Windows doesn't seem to know about (fix build breakage).
2008-09-23 00:58:11 -07:00
Andreas Gal
5054e0003b
Don't emit constant guards for switch and ifop (455605, r=danderson).
2008-09-22 17:58:25 -07:00
Andreas Gal
d85fc31e85
Both sides of a modulo have to be demotable before we can optimize using imod (456477, r=danderson).
2008-09-22 17:02:33 -07:00
David Anderson
d1bc6dc0d8
Fixed jstracer.cpp no longer building in the browser because of -pedantic.
2008-09-22 11:23:22 -07:00
Boris Zbarsky
f1b69640dd
Backed out changeset c0364f5e0a84
2008-09-21 09:02:09 -04:00
Boris Zbarsky
f068ba4b22
Adding missing file
2008-09-21 08:59:52 -04:00
Brendan Eich
782b633703
Fix bug 455763 (r=me).
2008-09-21 01:38:39 -07:00
Brian Crowder
d87b65397b
Add a JIT stats object in the shell
2008-09-19 22:47:58 -04:00
Boris Zbarsky
4b972f730f
Adding test for bug 451605
2008-09-19 21:58:00 -04:00
Andreas Gal
da5081c842
Properly calculate tree exit/call guards (bug 453397, r=danderson).
2008-09-19 18:45:57 -07:00
Andreas Gal
b20918f930
Dynamic reconstruction of arbitrary native frames (454402, r=danderson).
2008-09-19 16:09:18 -07:00
Andreas Gal
16fbc92e91
Backed out changeset 5e4ec981e9ea
2008-09-19 12:07:46 -07:00
Andreas Gal
f06affb8ed
Allow tree to grow around unbox operations when the type of the value changes (452514, r=danderson).
2008-09-18 17:40:46 -07:00
Andreas Gal
9d7afa336a
Add support for fast native that return jsval and wire up push/pop (453734, r=mrbkap).
2008-09-18 16:53:09 -07:00
Andreas Gal
9908bc1345
Merge.
2008-09-18 16:08:52 -07:00
Andreas Gal
2c406fe617
Add support for JSOP_NOT on strings (451787, r=danderson).
2008-09-18 16:04:54 -07:00
David Anderson
b895f26605
Fixed trying to record arguments past the formal arg count in JSOP_ARGSUB and JSOP_CALL (bug 455757, r=gal).
2008-09-18 15:23:22 -07:00
David Anderson
40d94b8bed
Fixed -0 being treated as a promotable unsigned integer (bug 455758, r=gal).
2008-09-18 14:19:17 -07:00
Andreas Gal
708f08ca9c
Properly handle side exits in scripted constructors (originally mrbkap, r=brendan, 453462).
2008-09-18 14:13:37 -07:00
Andreas Gal
f074cc7a9f
Cleanup and unify comparison code (455811, r=danderson).
2008-09-18 13:31:26 -07:00
Andreas Gal
dab25898eb
Don't export operator new/delete except if really needed (452721, r=danderson).
2008-09-16 13:57:59 -07:00
Andreas Gal
6de13bab44
Merge.
2008-09-16 13:24:57 -07:00
Andreas Gal
8ef12c41b5
Removed bogus assert (argv is NULL if callee is NULL, assert segfaults, 452495, r=danderson).
2008-09-16 13:24:34 -07:00
David Anderson
6dcdb6aeb9
Fixed pointer arithmetic bug during trace recording on 64-bit platforms (bug 454981, r=m_kato).
2008-09-16 10:48:54 -07:00
Andreas Gal
4f38e736a7
Backed out changeset 66a76c8c7346
2008-09-16 06:51:33 -07:00
brendan
18c4ef65df
Don't forget to set RHS as result in SETPROP in case we don't call either SetPropHit or SetPropMiss (455408, r=gal).
2008-09-16 06:26:57 -07:00
Andreas Gal
61aeda1e95
Detect modulo by constant that is not zero and demote to integer modulo (451788, r=brendan).
2008-09-16 06:20:54 -07:00
Andreas Gal
70d28c8730
Backed out changeset 61b9209c186f
2008-09-15 19:59:06 -07:00
brendan
663c6aeb04
test_property_cache_direct_slot forgot to insist on a direct slot for get ops (453249, r=gal).
2008-09-15 19:40:43 -07:00
Andreas Gal
2e60c6889f
Merge.
2008-09-15 17:09:45 -07:00
Andreas Gal
13cc3eaad6
Backed out changeset 87fe68f51647
2008-09-15 17:09:25 -07:00
Andreas Gal
950247bb9d
Fix JSOP_NOT (455380, r=brendan).
2008-09-15 17:08:15 -07:00
Andreas Gal
0764f9fccb
Demote modulo operation with a constant non-zero right hand side (451788).
2008-09-15 15:59:25 -07:00
Andreas Gal
a580bcd185
Implement comparison of numbers against null (455293, r=brendan,danderson).
2008-09-15 15:30:06 -07:00
Andreas Gal
f369f7dcfb
Whitespace nit-pick (453261, r=brendan).
2008-09-15 15:26:16 -07:00
Andreas Gal
cdb4ed8fae
Merge.
2008-09-15 15:01:44 -07:00
Andreas Gal
95068bdc26
Properly handle floating point array indexes (453261, r=brendan).
2008-09-15 15:00:40 -07:00
Vladimir Vukicevic
47e9d3a21b
b=454530; misc trace abort fixes (trace String.concat); r=brendan
2008-09-15 17:30:05 -04:00
Andreas Gal
be1b44bf0e
Trace slow array get/set of indexed props (453261, r=brendan).
2008-09-15 00:54:28 -07:00
Brendan Eich
a834957775
TraceRecorder::record_SetPropMiss mis-layered on top of record_SetPropHit (454689, r=mrbkap).
2008-09-11 15:53:00 -07:00
Brendan Eich
e0626f7799
Bug 453563 - TM: assertion when running unit tests with the JIT on (r=danderson).
2008-09-11 00:07:50 -07:00
Brendan Eich
ef47fcf4f8
Bug 454744 - TM: "Assertion failure: PCVAL_IS_SPROP(entry->vword)" with getter.
2008-09-11 00:00:37 -07:00
Benjamin Smedberg
b7c5804c10
Merge backout of the old patch for bug 453388 - we can statically allocate Oracle again, now that we're linking using the C++ linker magic, r=crowder
2008-09-10 15:38:28 -04:00
Benjamin Smedberg
bfeb170706
Merge backouts of bug 453388 - using g++ to link libjs.so means we can have static classes
2008-09-10 15:27:17 -04:00
Benjamin Smedberg
52e1ae86c7
Backed out changeset fc4a8cc07c9f - bustage fix from the first patch for bug 453388 which is also being backed out
2008-09-10 15:21:30 -04:00
Benjamin Smedberg
e780e5e3ea
Backed out changeset e2614011f194 - Bug 453388 - the better solution is to allow static objects and link libjs.so with g++ so that _init and _fini run static constructors/destructors correctly backout r=crowder
2008-09-10 15:20:01 -04:00
Blake Kaplan
88856d9ef1
Merge tracemonkey -> mozilla-central
2008-09-09 23:38:21 -07:00
Brendan Eich
ce15bc7cd3
Bug 454039 - TM: don't abort TraceRecorder::record_JSOP_SETPROP on cache miss (r=mrbkap).
2008-09-09 22:22:52 -07:00
Brendan Eich
7d5c49516c
Back out patch for bug 454039.
2008-09-09 16:55:07 -07:00
Brendan Eich
c7b40d9f99
Bug 454039 - TM: don't abort TraceRecorder::record_JSOP_SETPROP on cache miss (r=mrbkap).
2008-09-09 16:05:04 -07:00
Brendan Eich
ad49bd309d
Bug 453918 - TM: eliminate silly map_is_native guards on globalObj (r=shaver).
2008-09-09 16:01:01 -07:00
Brendan Eich
94b10f6170
Avoid needless prototype-shape purges (454035, r=igor).
2008-09-09 11:24:03 -07:00
Brendan Eich
40cf4096c7
Avoid needless prototype-shape purges (454035, r=igor).
2008-09-09 09:57:10 -07:00
Andreas Gal
3c8d2430dd
Merge.
2008-09-09 17:21:32 +02:00
Andreas Gal
85b1749c8c
Capture the typemap of the outgoing stack frame during a function call and store a pointer to it on the native call stack.
2008-09-09 15:16:21 +02:00
Andreas Gal
6a76d26107
Extract the snapshot code for a single slot into determineSlotType() und use that method in snapshot().
2008-09-09 15:06:23 +02:00
Blake Kaplan
4203e79309
Trace Math.max. r=brendan
2008-09-08 20:06:58 -07:00
Brendan Eich
5b35846387
Fix bug 454266 - js_FillPropertyCache uses the wrong scope's shape sometimes (r=mrbkap).
2008-09-08 15:52:35 -07:00
Brendan Eich
cd3284e96a
Fix bug 454266 - js_FillPropertyCache uses the wrong scope's shape sometimes (r=mrbkap).
2008-09-08 15:51:47 -07:00
Andreas Gal
32f22d2e1e
Don't try to record recursion until we support it properly (454277).
2008-09-08 22:49:17 +02:00
Boris Zbarsky
c57647d6f4
Bug 451605. Make sure to properly restore the thisp for the innermost frame when taking a nested side exit with a callDepth > 0. r=brendan,gal
2008-09-08 08:55:20 -04:00
Igor Bukanov
27d83904e5
bug 453133 - merging JSOP_DEFUN and JSOP_CLOSURE. r=brendan
2008-09-08 13:58:17 +02:00
Igor Bukanov
1694ed5ded
bug 454163 - fixing build problem with 64-bit debug builds.
2008-09-08 12:37:41 +02:00
Brendan Eich
082cb07c53
Make return at callDepth 0 terminate the loop, like break (454027, r=gal).
2008-09-08 00:31:18 -07:00
Brendan Eich
e697e5113d
Bug 454044 - TM: JSOP_NOT needs isPromoteInt/::demote help.
2008-09-07 01:40:24 -07:00
David Anderson
5018287de0
Trace through parseInt(double), bug 454037 r=gal+brendan.
2008-09-07 02:41:10 -05:00
Brendan Eich
ba17412f5e
Easy fixes to avoid aborting on V8/raytrace.js: MAX_CALLDEPTH doubled to 10; JSOP_NOT handles int and undefined.
2008-09-05 18:57:32 -07:00
Brendan Eich
623433f549
Merge.
2008-09-05 18:34:16 -07:00
Brendan Eich
fc936fa1da
Checkpoint arguments tour-de-force (453730).
2008-09-05 18:29:08 -07:00
Ginn Chen
2763e5d63e
Make TraceMonkey build on Solaris x86 with Sun Studio 12 (bug 452588, r=danderson).
2008-09-05 16:56:03 -07:00
David Anderson
9937dc1262
Trace through Math.log as a known native (bug 453868, r=brendan).
2008-09-05 14:25:01 -07:00
David Anderson
ba87213e86
Abort tracing if a callee encounters a primitive |this| and doesn't support it (bug 453701, r=brendan).
2008-09-05 13:55:03 -07:00
Blake Kaplan
b4d3674f58
Bug 453747 - Replace any holes on the stack with undefined. r=gal
2008-09-04 22:14:27 -07:00
Brendan Eich
ce684a0a6e
Bug 453747 - Avoid overuse of the fun_getProperty class getter to optimize getting and setting random properties on functions. r=mrbkap
2008-09-04 21:56:37 -07:00
David Anderson
3e31bc7fb2
Another fix for the patch to bug 452884 -- when ignoring switch guards, don't update the tracker stack.
2008-09-04 20:11:58 -07:00
David Anderson
8c610797f3
Merge.
2008-09-04 19:43:58 -07:00
David Anderson
05991c905d
Better fix for bug 452884 (changeset badf4c84665f regressed) - don't emit guards rather than bailing out of comparisons (r=gal).
2008-09-04 19:43:07 -07:00
Brendan Eich
ae2a22c019
Bug 453747 - Avoid overuse of the fun_getProperty class getter to optimize getting and setting random properties on functions. r=mrbkap
2008-09-04 19:30:58 -07:00
Brendan Eich
b35babfe1d
House style bracing for multiline then clause.
2008-09-04 18:53:31 -07:00
David Anderson
09123ebd63
Don't guard on constant decisions, which will always have the same path (bug 452884, r=gal).
2008-09-04 14:44:59 -07:00
David Anderson
ede63892f9
Disabled building AMD64 JIT in shell until regressions are tracked down. Fixed some compiling errors while I'm poking around here (bug 453674).
2008-09-04 10:58:35 -07:00
David Anderson
afe91e2757
Merge.
2008-09-03 23:28:27 -07:00
David Anderson
b791826dc5
Fixed JSOP_NEG with 0 being tracked as a promotable int, and added an equals-zero guard for the same opcode (bug 453049, r=gal).
2008-09-03 23:27:58 -07:00
Brendan Eich
9657023ef6
Missing guard for CallGetter builtin (453580, r=gal).
2008-09-03 22:32:13 -07:00
Blake Kaplan
d9be63b689
Handle an interpreted constructor returning an object. r=brendan
2008-09-03 18:21:15 -07:00
Andreas Gal
1d44de3cb6
Merge.
2008-09-03 01:22:07 -07:00
Andreas Gal
483b7fd5a1
Removed a bogus assert. Inner loops can exit on a goto in case we hit a break (453051).
2008-09-03 01:21:21 -07:00
Brendan Eich
4fa7c5195d
Put the trace-recording/executing flag in the trace monitor to handle many contexts per thread (451666, r=gal).
2008-09-03 00:38:24 -07:00
Andreas Gal
c466258c18
Limit tree growth to 16 traces per tree to avoid code explosion due to tail duplication (452869, r=danderson).
2008-09-02 23:52:11 -07:00
Brendan Eich
3cd36a3b5f
Fix JS_THREADSAFE build, pick extern nit.
2008-09-02 23:00:23 -07:00
Vladimir Vukicevic
dfd7f72c0a
Fix up some ifdefs and debug printfs
2008-09-02 22:42:25 -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
420e72ed85
b=449526, TM: fix up ARM code generation / softfloat
2008-09-02 22:29:23 -07:00
Brendan Eich
e3916b316d
Teach js_IsLoopExit about JSOP_AND, JSOP_OR, etc. and separate extended jump cases so they can get the extended offsets.
2008-09-02 22:29:06 -07:00
Blake Kaplan
3d517dff43
Remove outdated comment. r=gal
2008-09-02 22:18:57 -07:00
Andreas Gal
f91071f139
Allocate the oracle dynamically instead of making it a global object to avoid atexit C compatibility issues (453388, r=danderson).
2008-09-02 21:56:22 -07:00
Blake Kaplan
8f80eec070
Don't flush anything if we're not even enabled. r=gal
2008-09-02 14:02:13 -07:00
Ginn Chen
76f8dc0daf
On x86 compilers without fastcall, simulate it when invoking traces and un-simulate it when invoking builtins (bug 452390, r=dvander).
2008-09-02 11:43:55 -07:00
Andreas Gal
1632042ed8
Merge.
2008-09-01 18:37:27 -07:00
Andreas Gal
4a36a6b709
Backed out changeset 25f856429db3. Wrong fix. Looks like jstracer.h is not included. We in fact can call methods of TraceRecorder directly. Sigh. I wish we had a try server.
2008-09-01 18:37:04 -07:00
Andreas Gal
d85543063d
Merge.
2008-09-01 18:33:05 -07:00
Andreas Gal
fe70cfea9b
Introduce js_DeepAbort to be used from jsinterp.cpp, instead of trying to call TraceRecorder->deepAbort directly (453235).
2008-09-01 18:32:41 -07:00
Brendan Eich
b3042b928d
Holey single-element dense array has null dslots, requires nulld defense (453173).
2008-09-01 13:59:30 -07:00
Brendan Eich
cda5a77a1b
Fast followup fix for unintended change to 'f' prefix handling in TraceRecorder::record_JSOP_NEW (452878).
2008-09-01 01:44:26 -07:00
Brendan Eich
5a8cb06838
Kind of an Array initialiser tour-de-force for bug 452878:
...
1. Split FastNewArray from FastNewObject built-in for greater speed/specialization and further splitting into Array_1str, etc.
2. Add Array_1str, Array_2obj, and Array_3num builtins for benchmarked new Array(...) constructions.
3. Export ARRAY_SET_DENSE_LENGTH and ARRAY_GROWBY via jsarray.h to jstracer.cpp.
4. Tweaked SetArrayElement to make common/best case code be the predicted/prefetched path.
5. js_MakeArraySlow now preserves the pre-slow length in JSSLOT_ARRAY_COUTN as a jsval-tagged int if possible -- this will help the tracer avoid aborting on dense arrays that turned slow but not sparse by addition of a named property.
6. Export js_fun_apply and js_Object from their respective .cpp files, in these cases just to jstracer.cpp via local prototypes (no .h files involved).
7. More INS_CONSTPTR and INS_CONST macrology for better names in trace debug spew.
8. Fix TraceRecorder::test_property_cache to avoid aborting on JSOP_SETNAME that creates a new global, by setting it to undefined so it can be lazily imported. This helps 3d-raytrace.js, which has an unintended global loop control variable in a function.
9. JSTraceableNative loses its premature-deadwood tclasp member (my bad).
10. TraceRecorder::record_JSOP_NEW() handles 'new Object' now along with the 'new Array' variations. I also cut down the copy-paste code from JSOP_CALL's record method to mostly what is needed now.
11. Add KNOWN_NATIVE_DECL macro for concise prototype of library-private js_* native functions, and alphabetized the lists (too long for any other order to be winning).
12. Big honking special case for foo.apply(obj, [str]), which we can generalize as needed. Helps string-tagcloud.js. What's cool is how tracing allows us to rewrite this to foo(str) with this set to obj, eliminating the Function.prototype.apply. This requires some rewriting in JSOP_ENDINIT's record method.
2008-09-01 01:24:58 -07:00
Jesse Ruderman
1b5148d940
Bug 452905 - Make js_RecordTree printfs only appear with TRACEMONKEY=verbose. r=gal
2008-08-30 02:21:00 -07:00
Brendan Eich
c7604aac4c
- Support JSOP_CONDSWITCH's JSOP_CASE and extended-jump-offset JSOP_CASEX variants properly.
...
- Fix sleep-deprived constant conditions due to failure to test flags & CMP_TRY_BRANCH_AFTER_COND!
- Use new TraceRecorder::fuseIf that Andreas added in a few more places where the previous try-branch-after-cond logic was open-coded.
2008-08-30 00:01:59 -07:00
Blake Kaplan
2782b3de85
Fix gmail crash by not tracing switches. r=brendan
2008-08-29 19:01:00 -07:00
Blake Kaplan
219161a0aa
Abort (deeply) if we re-enter js_Interpret in the middle of a trace. r=brendan
2008-08-29 18:59:21 -07:00
Andreas Gal
ea15fc19ef
Fixed an signed/unsigned comparison warning in an assert in jstracer.cpp.
2008-08-29 17:54:39 -07:00
Andreas Gal
33c4a8e742
Merge.
2008-08-29 17:35:34 -07:00
Andreas Gal
113ad8babe
Add builtins for toLowerCase, toUpperCase and replace(str,str) (452885, r=mrbkap).
2008-08-29 17:35:00 -07:00
Brendan Eich
45ea54d2d1
Don't let GC run when recording.
2008-08-29 16:04:54 -07:00
Blake Kaplan
48fb3e7f94
Bug 452875 - Ensure we intern the id for JSOP_IN. r=brendan
2008-08-29 15:59:09 -07:00
David Anderson
7515a0583e
Merge.
2008-08-29 15:38:05 -07:00
David Anderson
f720beb914
Fixed double-as-integer check not handling negative zero (bug 452170, r=gal).
2008-08-29 15:37:37 -07:00
Andreas Gal
f29178e950
Track number of breaks we generate loop exits for.
2008-08-29 15:29:55 -07:00
Andreas Gal
1e41ca88af
Long-form conditional branches (IFEQX, IFNEX) are never fused, so don't check for them in fuseIf.
2008-08-29 15:20:36 -07:00
Andreas Gal
57a8fae3d1
Merge.
2008-08-29 15:17:20 -07:00
Andreas Gal
9e7246a2b9
Track locations of control-flow merges in cfgMerges during recording (452869).
2008-08-29 15:12:17 -07:00
David Anderson
a2fdc866ff
Fixed assumptions that nanojit's insCall() would not clobber the input argument array (bug 452853, r=gal).
2008-08-29 14:22:21 -07:00
David Anderson
f10bd19c8e
Abort recording on invalid string indexes for JSOP_GETELEM (bug 452713, r=brendan).
2008-08-29 13:05:41 -07:00
Brendan Eich
f92de94117
Fix bogus JOF_VARPROP test; fix uninitialized id in JSOP_IN recorder, should have caught it when I reviewed danderson's patch.
2008-08-29 00:58:10 -07:00
Brendan Eich
655888f31e
Consolidate equal and cmp code harder, trace switch ops, use INS_CONST more (bug to be filed -- bugzilla down atm).
2008-08-28 23:50:48 -07:00
Andreas Gal
1115d0162b
Unroll loops we were not able to call once, but only if we don't have a tree available for that loop header.
2008-08-28 23:19:23 -07:00
Andreas Gal
535bdef3ee
Merge.
2008-08-28 22:34:14 -07:00
Andreas Gal
c263b7a218
Merge.
2008-08-28 22:33:45 -07:00
David Anderson
951c95658a
Fixed trying to record JSOP_IN with some unusuable left-hand values (bug 452724, r=brendan).
2008-08-28 22:33:32 -07:00
Andreas Gal
4fb4d1fdc5
Monitor downward branches only during recording (452709).
2008-08-28 22:33:22 -07:00
Brendan Eich
1f07d79c75
Abort trace if forInLoop values are not stable; currently, not strings (bug 452703).
2008-08-28 21:41:15 -07:00
Brendan Eich
25a591f870
Fixed bogus assertion in test_property_cache (bug 452693, r=dvander).
2008-08-28 21:15:39 -07:00
Andreas Gal
f10a08c384
Cleanup detection of gotos that were emitted as a result of a BREAK statement.
2008-08-28 17:46:25 -07:00
Andreas Gal
65bc53f864
Merge.
2008-08-28 17:01:22 -07:00
Andreas Gal
c0e0852952
Notify the monitor of all branches, not just backwards branches.
2008-08-28 17:00:52 -07:00
Blake Kaplan
977123733e
Bug 452338 - Abort on the weird case where we find a global name on the prototype of the scope chain. r=brendan
2008-08-28 16:37:03 -07:00
Andreas Gal
c274daed5c
Merge.
2008-08-28 14:51:16 -07:00
David Anderson
1b50da7117
Abort recording on JSOP_INCPROP with an invalid slot (bug 452336, r=brendan).
2008-08-28 14:43:44 -07:00
Andreas Gal
453ea3339f
If the inner tree cannot be adjusted to match the call site of the outer tree because it uses an int where the outer tree uses a double, trash the inner tree, not the outer one. In CallTree, return the innermost guard we return from, not the outermost one. Jump over at most 1 loop edge that doesn't go back to our own header, not an arbitrary amount.
2008-08-28 14:24:58 -07:00
David Anderson
48fe80af99
Merge.
2008-08-28 13:15:34 -07:00
David Anderson
eb051d8c73
Better fix for bug 451666 - only track new rval for primitives (r=brendan).
2008-08-28 13:14:59 -07:00
Blake Kaplan
1006bbf99c
Bug 452333 - Don't push tagged jsvals on the stack. r=brendan
2008-08-28 12:40:48 -07:00
David Anderson
d7c4af1e0c
Merge.
2008-08-28 11:56:45 -07:00
David Anderson
d7b5791be9
Track new rval from JSOP_RETURN when constructing inline frames (same as JSOP_STOP).
2008-08-28 11:55:58 -07:00
Blake Kaplan
2bcc0a39b5
Bug 452573 - The interpreter's JSOP_VOID doesn't push anything, so we shouldn't expect it to. r=brendan
2008-08-28 11:55:27 -07:00
Peter Weilbacher
046dd17991
[OS/2] Bug 452630: Build break in jstracer.cpp (r=gal)
2008-08-28 18:28:52 +03:00
Jesse Ruderman
df0d2c793b
Remove extra space in tracing statistics message (bug 452571). r=gal
2008-08-28 00:16:50 -07:00
Brendan Eich
5d132dba83
Record JSOP_IN (452563, r=gal).
2008-08-27 23:00:43 -07:00
Andreas Gal
2316d281a0
Keep unrolling inner loops as long we are not hitting the same inner loop edge twice in a row (452362).
2008-08-27 17:48:15 -07:00
Andreas Gal
4b9cda096c
Merge.
2008-08-27 17:26:36 -07:00
Andreas Gal
cff18f06cd
Fix trashing of inner trees. Keep track of trees that call to a tree and flush them as well since they directly embed the code address. Since flushing an inner tree might invalidate the tree we are currently compiling, trees are now trashed in the destructor of TraceRecorder.
2008-08-27 17:25:56 -07:00
David Anderson
ccc26331ca
Removed INS_CONSTPTR use with JSVAL_TAG to discourage future 64-bit problems. Fixed 32-bit build.
2008-08-27 16:32:11 -07:00
David Anderson
98306ccb74
Merge.
2008-08-27 16:09:17 -07:00
David Anderson
d0d64bbeff
Added LIR_qior/pior. Fixed more AMD64 page jumping bugs. Fixed some other AMD64 usage bugs in jstracer.
2008-08-27 16:08:59 -07:00
Andreas Gal
e8fcb3bd37
Merge.
2008-08-27 14:48:59 -07:00
Andreas Gal
3fb237f38c
Loops with a single iteration start tracing, but never complete since we immediately walk past the loop edge after the first iteration. At least try to complete the loop around it by walking past such thin inner loops when compiling the outer loop (452362).
2008-08-27 14:46:57 -07:00
Brendan Eich
4842b435c5
Oops, not enough copying...
2008-08-27 13:54:05 -07:00
Brendan Eich
510ec8bdce
Fix a bug Jesse reported: insufficient copy/paste from record_JSOP_CALL to record_JSOP_NEW.
2008-08-27 13:52:46 -07:00
Brendan Eich
9cb246a8fc
Fix another broken assert (452372).
2008-08-27 01:10:44 -07:00
Andreas Gal
7df899a9f5
Merge.
2008-08-26 21:46:21 -07:00
Andreas Gal
418b15eadd
Flag a side exit as loop exit only if the underlying loop condition actually targets the current loop header, otherwise treat it as a branch exit. This is required for inner loops where we unroll the first iteration but the loop condition immediately fails. If we report such exits as loop exits, no branch gets ever attached to them and we keep side-exiting over and over.
2008-08-26 21:43:59 -07:00
Brendan Eich
ae9605be38
Correct (but sadly a bit slower) property cache guarding (452140, r=shaver).
2008-08-26 21:26:10 -07:00
Brendan Eich
e326b78b55
Added knownNative for num_toString (bug 452340, r=dvander).
2008-08-26 20:00:11 -07:00
Andreas Gal
40796f4154
For global code assume that no slots are below the current frame.
2008-08-26 13:25:40 -07:00
Andreas Gal
795f7ae426
Merge.
2008-08-26 01:01:24 -07:00
Andreas Gal
eb0c261390
When extending an outer tree from its nesting guard, the guard we actually exited on determines the typemap for the current frame and all inlined frames, whereas the nesting guard is consulted for all type information frames below the current frame.
2008-08-26 01:00:53 -07:00
Brendan Eich
a7cdb3ddb2
Fix warning.
2008-08-25 23:22:20 -07:00
Andreas Gal
4bb68b852c
Rename lr->anchor in AttemptToExtendTree()
2008-08-25 23:19:00 -07:00
Andreas Gal
24b663fd61
Determine the tree we have to grow from the side exit we attach to in AttemptToExtendTree() instead of passing the parameter in.
2008-08-25 23:17:38 -07:00
Brendan Eich
43b25b3c09
Rename gcDontBlock to runningJittedCode, and assert it's false on entry to js_Interpret (for 451657, but not the fix, just prolog).
2008-08-25 23:08:21 -07:00
Andreas Gal
e86ad8730d
Merge.
2008-08-25 22:11:23 -07:00
Andreas Gal
d00742c962
Add an assert checking that celldepth is zero upon loop exit side exits and better verbose diagnostic for trace exits.
2008-08-25 22:11:04 -07:00
Andreas Gal
c86c7d09fb
Generate an always taken LOOP_EXIT guard when an inner loop encounters a break statement. When returning from such an inner tree, make sure the recorder resumes at the target address of the goto the break was emitted as, otherwise the outer tree confuses the location with a break in its own loop. Disabled outerlining (this patch subsumes it, but we might enable it later since it might handle some cases more efficiently, currently off for debugging through). fasta currently asserts, and fannkuch hits a perf regression. These are probably bugs this change exposed.
2008-08-25 17:24:49 -07:00
Blake Kaplan
48d275806e
Bug 451785 - Trace == and != involving booleans. r=gal
2008-08-25 16:58:18 -07:00
Blake Kaplan
298caaa80f
Bug 451782 - Trace Math.ceil. r=brendan
2008-08-25 16:54:02 -07:00
David Anderson
e4ef2c3451
Merge.
2008-08-25 16:06:17 -07:00
Brendan Eich
b385e456d9
Fixed cases where argc varied between recording time and execution time (bug 451727).
2008-08-25 16:04:10 -07:00
Andreas Gal
fc5667ef13
Split closeLoop() and compile() and add endLoop(), which omits an always-exit guard (will be used for break statements.)
2008-08-25 15:17:46 -07:00
Brendan Eich
eb8bbd11d2
Cope with sub-optimal JSOP_FORNAME instead of JSOP_FORVAR inside a with, or similar (eval-created locals; 451806).
2008-08-24 08:18:17 -07:00
Andreas Gal
e944751f2e
Merge.
2008-08-23 15:13:55 -07:00
Andreas Gal
71b12b53fe
Enable outlining. If a loop doesn't connect back to its own header (i.e. break inside the loop), see if the outer loop path can be attached to the inner loop (outerlining). Added test case (failure mode is high number of activated traces in trace-test.js). This test exposes a regression in access-fannkuch. Committing so we can diagnose that separately.
2008-08-23 15:11:38 -07:00
David Anderson
04ab3326c8
Merge.
2008-08-22 17:36:37 -07:00
David Anderson
e88386ec38
Fixed bogus assertion in debug mode.
2008-08-22 17:32:45 -07:00
Andreas Gal
f5462e1c0a
Merge.
2008-08-22 17:32:01 -07:00
Andreas Gal
454b252c63
If the outer loop has a value in a float register but the inner tree expects an int, tell the oracle that we want doubles in that slot in the inner tree and trash the inner tree so it gets re-compiled with a matching layout (451673).
2008-08-22 17:31:23 -07:00
Andreas Gal
2fb04231fe
Allocate nanojit code cache incrementally (bug 443111).
2008-08-22 16:37:37 -07:00
David Anderson
36ea645fbe
Bug 451743 - On x86 processors, only use SSE2 if the processor supports it, otherwise default back to x87 FPU (r=gal, sr=mrbkap)
2008-08-22 12:21:27 -07:00
Andreas Gal
80088cd777
Fix warning about signed/unsigned comparison.
2008-08-21 11:40:56 -07:00
Andreas Gal
ee5f8e441f
Merge.
2008-08-21 05:21:37 -07:00
Andreas Gal
8f6bbaaa5f
Abort recording when an error occurs.
2008-08-21 05:21:01 -07:00
Brendan Eich
fd148818e1
Add split built-in, also sort knownNatives for my own sanity (should sort builtins.tbl and jsbuiltins.cpp by function while at it, but too tired).
2008-08-21 04:13:07 -07:00
Brendan Eich
147018b013
Merge, plus restore TraceRecorder::activeCallOrGlobalSlot.
2008-08-21 03:51:37 -07:00
Brendan Eich
9cd8e5a539
Upvar, v0.1 (limited to looking up from eval in a function, to the function's args and vars).
2008-08-21 03:47:33 -07:00
shaver@mozilla.org
35915d94ea
disable tracing with active call object pending perf fix
2008-08-21 03:19:17 -07:00
Andreas Gal
d9acfb10f0
Remove FastEval, broken by design (r=brendan).
2008-08-21 03:13:31 -07:00
Brendan Eich
324b9c7f4e
Remove lambda-replace built-in, it's not safe to record into a nested js_Interpret.
2008-08-21 01:39:16 -07:00
Andreas Gal
2e767b124c
Convert undefined to NULL on tree entry if the tree wants an object type.
2008-08-21 01:13:07 -07:00
shaver@mozilla.org
ed7fab1440
trace |new Array|, via the magic of copy and paste
2008-08-21 00:50:20 -07:00
Brendan Eich
321ae383ba
Merge.
2008-08-21 00:47:51 -07:00
Andreas Gal
fcd8670fec
If we expect a concrete value but see an undefined come into the trace, convert undefined to the concerete value.
2008-08-21 00:43:45 -07:00
Brendan Eich
9b56ca4984
Tidy up globalShape mismatch reporting.
2008-08-21 00:19:04 -07:00
Andreas Gal
e26e3234f4
Merge.
2008-08-20 23:40:24 -07:00
Andreas Gal
12fcdd141f
Remove bogus fadd +1 check at the end of the loop. We have long switched over to starting slots as int and hence n++ will be emitted as integer add with i2f, so checking for i2f only is sufficient.
2008-08-20 23:39:57 -07:00
Andreas Gal
ddf445130e
Increase HOTEXIT to 1 (from 0).
2008-08-20 23:35:00 -07:00
Andreas Gal
1261e82b42
Eliminate redundant BoxDouble(UnboxDouble) chains.
2008-08-20 23:19:48 -07:00
shaver@mozilla.org
6870d297ef
say what we're returning from from EnterFrame
2008-08-20 23:12:28 -07:00
Brendan Eich
9e4119701e
Merge.
2008-08-20 22:44:16 -07:00
Brendan Eich
e9b635b38a
1. Add activeCallOrGlobalSlot, used by JSOP_NAME, JSOP_CALLNAME, etc. recorders to cope with Call objects on the scope chain, if they represent still-active frames covered by callDepth.
...
2. Add builtin for eval, to be optimized further, to handle very short eval'ed programs as found in popular benchmarks.
3. Add common scopeChain TraceRecorder helper, to generate the LIR to load cx->fp->scopeChain.
4. Add ABORT_TRACE to LeaveFrame for clarity.
2008-08-20 22:40:39 -07:00
Andreas Gal
8468ac7444
Support multiple returns from called trees by continueing the outer tree with a new nested guard.
2008-08-20 22:37:00 -07:00
Andreas Gal
36ddb45efb
Restore state.sp and state.rp before the nested guard exit point so we can have a sequence of them and still have rp/sp adjusted correctly.
2008-08-20 22:23:17 -07:00
Andreas Gal
e9f3ccf839
Push actual guard that failed in a nested call, not the expected.
2008-08-20 20:12:19 -07:00
Andreas Gal
87295d3d95
Merge.
2008-08-20 19:25:26 -07:00
Andreas Gal
1b99fe0e1e
Don't emit a guard at the end of CALLNAME and friends since the values CALLNAME puts on the stack (callee, this) are not seen by the interpreter yet, and thus get store killed. Instead, emit the guard in CALL, at which point the values are properly stacked.
2008-08-20 19:24:57 -07:00
shaver@mozilla.org
9817a0cd97
fix js_IsLoopExit to better handle for-in exits, r=mrbkap
2008-08-20 18:50:49 -07:00
Andreas Gal
49f0b4f6cb
Add a switch to disable the oracle, in which case we never demote any slots.
2008-08-20 16:10:56 -07:00
Andreas Gal
fdb661bd5e
Clear the oracle on every GC.
2008-08-20 16:01:56 -07:00
Andreas Gal
3e55729492
If at loop entry we expect a double, but at the loop tail we store an int because we suck the i2f into the side exit, we have to explicitly cast back up to double using i2f otherwise we won't be able to make sense of the value when we load it at the top of the next iteration.
2008-08-20 15:43:26 -07:00
Andreas Gal
98f67af6d0
Add a way to clear the oracle.
2008-08-20 15:18:43 -07:00
Andreas Gal
ccfca5d79f
Clear global slots and global type map when clearing the code cache.
2008-08-20 15:03:51 -07:00
Andreas Gal
f3972bfb84
Backed out changeset be63a51a0a3b. Breaks tofte if run from ./time.sh.
2008-08-20 14:57:49 -07:00
Brendan Eich
6bc330ef33
Don't disable property caching in eval (this requires GC'ing eval scripts). Do tolerate active Call object at head of scope chain in record_JSOP_CALLNAME, and go straight to the stack slots.
2008-08-20 14:04:37 -07:00
Andreas Gal
8df2fc18c8
When adjusting integers to doubles in tree calls start with the current stack frame only.
2008-08-20 12:47:39 -07:00
David Anderson
d6aef7cf26
Fixed some valgrind whinings (not actual bug fixes).
2008-08-20 12:17:31 -07:00
David Anderson
54cfb5e424
Fixed typo that broke the tree. Sorry!
2008-08-20 10:38:50 -07:00
shaver@mozilla.org
d1f7543e1b
default to non-verbose for DEBUG, set TRACEMONKEY=verbose in env to go verbose
2008-08-20 10:15:42 -07:00
David Anderson
738ce385fa
Merge.
2008-08-20 09:50:41 -07:00
Brendan Eich
deca6a9d50
Add str + obj concatenation for 3d-raytrace.js.
2008-08-20 02:35:17 -07:00
Andreas Gal
3a4d105a0f
If the outer tree has a slot in an integer register, but the inner tree expects a double, make sure to promote the value before calling the tree, otherwise the inner tree will read the value from the stack incorrectly.
2008-08-20 00:51:56 -07:00
Andreas Gal
fb3cf056d9
Correctly calculate tree call stack adjustment, even if we don't have any arguments in the current frame and hand pick some cleanups from the backed-out changeset.
2008-08-19 23:31:33 -07:00
Andreas Gal
39d9d53d83
Back out multi-trees. There is absolutely no way this will be debugged in time for tomorrow. Need a bit more gdb man-power.
2008-08-19 23:28:13 -07:00
Andreas Gal
55c1e3d15d
Always blacklist the first fragment in the peer list, and blacklist if we see a loop that is not type-stable.
2008-08-19 23:10:28 -07:00
Andreas Gal
25bf562fe6
Don't build trees inside tree calls if no suitable tree can be found (for now.)
2008-08-19 23:00:19 -07:00
Andreas Gal
4ee5ead209
Improved debug output.
2008-08-19 22:59:08 -07:00
David Anderson
69c4638355
Merge.
2008-08-19 22:33:43 -07:00
Andreas Gal
8569359e49
Add debugging facilities for typemaps and fix sp_adj calculation for tree calls.
2008-08-19 22:29:02 -07:00
David Anderson
9fa5be54af
Merge.
2008-08-19 21:32:22 -07:00
Andreas Gal
454c89d72b
Support multiple fragments with different entry maps per PC location.
2008-08-19 20:30:16 -07:00
David Anderson
9a5b3b4307
AMD64 trace-tests.js passes now (hacked in LIR_qcmov opcode, corrected builtin return types).
2008-08-19 17:19:19 -07:00
Andreas Gal
b3efe4fbeb
Clear out the list of global slots when the shape changes.
2008-08-19 13:34:20 -07:00