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
Andreas Gal
1ee261ca2e
Emit the tree call stack setup code before executing the inner tree, otherwise we might see stale references to instructions prior to the call that no longer guarantee certain types (since the inner tree overwrite them.)
2008-08-19 13:11:18 -07:00
Andreas Gal
1ded8ec0ad
Merge.
2008-08-19 11:32:52 -07:00