js/src/jstracer.h
7bc1529ba552a36c28e5d6dce65bbd53cda4c2bf
created 2008-09-09 13:20 -0700
pushed 2008-09-10 06:40 +0000
David Anderson David Anderson - Fixed Linux build, extra qualification on member function.
6a8762adc8e6fe3b22bf60c2ba301d6af9344f39
created 2008-09-09 15:06 +0200
pushed 2008-09-10 06:40 +0000
Andreas Gal Andreas Gal - Extract the snapshot code for a single slot into determineSlotType() und use that method in snapshot().
ffb36911e55de7425937c6f03b7e916af1770058
created 2008-09-05 18:29 -0700
pushed 2008-09-10 06:40 +0000
Brendan Eich Brendan Eich - Checkpoint arguments tour-de-force (453730).
92ab5019c58e3616286e264fb7841bdfb53bcd99
created 2008-09-02 23:52 -0700
pushed 2008-09-04 08:26 +0000
Andreas Gal Andreas Gal - Limit tree growth to 16 traces per tree to avoid code explosion due to tail duplication (452869, r=danderson).
b6d60356a49cc571ebfab99c55aca0006b7c939d
created 2008-09-02 22:29 -0700
pushed 2008-09-04 08:26 +0000
Vladimir Vukicevic Vladimir Vukicevic - Add VFP for floating point ops to nanojit ARM backend.
a38e9aa2307b700c44f41ac056c8f2791dd2a1eb
created 2008-09-02 22:29 -0700
pushed 2008-09-04 08:26 +0000
Vladimir Vukicevic Vladimir Vukicevic - b=449526, TM: fix up ARM code generation / softfloat
e2614011f194b8d65b4cc912356372624ef69209
created 2008-09-02 21:56 -0700
pushed 2008-09-04 08:26 +0000
Andreas Gal Andreas Gal - Allocate the oracle dynamically instead of making it a global object to avoid atexit C compatibility issues (453388, r=danderson).
6648bddb9f9c2205567495179c4958639c17e9fa
created 2008-09-01 18:37 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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.
25f856429db3248db3ddfa1cd9dd60e76356742f
created 2008-09-01 18:32 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Introduce js_DeepAbort to be used from jsinterp.cpp, instead of trying to call TraceRecorder->deepAbort directly (453235).
50e61e67c4ac17f1f8dc12c4a8faf4984287bb4d
created 2008-08-30 00:01 -0700
pushed 2008-09-03 00:15 +0000
Brendan Eich Brendan Eich - - Support JSOP_CONDSWITCH's JSOP_CASE and extended-jump-offset JSOP_CASEX variants properly.
66ce4cd0087702b75d0effa36451e031a9f93049
created 2008-08-29 18:59 -0700
pushed 2008-09-03 00:15 +0000
Blake Kaplan Blake Kaplan - Abort (deeply) if we re-enter js_Interpret in the middle of a trace. r=brendan
1606de7ae3baf4d74b2dfe37659f552d5917b98c
created 2008-08-29 15:17 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Merge.
ca1f4036355bb16212cef0b4ce09cdd5fbf54679
created 2008-08-29 15:12 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Track locations of control-flow merges in cfgMerges during recording (452869).
7bb8cdc283b0e4b8da1c81158b760b8356ba7755
created 2008-08-28 23:50 -0700
pushed 2008-09-03 00:15 +0000
Brendan Eich Brendan Eich - Consolidate equal and cmp code harder, trace switch ops, use INS_CONST more (bug to be filed -- bugzilla down atm).
9b22617019d75fcb4fb663af84ad6dd553821392
created 2008-08-28 23:19 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Unroll loops we were not able to call once, but only if we don't have a tree available for that loop header.
17287b03873b32f967577db2963339e094f903a6
created 2008-08-28 22:33 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Monitor downward branches only during recording (452709).
1b17855e8259657396a87b831ffb621b57b62efe
created 2008-08-28 17:00 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Notify the monitor of all branches, not just backwards branches.
157ef5e7550797d398fc8ccae68ba65a5ae88bb7
created 2008-08-28 14:24 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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.
7136f04dfbb28eb95492c0240a9c0f07d4731b8a
created 2008-08-27 17:48 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Keep unrolling inner loops as long we are not hitting the same inner loop edge twice in a row (452362).
460cc2a2fc814ec0f0b52f0bccf184d08093e99e
created 2008-08-27 17:25 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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.
f934348863590b851cadf569854935ce4107cca9
created 2008-08-26 01:00 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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.
6e48199bf2663b3c30a8a1a5fc718aa4e9cd6a24
created 2008-08-25 15:17 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - Split closeLoop() and compile() and add endLoop(), which omits an always-exit guard (will be used for break statements.)
8f6dc37a23feeb29b4c82255fd3286bfd238cbe1
created 2008-08-23 15:11 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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.
2f39c79606d9117bc42bba7f72de0c22350f14f8
created 2008-08-22 17:31 -0700
pushed 2008-09-03 00:15 +0000
Andreas Gal Andreas Gal - 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).
433e0fd6163171a27f80f0faa59f6cff2b06786c
created 2008-08-20 22:44 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Merge.
b1e860f92cda4739dbc8d1c8170181483ccd9d79
created 2008-08-20 22:40 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - 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.
9be727cc7214407a366cb1fe8e46b4d14ec7b479
created 2008-08-20 22:37 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Support multiple returns from called trees by continueing the outer tree with a new nested guard.
3a45246c0268a6637f42eabedb351b8ac213ce08
created 2008-08-20 16:01 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Clear the oracle on every GC.
5aeb914594ac2513768ad7cf542b35782e03d68d
created 2008-08-20 15:18 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add a way to clear the oracle.
4ef12bfb79480fb4520b76d7ecb291cd291bcc1a
created 2008-08-20 00:51 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - 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.
45af6228d6fa990a59b3d68fdaf71280ba91ab95
created 2008-08-19 23:28 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Back out multi-trees. There is absolutely no way this will be debugged in time for tomorrow. Need a bit more gdb man-power.
50a8c7f0e0443eb98d97359161540ad3d8ceff6c
created 2008-08-19 22:59 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Improved debug output.
39e2365052c6870d6654f0b6b41ef3f02cfe40e2
created 2008-08-19 22:29 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add debugging facilities for typemaps and fix sp_adj calculation for tree calls.
3eb15b6268b6ebd18ef5308e13fe2e9ddbffd0e7
created 2008-08-19 20:30 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Support multiple fragments with different entry maps per PC location.
ab683b57667d8e0a280e8c7b4f009a0d9acfc0ad
created 2008-08-19 13:11 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - 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.)
fca2a565f6c1876f937ce23671af4512366f4de9
created 2008-08-19 11:32 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Intern globals per-context, not per tree, which allows transitioning between trees that use globals. The type of all global slots compiled code uses is expected to remain stable, otherwise the entire code cache has to be flushed. Changes to the shape of the global object also flush the code cache. Working for trace-tests.js, but fails math-partial-sum.js
16ae20bd96ae0c0fe121dcd252adcdbb78398ad4
created 2008-08-18 07:32 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Add a method to type map that captures missing slots (which have been lazily added to the slot list since the type map was created.)
2ad80e2e356d27296fa7f1b99e96da182975222c
created 2008-08-16 23:43 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Give root fragments a treeInfo decorator only if the trace was successfully compiled. Otherwise just keep a reference in the recorder and delete it when the recorder is destroyed. Review welcome. The involved state machine is a bit complex. Added lots of asserts as safety net.
ceab60d4090c0486b183aaefbbd7b301dccecd1a
created 2008-08-15 14:47 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Funnel all write-backs to the stack and the global frame through TraceRecorder::writeBack() so we can intercept and manipulate them in one central location.
7c90cf9d9b0e923d059b7a87ef9b3ed5376e8b9a
created 2008-08-15 10:09 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Change sp_adj in guards to always reflect the current stack depth, so if we enter a trace/loop with something on the stack, sp_adj will reflect always at least that minimum amount. InterpState->sp now always runs in parallel with regs->sp of the current frame. This breaks nesting badly. I really need help with the stack layout logic.
55d6dbfeeab0582e354479ee3b053141484f9f34
created 2008-08-13 16:29 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - When re-importing register values after a tree call, make sure to use the inner tree's nativeStackBase, since we also use the inner tree's sp.
b42fa8f98b1a41db47662cef159594dcd4ad270f
created 2008-08-13 15:50 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Merge.
1f1b2ed3a1692925802d1c958d1b6e246c69084b
created 2008-08-13 15:50 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Read back registers used by inner tree relative to inner_sp (the adjusted sp value). Print frames we enter into and return to in Enter/LeaveFrame.
b7199324e019798953cd243e7c5c73677eddcf1d
created 2008-08-13 14:02 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Major and winning overhaul to for-in codegen (mad props to Andreas for advice).
3c864e120a1e999fa905d81c5ab61995c6f97971
created 2008-08-13 13:51 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Flexible call stack allocation with proper guarding for call stack overflows.
099e3adf99e9cd980ff53e6a79d777cae998e03f
created 2008-08-12 23:25 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - When re-importing registers after a tree call, make sure to use the inner trees calldepth at its side exit, not the call depths of the calling tree.
5817488e64d26a171cc14fb7756e794470d1a2e9
created 2008-08-12 21:39 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Introduce a large fixed-size native frame stack and store its ceiling in state->eos.
eeae456f2a7cb867412fba46b6e3efd387a36727
created 2008-08-12 09:42 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Consolidate common name (global slot) addressing code.
79c44c277700701a357491a6cb5956940d34f431
created 2008-08-12 09:18 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Fix goto over init whinage.
edd37d2171aef85890f33fd775f69619acb31298
created 2008-08-12 11:36 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - guard all of jstracer.h against non-tracer builds
aeff6516124ca084099fe2e10b1fae61e786d269
created 2008-08-12 11:33 -0400
pushed 2008-08-22 00:08 +0000
shaver shaver - NAMEINC, INCNAME, NAMEDEC, DECNAME
630c5664ad695bb49154d762ae6d514c75e58154
created 2008-08-12 00:34 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Factor forInOp from JSOP_FORLOCAL, use it from JSOP_FORARG's recorder too; tighten up JSOP_SETNAME.
2c554a4452e8ec026b0e1eab6a8c49fa8557d519
created 2008-08-11 19:17 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - Rename js_DestroyJIT to js_FinishJIT to match Init/Finish vs. New/Destroy naming scheme used elsewhere; use same #if conditions around #include jstracer.h as around code depending on it.
ffb6ef9cdb211d4ec48d29007cc3b47072749207
created 2008-08-11 18:47 -0700
pushed 2008-08-22 00:08 +0000
David Anderson David Anderson - Fragmento lifetime is now associated with the thread/runtime instead of the context.
b37e17ceb2a9d871d7160dcccc58a515e22d4ff1
created 2008-08-11 16:14 -0700
pushed 2008-08-22 00:08 +0000
David Anderson David Anderson - Merge.
f146f0ca59341c301ca8b7e190dfe2f9d3a90bc4
created 2008-08-11 16:01 -0700
pushed 2008-08-22 00:08 +0000
David Anderson David Anderson - Added explicit deallocation (bug 443500, r=gal)
aba124b6d799765455387f9f80a257b11354e907
created 2008-08-11 15:40 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Remove default parameter for guard, specify MISMATCH_EXIT explicitly.
3bb3e3417913ee0e3f1963fb2f3897beb0a223cf
created 2008-08-11 15:16 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - If we get a series of tree type mismatches, trash the tree (and all dependent trees in case of nesting.)
15d1cccb600f379affab4c50691ab0c8efc7317e
created 2008-08-11 12:47 -0700
pushed 2008-08-22 00:08 +0000
Andreas Gal Andreas Gal - Don't try to access the name of arguments beyond nargs (r=brendan).
1ca3fd42ffef177d2d08121fbb108900497f6347
created 2008-08-10 22:36 -0700
pushed 2008-08-22 00:08 +0000
Brendan Eich Brendan Eich - - Fix shapeless callee guarding to guard on function object value.
less more (0) -100 -60 tip