js/src/jstracer.cpp
7f3e0b5b05dd1e749b772a6ca4357262b48b46eb
created 2008-07-06 20:27 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Make sure we don't get the argument order in BoxDouble wrong again.
c3568285ff19a11ee557006da9b8e70553e69267
created 2008-07-06 20:25 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Make typemap uint8_t and fix order of arguments in call to BoxDouble.
ce35d7c30a31f407fc779c1c40cc779c6b7e1b90
created 2008-07-06 23:11 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - remove outdated guard (now inferred via filter as needed)
513b636c199b467c3164ea1fbb319d0e6e84ad95
created 2008-07-06 23:01 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - we only speak double around here now
37dd888fcb4252ce63619cba74722c6640fe0154
created 2008-07-06 22:39 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - remove bogus NOT_REACHED
fdab515b3c8acd9f82177744961a47262e627aa9
created 2008-07-06 17:43 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Strength reduce i2f(doubleToInt32(x)) and u2f(doubleToUint32(x)) to x. This eliminate most of the on-trace overhead, but we still need type peeling of loop variable into int to win back the performance loss casting introduced.
f6179396df600b85b1b6cda53ee18db24fa06576
created 2008-07-06 17:32 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Reduce redundant doubleToInt32(i2f(x)) chains to simply x.
0b810d0bf2e7572dbc69b66fce1c3a8b323560bf
created 2008-07-06 16:38 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Strength reduce BoxDouble(i2f(x)) to BoxInt32(x). Make sure loop indexes are actually integers. This guard will be eliminated further down in the pipeline if we decided to peel the type of the loop variable (index) down to integer.
5ebea36d79ade1ab78789c7d79a0bbb3fbfeb1cf
created 2008-07-06 16:18 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Since numbers are now always represented by doubles at the recorder/type level, using BoxDouble and UnboxDouble only when moving numbers from or to memory. A filter will then turn f2i(UnboxDouble) into UnboxInt where appropriate.
8374e34d597e56684f05628edb4f5c0bf8752e44
created 2008-07-06 15:55 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Move the type level from int/double to number. All traces start out as double in all slots, and denote and promote to/from int as needed. The FuncFilter optimizes on-trace casting and elininates redundant f->i-> chains. More optimization needed on this of course, and this code is now a bit slower than the previous integer-register use. However, this does solve the q += 2.5 issues. The heap access code does not properly cast yet and is likely unstable.
360a6ce57d28f76b5f739770c81c1d0ff57926ce
created 2008-07-06 16:59 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Trace GETGVAR and INCGVAR, though not yet correctly.
d84c7e0344ed2c6bd7c28ba6a3eb286558c490e4
created 2008-07-06 13:16 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add unary and binary helpers that automatically demote and promote when dealing with integer operations (not used yet, need loop typemap peeling in place first.)
8e62c283774efb8a96b0d6e0aa9043f71061a69a
created 2008-07-06 12:16 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - JSVAL_IS_BOOLEAN does what isTrueOrFalse was trying to do.
0ce416b5a3df5c324d78859a3d91ddf78678a3b5
created 2008-07-06 12:03 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Fix template, should use typename, not class.
f89cf130bd52037f006c1b950abfebe0e1c6df7f
created 2008-07-06 11:48 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add ExitFilter, which builds side exit typemaps for us. This had to be moved into a filter, because this has to happen after we eliminate redundant i2f-f2i chains as we can sink those into the side exit by simply storing the unpromoted/undemoted value and just flip the type in the exit map.
fcd3450f9272bba03d987ed0fe90040c2253a801
created 2008-07-06 11:19 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge.
a53c3daea0e8bce5abd06e13a810b60177cf5ba5
created 2008-07-06 10:59 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added doubleToUint32 builtin and make tracker a template.
a2e3ea92df6516cb0f4f4f0dd04f49ee0cba5218
created 2008-07-06 13:58 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - fix builtin_UnboxInt32 signature and name shape_ins for debugging
ba845ab9dff1c7f57f002bd5de9a3a247b43b15e
created 2008-07-06 13:38 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Trace JSOP_NAME, and refactor out jsval unboxing.
b83911cb6d173cd2e7300554810276c3bfccebc1
created 2008-07-06 12:15 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - begin on JSOP_NAME, refactor stobj_get_slot to chain better
e9367ede4167ffedad12590489df214df230dd24
created 2008-07-06 09:56 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - actually record at HOTLOOP1 (fencepost)
f4cec2d38f041826b410393e653496db3efa2e31
created 2008-07-06 09:52 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - some remaining low-hanging ops
e4fae864396eb19a24de8d3c48fd9bfe3fe01a17
created 2008-07-06 09:33 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - move JSOP_DOUBLE impl to, er, JSOP_DOUBLE (wtf?)
6b5d40cc17fed5881b74cf387a56cf121a8ae22a
created 2008-07-06 07:28 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Implement JSOP_DOUBLE.
859e409ef3796a8abd3e636595d06bb481e4d13d
created 2008-07-05 23:21 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added support for semi-stable loop variables. Compiling for(...) q += 2.5; is ridiculously difficult because it flip-flops between int and double. Add support to promote integer values to doubles at the loop tail if at loop entry we expect a double. Since this isn't possible the other way around, we have to get luck that we catch a path into the loop where q is already double. For this we add 3 trigger points (10, 13, 37). We will try three times to record a trace at those iteration counts of a loop. If none succeed the loop is blacklisted. This probably needs more tuning down the road.
774553375994ae0990e57d95af34880e8fc6b67f
created 2008-07-05 22:23 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge and rename jsIf to ifop.
6ab468ffe7f4b34721667d3eb85259d037f9eeca
created 2008-07-05 22:20 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added FuncFilter from tamarin core (not part of nanojit yet since its slightly VM dependant).
b5556367172da3d22140e614f878a8c05eee47fa
created 2008-07-05 22:04 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add helpers for i->f and f->i conversion. The f->i path goes via builtin calls.
46aabcce02752fce4ae10eda1cfc9a6371337474
created 2008-07-05 21:51 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add type primitives for numbers (isNumber and asNumber).
8bff19dbf023f7acfb312941c8ccb149d1c4f388
created 2008-07-05 23:47 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Implement JSOP_IFEQ, JSOP_IFNE, JSOP_DUP, JSOP_DUP2.
3d66327238969be22f6d92dfca5fa7bde24dc8af
created 2008-07-05 20:30 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add casting for objects and cleanup casting code.
b1d8fd0005e9ce0d1d0387ad1f2a2122d19bf336
created 2008-07-05 23:04 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - let JSOP_GETELEM handle boolean values too
6272876588dca9a03a207db551c0d1104c56df6c
created 2008-07-05 22:39 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Handle boolean lval in SETELEM; now runs access-nsieve unmodified.
355d79be4adfe120ebcb0ee2f61ee463106f10e5
created 2008-07-05 19:25 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Believe it or not NEG can actually overflow the int32 range, so add an overflow bailout. This will only trap for -0x80000000.
f4c96a566c4c826d41a6249d784b90e465c66cff
created 2008-07-05 19:18 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge.
138fc2d7f4fe744306e5244549030edfb3d9469c
created 2008-07-05 19:15 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added blacklisting of recording points where we failed to complete a trace (overly aggressive at this point, needs tuning, we want to try several times for each point.)
1a4d440c60e4d2dbc9fd3c6c50ab7c9dc6e0b0b7
created 2008-07-05 21:50 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Allow hole-filling JSOP_SETELEM to remain on trace.
04f3c8fdf238f14566efd1fa27c716d3e486c4d8
created 2008-07-05 18:36 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Fixed boolean boxing.
0523b54c86d82a7aa4dc531290557630c07a4c70
created 2008-07-05 18:34 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added boolean boxing/unboxing code.
e3af49ee7476edbcc11fab2097190f52c66933e9
created 2008-07-05 18:18 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Use default parameter in LSH/RSH/URSH to indicate we don't care for the overflow.
6ffdcbdb066c1963380a2e12e4e99f601da2f8ba
created 2008-07-05 17:26 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add support for some misc opcodes including binary and arithmetic and/or/not.
639f37f76fa0a16a05e95a5b05c2fb81026914a5
created 2008-07-05 17:10 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Track trace entry/exit in debug mode and count cycles.
f5a30a112d06eacf7a701fcf27123fd4907e97cf
created 2008-07-05 16:28 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Signal error from the boxing/unboxing using magic cookies since gcc seems to very seriously object to the use of uint64 return values during a fastcall (horribly inefficient code).
8c6d36837b228e0b633f5e0dbc9cfaa01ad7f798
created 2008-07-05 15:46 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Help the branch predictor in the builtins.
9edc74143be669124e0589c0636e026bd9d7519b
created 2008-07-05 17:37 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - use FASTCALL for builtins
ac9c1fa73e6f3abb9bd736025dfbdaaf3652c400
created 2008-07-05 14:05 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Style nitpicking. Fix overlong lines.
c0ee4caf332f33b3e992a3e7087b2e874edee87c
created 2008-07-05 14:00 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Finish SETELEM for int and double values.
977464d95d02128f8a5071cb41c4d5518ea48e41
created 2008-07-05 13:44 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge unboxing code into GETELEM code.
788d1cebba153024a3dd5f932495339fa6d888ae
created 2008-07-05 11:46 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge.
7169fbc897a32d8410568ec93460ce95169b6110
created 2008-07-05 11:45 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Added box_int_jsval for the store path. Use only there.
95a5982008b78be8159ce522ace431691f2d4160
created 2008-07-05 11:35 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Code generators to access object slots and native code callouts (builtins) for boxing doubles and ints. Ints have to be boxed through a native code helper on read and write (BoxInt32 and UnboxInt32), because we sometimes have to cast internally to double to store 32-bit values. We don't want a separate trace in this case, so we have to do this inline in a helper. Also a couple of modifications to shaver's code. Always make sure to check types (JSOP_NEG).
84e68fc5d54329770eaa6f12c3c0801cb65a3be4
created 2008-07-05 11:29 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Fix dumb bugs I just committed, use JS_NOT_REACHED.
a03f8c8930e6ddabfc4b8828ac9cd2d94983dccf
created 2008-07-05 11:18 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Try to keep 64-bit portability via size_t instead of unsigned, jsuword for uintptr instead of long, etc.
c527aa0c12110e8a28723197be273bc57926fbff
created 2008-07-05 10:41 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Spacing and comment nits picked while reading.
970a404b47c412e491ef69374c3bf7575ab234d0
created 2008-07-05 09:59 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - shift ops
2b1334e5332d2035e96e28ef23f7af8b763be4b6
created 2008-07-05 09:47 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - Beginning of SETELEM/GETELEM tracing for dense arrays. Needs computed-offset
a87fc64eaf266a7893df7cbce5d1bb4e2898589b
created 2008-07-05 09:43 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - update to isInt
2938be7b4c93504ef22e0995ac16653ce48d599a
created 2008-07-05 09:34 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - merge
719aa82700052a12d95339d328e26fb680571745
created 2008-07-05 09:15 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - [mq]: simple-ops
4fcf7c5ee2fc7f8acf0817b02bea55cf4c39ec9c
created 2008-07-04 23:53 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Introduce asInt and asDouble to check for the type of values based on the actual value since some 32-bit integers hide out in doubles.
less more (0) -100 -60 tip