Andreas Gal
|
e6cb4750e2
|
Steal the reference to cx from the BoxDouble call instead of observing the load.
|
2008-07-10 17:03:59 -07:00 |
|
Andreas Gal
|
4ad95932a2
|
Fixed the setelem a[i] bug.
|
2008-07-10 16:55:37 -07:00 |
|
shaver@mozilla.org
|
60c7caba17
|
Unlike software developers, g++ doesn't like variable-sized arrays. Have some alloca!
|
2008-07-10 16:48:42 -04:00 |
|
David Anderson
|
8282c44200
|
Fixed guarding of eq+ifeq/ifne fusions and enabled tracing JSOP_GOTO (no-op)
|
2008-07-10 13:35:17 -07:00 |
|
Andreas Gal
|
1b8705e646
|
Root all strings and objects first when unboxing. Then box values that might trigger the GC (doubles/ints). This probably needs some performance tuning over time.
|
2008-07-10 13:24:49 -07:00 |
|
Andreas Gal
|
222a958b75
|
Merge.
|
2008-07-10 09:24:59 -07:00 |
|
Andreas Gal
|
ed0cfa6ce8
|
Don't concede an inch to ISO C++. Substract the size of array[1] from the overall struct size when allocating.
|
2008-07-10 09:22:01 -07:00 |
|
shaver@mozilla.org
|
0b4c4a7782
|
fix compilation, but possibly not logic, of shared-object defense
|
2008-07-10 08:05:25 -04:00 |
|
Andreas Gal
|
bdeea1b3cb
|
Prime the page cache during VM startup. This makes us eat the page cache allocation overhead there instead of during the first use. This is just a hotfix. We still need a rewrite of the page cache.
|
2008-07-09 23:47:17 -07:00 |
|
Andreas Gal
|
0a93e4dd69
|
Assert if no gvar is allocated for an undeclared global.
|
2008-07-09 18:51:08 -07:00 |
|
Andreas Gal
|
40a15bccc7
|
Merge.
|
2008-07-09 18:25:36 -07:00 |
|
Andreas Gal
|
ef76c5d316
|
varobj is not passed through the chain. Make sure to use global->varobj for gvar access.
|
2008-07-09 18:25:10 -07:00 |
|
Brendan Eich
|
31b11b4e90
|
Merge.
|
2008-07-09 17:58:19 -07:00 |
|
Andreas Gal
|
4617cc628c
|
Fixed name/setname code to just track the value move instead of touching memory since we have global variables in our native frame now. We have to fix the page cache issues before we can benchmark this.
|
2008-07-09 17:15:27 -07:00 |
|
Brendan Eich
|
8d88185086
|
Condition fp->arg*/*vars usage on fp->callee, not fp->down.
|
2008-07-09 17:10:42 -07:00 |
|
Andreas Gal
|
9a72a1d41d
|
Add verbose native stack frame printing.
|
2008-07-09 17:09:22 -07:00 |
|
Brendan Eich
|
ab59004c84
|
Memoize implicit gvars in the interpreter, on assignment (JSOP_BINDNAME/JSOP_SETNAME); fix recoder l/r operand order bug.
|
2008-07-09 16:37:31 -07:00 |
|
Brendan Eich
|
20a5a9ef31
|
1. Fix inc to address the right result stack slot; 2. Require via assertions that the interpreter memoize implicit gvars (patch to do that next; bitwise-and will assert until that lands).
|
2008-07-09 15:15:32 -07:00 |
|
Brendan Eich
|
2210ed4a21
|
Remove unnecessary JSOp cast.
|
2008-07-09 13:46:46 -07:00 |
|
Brendan Eich
|
d8cf234b33
|
Memoize global name gets and sets as if they refer to a declared gvar.
|
2008-07-09 11:42:31 -07:00 |
|
Andreas Gal
|
626026b70a
|
Merge.
|
2008-07-09 10:06:24 -07:00 |
|
Andreas Gal
|
202ec610da
|
Removed assert that compares nativeFrameSlots to nativeFrameOffset since nativeFrameOffset is undefined in case sp is at sp+depth, so the assert sometimes randomly bites. Also fixed typo in cmp(). trace-test.js compiles now.
|
2008-07-09 10:05:59 -07:00 |
|
Brendan Eich
|
cffa8d2279
|
Tweak a few interval tests, eliminate casts, space patrol.
|
2008-07-09 09:59:51 -07:00 |
|
Andreas Gal
|
05554d05b3
|
Stricter typing of the tracker code path which now only accepts jsval as suggested by Brendan.
|
2008-07-09 00:29:23 -07:00 |
|
Andreas Gal
|
19a2dcb6f5
|
Fixed bug in nativeFrameSlots and use an assert to compare the result with nativeFrameOffset (which is slower, but more precise).
|
2008-07-09 00:26:01 -07:00 |
|
Andreas Gal
|
1c24e264ad
|
Removed numMapEntries since typeMap is not really part of the SideExit struct yet anyway.
|
2008-07-09 00:13:35 -07:00 |
|
Andreas Gal
|
d6b834b98a
|
Move builtin[] table in jsbuiltin.cpp
|
2008-07-08 23:48:06 -07:00 |
|
Andreas Gal
|
5ee8b4abd7
|
Housekeeping. Remove a few warnings during BUILT_OPT and spelling in comments.
|
2008-07-08 22:40:07 -07:00 |
|
Andreas Gal
|
216f33a0bb
|
sp_adj is now maintained in bytes, not words, so +8 is now the magic value to point to the top of the stack. All stores above that watermark are eliminated by StackFilter in nanojit.
|
2008-07-08 21:03:30 -07:00 |
|
Andreas Gal
|
c9ee018202
|
Merge.
|
2008-07-08 20:20:24 -07:00 |
|
shaver@mozilla.org
|
815f787a8a
|
merge
|
2008-07-08 23:14:47 -04:00 |
|
Andreas Gal
|
ade00cfeb0
|
Removed bogus debug printfs.
|
2008-07-08 20:09:15 -07:00 |
|
Andreas Gal
|
795edf3334
|
Fixed frame walking FORALL_PENDING_FRAME_SLOTS and add 4 to sp in getTop (hotfix, not the right way to do it.)
|
2008-07-08 20:06:54 -07:00 |
|
shaver@mozilla.org
|
4fcad3cb1e
|
rval tracking and JSOP_POPV
|
2008-07-08 22:21:25 -04:00 |
|
Andreas Gal
|
4d84965bb8
|
Merge.
|
2008-07-08 19:17:15 -07:00 |
|
Andreas Gal
|
8e439abde3
|
Use more efficient address mode for LIR_load if possible and removed bogus printf.
|
2008-07-08 19:16:56 -07:00 |
|
shaver@mozilla.org
|
ff2b728cfd
|
protect printf with DEBUG
|
2008-07-08 21:22:46 -04:00 |
|
Brendan Eich
|
6a2a47ede9
|
Merge.
|
2008-07-08 18:14:14 -07:00 |
|
Brendan Eich
|
654d46135f
|
Single-ended interval tests, plus space patrol.
|
2008-07-08 18:12:22 -07:00 |
|
shaver@mozilla.org
|
46bdd14d57
|
Implement JSOP_SETNAME for globals.
|
2008-07-08 21:07:27 -04:00 |
|
David Anderson
|
daa8ef943b
|
Merge.
|
2008-07-08 17:20:11 -07:00 |
|
David Anderson
|
fcf8410125
|
Builds against latest nanojit; merged VMSideExitInfo into SideExit
|
2008-07-08 17:16:51 -07:00 |
|
Andreas Gal
|
444ffb8230
|
Fixed argv[n] and vars[n], should be [0] of course.
|
2008-07-08 17:14:01 -07:00 |
|
Andreas Gal
|
27628a1abf
|
Add dummy vpname/vpnum parameters when not compiling in DEBUG mode.
|
2008-07-08 16:46:54 -07:00 |
|
Andreas Gal
|
4550dd77f0
|
Introduce a generic stack frame walking macro. This eliminates the 6 (hg pull) redundant blocks of code that all walked the stack in 6 different ways, each with their individuals quirks.
|
2008-07-08 16:29:23 -07:00 |
|
Andreas Gal
|
9a4e0a6467
|
Don't check the types for invalid global slots in checkType. Proper gvar lookup in boxing path. We have to unify the stack frame traversal and enumeration code. I fixed this bug before, just in a different place. 11x speedup for gvar.js
|
2008-07-08 01:30:29 -07:00 |
|
Andreas Gal
|
c1491b01c2
|
Properly display the 'any' type in the side exit map printout.
|
2008-07-08 01:14:02 -07:00 |
|
Andreas Gal
|
0afa601949
|
Cleanup definition of tracker (don't use LInsp, use T, its a template now).
|
2008-07-08 00:46:53 -07:00 |
|
Andreas Gal
|
ac0b138197
|
Hack: demotable stores have to be flagged as int in the exit typemap. This needs cleanup.
|
2008-07-07 22:41:58 -07:00 |
|
Andreas Gal
|
64bf4baa1c
|
Don't expect args and vars in a top-level frame that is mapped to the native frame.
|
2008-07-07 22:20:27 -07:00 |
|
Andreas Gal
|
1e0a9a8363
|
Merge.
|
2008-07-07 22:00:25 -07:00 |
|
Andreas Gal
|
a6d30ed7c2
|
Fixed native frame offset calculation for globals.
|
2008-07-07 22:00:07 -07:00 |
|
shaver@mozilla.org
|
8fa1b5215f
|
fix type checking of gvars
|
2008-07-08 00:19:20 -04:00 |
|
shaver@mozilla.org
|
3f51971710
|
more detailed type-instability diagnostics
|
2008-07-07 23:51:56 -04:00 |
|
Andreas Gal
|
205ab22204
|
We urgently need shaver's magic native stack/typeframe iterator. Fixed exit map builder to skip argv/vars for global scope.
|
2008-07-07 19:29:54 -07:00 |
|
Andreas Gal
|
2f939b51d1
|
Fixed increment for DECGVAR.
|
2008-07-07 19:27:36 -07:00 |
|
Andreas Gal
|
a0c960adee
|
Bugfixes to the native stack and typemap handling code.
|
2008-07-07 19:20:40 -07:00 |
|
Andreas Gal
|
56397d3c0e
|
Attempt at cleaning up the typemap/stack frame iteration code.
|
2008-07-07 18:35:38 -07:00 |
|
Andreas Gal
|
6aaa63a172
|
ngvars and the slot index are not related, so don't rely on ngvars < JS_INITIAL_NSLOTS to decide whether dslots exists
|
2008-07-07 18:08:28 -07:00 |
|
Andreas Gal
|
0fe5682c00
|
Make gvar ops use the global varobj values we unbox onto the native stack. The stack offset handling needs more work.
|
2008-07-07 17:21:54 -07:00 |
|
Andreas Gal
|
a4f454ae32
|
We shouldn't read globals onto the stack if the global object is used by another context so we just refuse to execute the trace in this case.
|
2008-07-07 15:23:48 -07:00 |
|
Andreas Gal
|
1d36b97516
|
Unbox global variables onto the native stack and re-box them. This has certain synchronization implications but will make top-level scripts quite a bit faster.
|
2008-07-07 15:15:56 -07:00 |
|
Andreas Gal
|
4da1b65be4
|
Don't try to demote a slot we already decided we can't demote. Also, make sure we only demote additions with constants where the constant fits into an int.
|
2008-07-07 12:58:28 -07:00 |
|
Brendan Eich
|
affcda00d2
|
Merge.
|
2008-07-07 02:56:52 -07:00 |
|
Brendan Eich
|
175ce14f5b
|
Indentation and comment wrapping (at 79, 99 looks too long and most comments still avoid going past 80+/-).
|
2008-07-07 02:55:03 -07:00 |
|
Andreas Gal
|
ef4a0f7533
|
Merge.
|
2008-07-07 02:51:36 -07:00 |
|
Andreas Gal
|
e4f8fa2f97
|
Sync nanojit with tamarin-tracing tip.
|
2008-07-07 02:47:40 -07:00 |
|
Brendan Eich
|
6d65efee60
|
Use jsopcode.tbl for tracer JSOP_* method decls; trim trailing whitespace.
|
2008-07-07 02:21:04 -07:00 |
|
Andreas Gal
|
e15355bc04
|
Cleanup the native frame -> interpreter frame boxing code. We sometimes end up with numbers on our stack in double format that are really ints. We have to detect those and properly store them as in on the interpreter stack.
|
2008-07-07 01:37:40 -07:00 |
|
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 |
|
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 |
|
shaver@mozilla.org
|
2c69d44f6f
|
we only speak double around here now
|
2008-07-06 23:01:58 -04:00 |
|
shaver@mozilla.org
|
10d122ba09
|
remove bogus NOT_REACHED
|
2008-07-06 22:39:02 -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 |
|
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 |
|
shaver@mozilla.org
|
b28afaa80d
|
Trace GETGVAR and INCGVAR, though not yet correctly.
|
2008-07-06 16:59:59 -04: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 |
|
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
|
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 |
|
Andreas Gal
|
075e3f00a6
|
Add casting for objects and cleanup casting code.
|
2008-07-05 20:30:11 -07:00 |
|
shaver@mozilla.org
|
501239ca11
|
let JSOP_GETELEM handle boolean values too
|
2008-07-05 23:04:42 -04:00 |
|
shaver@mozilla.org
|
26cc9c9e54
|
Handle boolean lval in SETELEM; now runs access-nsieve unmodified.
|
2008-07-05 22:39:34 -04:00 |
|
Andreas Gal
|
0245a6ba7c
|
Believe it or not NEG can actually overflow the int32 range, so add an overflow bailout. This will only trap for -0x80000000.
|
2008-07-05 19:25:38 -07:00 |
|
Andreas Gal
|
54a349ce1f
|
Merge.
|
2008-07-05 19:18:14 -07:00 |
|
Andreas Gal
|
48e459ba73
|
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.)
|
2008-07-05 19:15:00 -07:00 |
|
shaver@mozilla.org
|
1c4f82c592
|
Allow hole-filling JSOP_SETELEM to remain on trace.
|
2008-07-05 21:50:54 -04:00 |
|
Andreas Gal
|
04ae2a44d4
|
Fixed boolean boxing.
|
2008-07-05 18:36:40 -07:00 |
|
Andreas Gal
|
cf8e2a555b
|
Added boolean boxing/unboxing code.
|
2008-07-05 18:34:41 -07:00 |
|
Andreas Gal
|
8ac9e3ca57
|
Use default parameter in LSH/RSH/URSH to indicate we don't care for the overflow.
|
2008-07-05 18:18:06 -07:00 |
|
Andreas Gal
|
888d2f9aee
|
Add support for some misc opcodes including binary and arithmetic and/or/not.
|
2008-07-05 17:26:00 -07:00 |
|
Andreas Gal
|
810d54beac
|
Track trace entry/exit in debug mode and count cycles.
|
2008-07-05 17:10:58 -07:00 |
|
Andreas Gal
|
19152ffb1f
|
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).
|
2008-07-05 16:28:03 -07:00 |
|
Andreas Gal
|
05c4c4bb27
|
Help the branch predictor in the builtins.
|
2008-07-05 15:46:58 -07:00 |
|
shaver@mozilla.org
|
00b1baa734
|
use FASTCALL for builtins
|
2008-07-05 17:37:15 -04:00 |
|
Andreas Gal
|
16b463a6cb
|
Style nitpicking. Fix overlong lines.
|
2008-07-05 14:05:25 -07:00 |
|
Andreas Gal
|
d765c3ead2
|
Finish SETELEM for int and double values.
|
2008-07-05 14:00:32 -07:00 |
|
Andreas Gal
|
1e9c9451e0
|
Merge unboxing code into GETELEM code.
|
2008-07-05 13:44:48 -07:00 |
|
Andreas Gal
|
503bf13dac
|
Merge.
|
2008-07-05 11:46:08 -07:00 |
|
Andreas Gal
|
f9981c8870
|
Added box_int_jsval for the store path. Use only there.
|
2008-07-05 11:45:53 -07:00 |
|
Andreas Gal
|
ba7e66df92
|
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).
|
2008-07-05 11:35:55 -07:00 |
|
Brendan Eich
|
2e457ec7ab
|
Fix dumb bugs I just committed, use JS_NOT_REACHED.
|
2008-07-05 11:29:28 -07:00 |
|
Brendan Eich
|
ab0e34e2ae
|
Try to keep 64-bit portability via size_t instead of unsigned, jsuword for uintptr instead of long, etc.
|
2008-07-05 11:18:26 -07:00 |
|
Brendan Eich
|
e544b391b2
|
Spacing and comment nits picked while reading.
|
2008-07-05 10:41:35 -07:00 |
|
shaver@mozilla.org
|
ef07fe09b8
|
shift ops
|
2008-07-05 09:59:32 -04:00 |
|
shaver@mozilla.org
|
de59f88d9c
|
Beginning of SETELEM/GETELEM tracing for dense arrays. Needs computed-offset
insLoad before they'll work.
|
2008-07-05 09:47:59 -04:00 |
|
shaver@mozilla.org
|
f298721bf2
|
update to isInt
|
2008-07-05 09:43:00 -04:00 |
|
shaver@mozilla.org
|
13b4f67ef5
|
merge
|
2008-07-05 09:34:19 -04:00 |
|
shaver@mozilla.org
|
92e9aa44c0
|
[mq]: simple-ops
|
2008-07-05 09:15:33 -04:00 |
|
Andreas Gal
|
2df2214a9e
|
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.
|
2008-07-04 23:53:29 -07:00 |
|
Andreas Gal
|
cef5e9becc
|
Make trace-code 32-bit clean and extend interpreter state to carry the current context (cx). The recorder still has to record a 31-bit int path through the loop, but the emitted code is able to stay in the tree even if values bump over to 32-bit ints.
|
2008-07-04 16:24:42 -07:00 |
|
Andreas Gal
|
e35d351b28
|
Added support for SET_VAR again. bitwise.js working now.
|
2008-07-04 15:21:56 -07:00 |
|
Andreas Gal
|
ab1dc289ba
|
Fixed some stack handling and trace activation issues. We can run trace.js again.
|
2008-07-04 15:07:05 -07:00 |
|
Andreas Gal
|
5e9ca6ef0e
|
Cleanup of stack handling.
|
2008-07-04 13:23:42 -07:00 |
|
Andreas Gal
|
9b8f5f75a8
|
Added back support for the instructions required to compile trace.js.
|
2008-07-04 03:06:18 -07:00 |
|
Andreas Gal
|
1503932551
|
Properly switch tracer on and off depending on loopEdge and abort signaling from trace recorder recording functions.
|
2008-07-04 01:10:57 -07:00 |
|
Andreas Gal
|
efb72df02a
|
Re-integrate trace recording and trace activation infrastructure. Model more closely after Tamarin.
|
2008-07-04 00:51:30 -07:00 |
|
Andreas Gal
|
731614bfe9
|
Create a stub for each opcode in TraceRecorder and invoke them from the stubs that are pointed to by the recorder dispatch-table.
|
2008-07-03 23:57:57 -07:00 |
|
Andreas Gal
|
62d0c7bbfb
|
Switch back to mozilla-central jsinter.cpp. Lets try a different approach to attach the tracer to the interpreter.
|
2008-07-03 22:08:13 -07:00 |
|
Andreas Gal
|
8f4707fd29
|
Added dmod builtin and flag broken builtins for removal (shaver).
|
2008-07-02 22:05:30 -07:00 |
|
Andreas Gal
|
6eb6314e75
|
Support recording of ValueToECMAInt32, ValueToECMAUint32 and ValueToBoolean.
|
2008-07-02 21:48:42 -07:00 |
|
Andreas Gal
|
2cd7b6993b
|
VOIDs hang out in the BOOLEAN value space, so we have to treat them like a boolean on the trace. For ValuetoECMAInt32 all special boolean values except TRUE produce 0, and TRUE produces 1. Use a conditional move to implement this.
|
2008-07-02 19:11:07 -07:00 |
|
Andreas Gal
|
b137f2da3b
|
Introduce a VMSideExitInfo structure (holds the exit typemap only for now).
|
2008-07-02 18:06:24 -07:00 |
|
Andreas Gal
|
523ba92b3d
|
Use fragmento to track fragments and add proper trace activiation code.
|
2008-07-02 17:19:07 -07:00 |
|
Andreas Gal
|
47c6075eb2
|
Fix unstable trace rejection for optimized build.
|
2008-07-02 15:31:40 -07:00 |
|
Andreas Gal
|
7906238314
|
Fix type stability check.
|
2008-07-02 15:17:53 -07:00 |
|
Andreas Gal
|
6f3af33edf
|
Add type stability check for loop variables. Rename readstack to import.
|
2008-07-02 15:14:43 -07:00 |
|