Andreas Gal
|
a38e8a96c3
|
Add support to demote stores of constants that are currently represented as float but are really integers. bitwise.js is now compiled complete fp-casts free.
|
2008-07-07 01:05:53 -07:00 |
|
Andreas Gal
|
efa3309778
|
Demote floating point comparisons even if one side is constant (bug in nanojit, filed as #443884 against tamarin). Also demote add/sub/mul using the integer overflow detection side exit code that Ed adopted upstream. Tight loops (bitwise) are not emitted completely as integer code after the initial compilation using doubles triggered a speculative demotion of the context slots.
|
2008-07-07 00:43:40 -07:00 |
|
Andreas Gal
|
8ce0de1ad7
|
Sink type conversions into the side exit by updating the map and seeing though the cast in the store (in ExitFilter). Add a whole bunch of asserts on the varios speculative type states to make sure we get the state machine right. Import speculated integer values as integers into the trace (indicate in entry map).
|
2008-07-07 00:10:22 -07:00 |
|
Andreas Gal
|
34c2283213
|
Added loop-tail driven context slot type demotion. Without all the buzzwords, what this essentially means is that we detect if the last value that the trace leaves in a slot (which is the value that flows along the backedge back to the loop header) is known to originate from an integer value via i2f, we flag the slot as type integer and recompile the trace. We do this where type stability is certain (result of an and, i.e.) or where its very likely (++operator). If the speculation fails, the same analysis flags the slot as blocked, which means it will always be double. The hope is that this analysis converges quickly (1-2 recompilations tops).
|
2008-07-06 22:35:19 -07:00 |
|
Karl Tomlinson
|
8ee8338835
|
missed &s in 15688:953a299d8c32 b=430450
|
2008-07-07 16:15:07 +12:00 |
|
Karl Tomlinson
|
e41086c923
|
Correct variable names from 15688:953a299d8c32 b=430450
|
2008-07-07 15:46:50 +12:00 |
|
Andreas Gal
|
d6172e525e
|
Make sure we don't get the argument order in BoxDouble wrong again.
|
2008-07-06 20:27:50 -07:00 |
|
Andreas Gal
|
efee2381b5
|
Make typemap uint8_t and fix order of arguments in call to BoxDouble.
|
2008-07-06 20:25:49 -07:00 |
|
shaver@mozilla.org
|
9ed160ad12
|
remove outdated guard (now inferred via filter as needed)
|
2008-07-06 23:11:59 -04:00 |
|
Karl Tomlinson
|
4aad426736
|
merge
|
2008-07-07 15:09:52 +12:00 |
|
shaver@mozilla.org
|
2c69d44f6f
|
we only speak double around here now
|
2008-07-06 23:01:58 -04:00 |
|
Karl Tomlinson
|
9020a0cc8e
|
Bug 430450 – vertical stripes in windowless plugins.
Snap to pixels and round dirty rect out. r+sr=roc
|
2008-07-07 14:49:38 +12:00 |
|
shaver@mozilla.org
|
10d122ba09
|
remove bogus NOT_REACHED
|
2008-07-06 22:39:02 -04:00 |
|
Karl Tomlinson
|
3fc8bd0f47
|
Add nsPresContext::AppUnitsToGfxUnits(const nsRect&)
b=430450 r+sr=roc
|
2008-07-07 14:28:24 +12:00 |
|
Gavin Sharp
|
370c6788cd
|
Debugging followup (bug 431745)
|
2008-07-06 21:35:18 -04:00 |
|
Gavin Sharp
|
194703ae05
|
Debugging followup (bug 431745)
|
2008-07-06 21:10:46 -04:00 |
|
Gavin Sharp
|
206dbf08af
|
Debugging followup (bug 431745)
|
2008-07-06 21:09:28 -04:00 |
|
Andreas Gal
|
312d176937
|
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.
|
2008-07-06 17:43:08 -07:00 |
|
Andreas Gal
|
bd6deef4fc
|
Reduce redundant doubleToInt32(i2f(x)) chains to simply x.
|
2008-07-06 17:32:21 -07:00 |
|
Gavin Sharp
|
f4d490d4c4
|
Debugging followup (bug 431745)
|
2008-07-06 19:52:35 -04:00 |
|
Gavin Sharp
|
3bbd185188
|
Debugging followup (bug 431745)
|
2008-07-06 19:39:50 -04:00 |
|
Andreas Gal
|
5ec69f76a7
|
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.
|
2008-07-06 16:38:54 -07:00 |
|
Andreas Gal
|
a990d4a2e6
|
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.
|
2008-07-06 16:18:45 -07:00 |
|
Andreas Gal
|
aeeff83beb
|
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.
|
2008-07-06 15:55:04 -07:00 |
|
Gavin Sharp
|
d2915d5735
|
Temporary debugging patch to try and get to the bottom of the test_sleep_wake failures (bug 431745)
|
2008-07-06 18:39:37 -04:00 |
|
shaver@mozilla.org
|
b28afaa80d
|
Trace GETGVAR and INCGVAR, though not yet correctly.
|
2008-07-06 16:59:59 -04:00 |
|
Robert Kaiser
|
7267233b08
|
bug 440932 - toolkit dlmgr should be buildable by suite, supplemantal patch for including config.mk early enough, r=ted
|
2008-07-06 22:37:07 +02:00 |
|
Robert Kaiser
|
89f6228191
|
bug 442503 - Use MOZILLA_DIR for the Mozilla source dir in makensis.mk, r=ted
|
2008-07-06 22:34:45 +02:00 |
|
Robert Kaiser
|
5954a9c126
|
bug 442484 - packager.mk doesn't work correctly with non-default topsrcdir, r=ted
|
2008-07-06 22:30:32 +02:00 |
|
Andreas Gal
|
d30b7d1c8a
|
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.)
|
2008-07-06 13:16:34 -07:00 |
|
Andreas Gal
|
4e1aa1d977
|
JSVAL_IS_BOOLEAN does what isTrueOrFalse was trying to do.
|
2008-07-06 12:16:55 -07:00 |
|
Andreas Gal
|
5816dee707
|
Fix template, should use typename, not class.
|
2008-07-06 12:03:51 -07:00 |
|
Igor Bukanov
|
e1c0b7d628
|
Bug 443746 – Optimizing the enumeration state allocation. r=brendan
|
2008-07-06 21:02:44 +02:00 |
|
Andreas Gal
|
1343901446
|
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.
|
2008-07-06 11:48:41 -07:00 |
|
Andreas Gal
|
84ec537a0c
|
Merge.
|
2008-07-06 11:19:06 -07:00 |
|
Andreas Gal
|
9501bcd749
|
Added doubleToUint32 builtin and make tracker a template.
|
2008-07-06 10:59:55 -07:00 |
|
shaver@mozilla.org
|
d881a494aa
|
fix builtin_UnboxInt32 signature and name shape_ins for debugging
|
2008-07-06 13:58:59 -04:00 |
|
shaver@mozilla.org
|
45b3826103
|
Trace JSOP_NAME, and refactor out jsval unboxing.
|
2008-07-06 13:38:55 -04:00 |
|
shaver@mozilla.org
|
06a27ca367
|
begin on JSOP_NAME, refactor stobj_get_slot to chain better
|
2008-07-06 12:15:55 -04:00 |
|
shaver@mozilla.org
|
d5f1772186
|
Fix optimizer flags for interp and builtins in debug mode, and clean out old
TestNanojit.
|
2008-07-06 10:24:09 -04:00 |
|
shaver@mozilla.org
|
f463dc6891
|
actually record at HOTLOOP1 (fencepost)
|
2008-07-06 09:56:25 -04:00 |
|
shaver@mozilla.org
|
7f5f2ae1c8
|
some remaining low-hanging ops
|
2008-07-06 09:52:50 -04:00 |
|
shaver@mozilla.org
|
38235e2eec
|
move JSOP_DOUBLE impl to, er, JSOP_DOUBLE (wtf?)
|
2008-07-06 09:33:13 -04:00 |
|
shaver@mozilla.org
|
2d307b4b59
|
Implement JSOP_DOUBLE.
|
2008-07-06 07:28:36 -04:00 |
|
Andreas Gal
|
100f4ea5e0
|
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.
|
2008-07-05 23:21:53 -07:00 |
|
Andreas Gal
|
41efb6c488
|
Merge and rename jsIf to ifop.
|
2008-07-05 22:23:34 -07:00 |
|
Andreas Gal
|
a48c36fae3
|
Added FuncFilter from tamarin core (not part of nanojit yet since its slightly VM dependant).
|
2008-07-05 22:20:35 -07:00 |
|
Andreas Gal
|
0b28897ad3
|
Add helpers for i->f and f->i conversion. The f->i path goes via builtin calls.
|
2008-07-05 22:04:58 -07:00 |
|
Andreas Gal
|
68359155b9
|
Add type primitives for numbers (isNumber and asNumber).
|
2008-07-05 21:51:26 -07:00 |
|
shaver@mozilla.org
|
a268883f3c
|
Implement JSOP_IFEQ, JSOP_IFNE, JSOP_DUP, JSOP_DUP2.
|
2008-07-05 23:47:24 -04:00 |
|