User Push date [To Local] | Changeset | Patch author — Commit message |
---|---|---|
shaver@mozilla.com Fri Aug 22 00:08:22 2008 +0000 | d13bb0868596b3d6c11d0a15c63b56c19abf7c74 | shaver — update for bent's gczealectomy ← 1164 merge changesets [Collapse] |
e4d30c562c97cc466de948d32596d9f1634129c7 | shaver — landing more fixes from tracemonkey repo | |
0bad46a5955329abfb9e4d37aae29f028f238d78 | Andreas Gal — Merge. | |
773396cbf8b14f8dd9fa5425f5c4ca662b6ac683 | Andreas Gal — Fix builtins that were accidentally flagged as CSE/FOLD but really aren't (Math.random i.e.) | |
c5bd0c01b5bcf79e59071b4ad12692b1ba0cf8ba | Andreas Gal — Cleanup spacing in builtins.tbl | |
335c0799346e80e6473ab23dfd2c8a5524d904af | Blake Kaplan — Fixed js_String_p_split passing in an undersized array. | |
cc9d6bb5d3590bdd67cdb5b92547bf980c44bc9e | Andreas Gal — Merge. | |
36a40a37cf86a9b74798072ff5e5cb3584bb3abd | Andreas Gal — Fix warning about signed/unsigned comparison. | |
d149965aa476ac93dabb189dc0ed6d1790dbe458 | Robert Sayre — Turn on the JIT for tracemonkey mochitests. | |
74a9a3453bd9aac11a14e83d8065c647b28f6b77 | shaver — land initial tracemonkey development, pref'd off | |
4ccf8dc11ab3ac62f428dd3e69a84e35eeca4abf | Robert Sayre — Bug 451580, fix string split assertions and return values. Tests fail with JIT on for other reasons, it seems. r=shaver | |
d5f659ad77c90b3349b17f49aa23824e342cc69d | Andreas Gal — Merge. | |
748eba86d37ad8bfddb6093ea004536373f8963f | Andreas Gal — Abort recording when an error occurs. | |
648c778b234f2d50948973e9f659d4f819a2f232 | Brendan Eich — Fix script->owner maintenance; also fix warning. | |
2bd3bdeadbb0470afb2d865edd191d0911c8d7bf | Brendan Eich — JSThread is not zeroed when allocated, grrr. | |
b908f7a072d4e2df1e77325466734ac6c5169acc | Brendan Eich — Fix typo. | |
bed188922f6b66c76616c749bde95627c47c04ac | Brendan Eich — Merge. | |
63ba972636ad03e3e1622432b0a549a77c07cf28 | Brendan Eich — Followup upvar fix, easy assertbotch avoidance. | |
dbc63f1b62a6ff27fd9975614ffd8b9589b08190 | Brendan Eich — Add split built-in, also sort knownNatives for my own sanity (should sort builtins.tbl and jsbuiltins.cpp by function while at it, but too tired). | |
dadf67004206f940f6e36191f4b4a875fa5052c9 | Andreas Gal — Remove FastEval builtin. | |
99e06b65f3fe869a36c6583daadacad8a4257907 | Brendan Eich — Merge, plus restore TraceRecorder::activeCallOrGlobalSlot. | |
5bc82976d48b250e7518d4e8aee32ae5057693f6 | Brendan Eich — Upvar, v0.1 (limited to looking up from eval in a function, to the function's args and vars). | |
34320e7c15ab7899a051eac5ea4f991774ac9ea3 | shaver — disable tracing with active call object pending perf fix | |
ec3ae84d6e1b8f9ab5c1cfc20e2fc636cc7ae002 | Andreas Gal — Merge. | |
2b42c3bf91e90120b50f2ed0a5be7aeb5565dfbb | Andreas Gal — Remove FastEval, broken by design (r=brendan). | |
58a1d81f3583aa8e0576c270eb39aa4718254da1 | David Anderson — Fixed code generation bug in AMD64 port. Enabled AMD64 JIT now. | |
8062a7d3dba66acc098caf5e57eace54d544232f | Brendan Eich — Remove lambda-replace built-in, it's not safe to record into a nested js_Interpret. | |
0b23137e9ed248f147fa15baa2c151a72af569c4 | Brendan Eich — Fix CHECK_RECORDER macro to use XOR to evaluate both terms. | |
72b7558b7c20db71be36fddbb343fbf961a7c8b4 | Andreas Gal — Convert undefined to NULL on tree entry if the tree wants an object type. | |
cee6fa4f6e48a64f338550b2b49da8bef9a245e3 | shaver — trace |new Array|, via the magic of copy and paste | |
4e460ead141fb2e1d95087fe90b89251f624a6d8 | Brendan Eich — Merge. | |
528afa2c7bb14c6f82a589ae91ca7e6edc31401e | Brendan Eich — Tidy up globalShape mismatch reporting. | |
02c5e041a0eff15577a22f5ae083d545a7bcbf98 | Andreas Gal — Merge. | |
a08ac138bc415c7b6efd26714e61176c21c2bb0b | Andreas Gal — If we expect a concrete value but see an undefined come into the trace, convert undefined to the concerete value. | |
f6391f7b7fde7144dadbfcb54195380bf6ab318c | Andreas Gal — Export js_NaN. | |
0a4e4719801a0a8b8dc63258fedb00f1f5b36198 | Brendan Eich — Merge. | |
2a47378513b5291de3afd99c1e07625baaca89ad | Brendan Eich — Use JS_FRIEND_API for new JS_ArrayToJSUint8Buffer, etc., and use it on prototypes and definitions (fixes some platform builds). | |
a6760b62c5554d459cbe169bb2de68d71ae67b46 | Andreas Gal — Merge. | |
7c2d2ad1f53160ceb5b3776b303012a89afed039 | Andreas Gal — 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. | |
8631c4e861e63a7813042a4077aab7df912eeb99 | Andreas Gal — Increase HOTEXIT to 1 (from 0). | |
d534c69afb967cf7ff73ba6e2c8a5be0a690b289 | Andreas Gal — Eliminate redundant BoxDouble(UnboxDouble) chains. | |
2b03a4f6ccdba276a37508c38aadec2ae2287917 | shaver — say what we're returning from from EnterFrame | |
433e0fd6163171a27f80f0faa59f6cff2b06786c | Brendan Eich — Merge. | |
b1e860f92cda4739dbc8d1c8170181483ccd9d79 | 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. | |
3bb542e73570406978f554ae9cab714a88d40d6f | Brendan Eich — Defer eval'ed script destruction to next GC; expose js_obj_eval for tracing. | |
9be727cc7214407a366cb1fe8e46b4d14ec7b479 | Andreas Gal — Support multiple returns from called trees by continueing the outer tree with a new nested guard. | |
a2de55ade75e7441a74334fd2d3135b309ae5586 | Andreas Gal — 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. | |
163eb5c5f0de59597cde084353e50e88672a322f | Andreas Gal — Push actual guard that failed in a nested call, not the expected. | |
5624964c08c3e19a546bb0c2d94b7a5643e450c7 | Andreas Gal — Merge. | |
85af1ede7663702f72c235712c031a6d97d4085d | Andreas Gal — 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. | |
dca5d78f252fd09aa0a04d352604494e2b69ce10 | shaver — fix js_IsLoopExit to better handle for-in exits, r=mrbkap | |
471789d46ccddaa7d3e82ebe1811e2bf8bb612ac | Andreas Gal — Add a switch to disable the oracle, in which case we never demote any slots. | |
3a45246c0268a6637f42eabedb351b8ac213ce08 | Andreas Gal — Clear the oracle on every GC. | |
bf2b047ec8a59b15a3f505fcd24bfa54cfd53078 | Andreas Gal — Merge. | |
923cfab235b4c18ca1704f1b86a84c15f3dee019 | Andreas Gal — 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. | |
086ea24c34c0e5d2eee41586117fa76205d4f738 | shaver — disable vprof building so that we can build on XP | |
5aeb914594ac2513768ad7cf542b35782e03d68d | Andreas Gal — Add a way to clear the oracle. | |
4af1777047bad9b6922aeb32b6664d48c57af58a | Andreas Gal — Merge. | |
f60ed4ad16aa5294103f47dbb14e6aeac674e882 | Andreas Gal — Clear global slots and global type map when clearing the code cache. | |
733c550be0fb98823ef15aa8a8175d6a74ec5af8 | Andreas Gal — Backed out changeset be63a51a0a3b. Breaks tofte if run from ./time.sh. | |
0530e5b075a5a20253a5f0001ccd6a1036a2b892 | Vladimir Vukicevic — b=451242, use fast-paths for dense array to uint conversion in canvas | |
109ca6e80874e97a4dfa4accb6a514f1956d0e14 | Vladimir Vukicevic — b=451242, add fast-paths for dense array to uint/int/double buffer conversion; r=bent/mrbkap | |
be63a51a0a3bb906343db5d32956bbbb13995f6d | Brendan Eich — 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. | |
a5ecf48dd03b06dbe95868d6af8a132f745a0341 | Andreas Gal — Stub the getter and setter on class prototypes and constructor (bz, r=brendan, bug 451154). | |
9ce88c583712855f05cd39623356b0deceac9fb5 | Andreas Gal — When adjusting integers to doubles in tree calls start with the current stack frame only. | |
15633eda8a000cd31977f563717d77217bbd244e | David Anderson — Fixed some valgrind whinings (not actual bug fixes). | |
5b8ea41c245cd655f811b886e0b9204ae2e96e9d | Vladimir Vukicevic — wrong condition check in nanojit with qjoin(qlo,qhi) | |
ff04efe8e91d347238f31a21a2e08119d07bb39a | shaver — re-merge from mozilla-central for post-freeze backouts | |
89e8d4741fa6e8fc54b636f3f7a457bad85f2b46 | David Anderson — Fixed typo that broke the tree. Sorry! | |
a9f2d947550b544c6c8b54b780f5ab8590af4ed9 | shaver — default to non-verbose for DEBUG, set TRACEMONKEY=verbose in env to go verbose | |
5e68a48895e8c3367249f3451b42ddc6005987d0 | David Anderson — Another portability fix. math-spectral-norm is crashing in the test harness so keeping 64-bit JIT off (everything else works). | |
4b018191e4d10cdd66cbbb58c2e3577c6c3ed699 | David Anderson — Merge. | |
217396e56216103584de6be414be0dc497213b92 | David Anderson — Merge. | |
c02916331f8b96ed51c51e732e57185ebbfb7245 | David Anderson — Merge. | |
6c6734d3095a64d9d78b5960891c018ca66154df | David Anderson — More AMD64 fixes (release build works now, and fixed verbosity bug). | |
08e1675310a9805b30572e4377f02c9c6eb7d71a | David Anderson — AMD64 trace-tests.js passes now (hacked in LIR_qcmov opcode, corrected builtin return types). | |
4b24cd03cdda3715a141e9ab1d5a72d54aa6763f | shaver — improve JIT-control pref naming, add one for chrome JIT, add defaults to all.js | |
53c8273602533d6cba68bcc9de66b3f2bf36806f | shaver — merge from mozilla-central | |
c8a473e77591cd71dfb8687ea32bc623189515c9 | Brendan Eich — Add str + obj concatenation for 3d-raytrace.js. | |
4ef12bfb79480fb4520b76d7ecb291cd291bcc1a | 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. | |
5a34f3b19521d97a89fa6bcbe424b2b4fb7dcde9 | Andreas Gal — 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. | |
45af6228d6fa990a59b3d68fdaf71280ba91ab95 | 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. | |
34b597daedf940f5252ae7df93ad1c68796e3e4a | Andreas Gal — Always blacklist the first fragment in the peer list, and blacklist if we see a loop that is not type-stable. | |
9a1eb24729628bb9991e1a9fc3b463f214333f8a | Andreas Gal — Don't build trees inside tree calls if no suitable tree can be found (for now.) | |
50a8c7f0e0443eb98d97359161540ad3d8ceff6c | Andreas Gal — Improved debug output. | |
39e2365052c6870d6654f0b6b41ef3f02cfe40e2 | Andreas Gal — Add debugging facilities for typemaps and fix sp_adj calculation for tree calls. | |
3eb15b6268b6ebd18ef5308e13fe2e9ddbffd0e7 | Andreas Gal — Support multiple fragments with different entry maps per PC location. | |
a8f3d5e798d8509bbd97f405bf5dba356fb94096 | Andreas Gal — Clear out the list of global slots when the shape changes. | |
ab683b57667d8e0a280e8c7b4f009a0d9acfc0ad | 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.) | |
24b0a322e1630a92216114b9bb8cc450aecb1c2f | Andreas Gal — Merge. | |
fca2a565f6c1876f937ce23671af4512366f4de9 | 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 | |
d1323b231ea802dd5ed061d91b60a0a0059ac1b3 | Andreas Gal — Add a global type map to the monitor and rename slotList to globalSlots. | |
d24800fa1c622016a406a968b0783709bec24df7 | David Anderson — Disabled 64-bit JIT for now, failing 3 test cases. | |
fbf9008c1766ca296c069940faebf0149da9892e | David Anderson — Merge. | |
f2733b1b17bfca22798467d10ddb03c9bcdd238d | David Anderson — Fixed codegen bug for amd64 64-bit binary ops. | |
3869eb3935df8e17bf878630e4b62df4817f7f7a | David Anderson — Fixed AMD64 accidentally treating the shape as a 64-bit integer. | |
718eba62955ec24281a96aa3d46061a1720bdd6a | David Anderson — Merge. | |
a54d34ab5bf70cc6dc65e7e17ce84260a375f895 | David Anderson — Fixed some bugs in the AMD64 port, still crash in 5 sunspider tests. | |
8fdc2ff1bd9b153ea9414c81a955b5b6b41ddee3 | David Anderson — Added AMD64 JIT building to the makefile. | |
d2d90d339c5b4128371edf9e39ca760df49c3e55 | David Anderson — Improved AMD64 nanojit compatibility. | |
08886183ad42b3f9aafee4aafb6001d87a326a1e | David Anderson — Fixed compiling on AMD64. | |
1e456b6bceae58a19b41d09532e1ba6387ba397f | Brendan Eich — Back out changeset 1d0574db8320 (for 450997), it was based on a bum steer. | |
bf96539355bf5bff8e91d6ef074d7b4fd0e056a5 | Brendan Eich — Add a final js_ReconstructStackDepth assert after setting fp->regs->sp in js_ExecuteTree's bail-out epilog. | |
5f757786525eca4074a9e94d17a1d885e98adbb0 | Brendan Eich — 1. Fix json2.js (it crashes later, another bug) to restore a non-empty stack for a call with missing args after a nested bail-out. This involves changing js_SynthesizeFrame to return the number of stack slots it reconstructed that map to native slots. It also means not counting the missing args in the spdist uint16 pushed onto the state.rp stack (this was the root of all over-counting evil, for this bug). | |
ed59b903cacefe21c464f2c0a0f8d5107f300c29 | Brendan Eich — Cosmetic cleanup. | |
793e5bc71728a9ace15f8221b1ec628b815739b1 | Andreas Gal — Add a place to store the current shape of the global object as we add slots it the global slot list. | |
8c2ccabb8b622cfb65be694f79435c85add21e4a | Andreas Gal — Add a global slot list to the trace monitor. | |
21f26b41d7e3e73eb75bbc366e369191c42b798c | Andreas Gal — Merge. | |
1afa227e9b73020c6bf70287b6280381f90fc418 | Andreas Gal — Make sure to trasm the vmprivate of dependent trees as well. | |
069a7b6f1012f58808f2370cc3002e46b738a0ce | David Anderson — Updated nanojit for the AMD64 patch. | |
1d0574db83207d6850eef938288142212b0aa110 | Andreas Gal — Tighter fencepost in getTop, don't overshoot the stack (450997). | |
98adb85d1f02abbb33bab45e45eb51ddfd28e799 | Andreas Gal — Doh. Deep bailots are pretty rare and js_SynthesizeFrame already uses the fairly slow js_ReconstructStackDepth helper internally, so anotherone to avoid counting stack slots via spbase can't hurt. | |
48501e6d56bcc4238beedfe0cba4df3254bec7ed | Andreas Gal — Merge. | |
16ae20bd96ae0c0fe121dcd252adcdbb78398ad4 | 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.) | |
cda21775af056796c734c545ac5668f1e9b6fd49 | Brendan Eich — Fix missing paren in comment; also s/scope/frame/ in same comment. | |
6c1e358ce7a913f529a9e968b2adc28c5e9cff48 | Andreas Gal — Extend the globalTypeMap import(), not in the caller, since we missed extending it in case of re-reading registers after a tree call. | |
629fae5234d803ffd3754abc5d38d39bcb78897f | Andreas Gal — If RecordTree is triggered, create a new peer fragment (or recycle and unused one) if we already have a tree for this location. | |
c874c018538966ead950158c0b3190b7ea11de1b | Andreas Gal — Try to execute the tree first, and if that fails worry about counting and triggering compilation. This speeds up trace activiation by a tiny bit, but makes code that we can't trace a little bit slower. We use a micro optimization to bypass the call to js_ExecuteTree when its clear that it wouldn't find a tree to executed to reduce this overhead. This change is necessary for multiple trees per bytecode location. | |
2ad80e2e356d27296fa7f1b99e96da182975222c | 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. | |
c651b4e5c5284c0c1ab77bc8bc72165a2dea39aa | Andreas Gal — Only capture the shape of the global object in a tree once that tree tries to access a global, and only check the stored global shape in trees against the current global shape if the tree actually uses globals (which also doesn't trash trees when global variables are added if that tree doesn't actually use globals.) This is approx. a 1% win for sunspider. | |
c072d3b7af1f236dd48654804dd14f0c6eb807b3 | Andreas Gal — Change interface of js_ExecuteTree to indicate which of the peer fragments it really executed (since we soon will have more than one tree that could be activated for that particular bytecode location). | |
a5e518ad4bad36185331e9743c3b3e74be91b0fe | Andreas Gal — Add a ->first pointer to all fragments that points to the first fragment in the peer list. This is the fragment we do JIT throttling/blacklisting on. | |
98d0efcc53566f5cfc446798747f05a889d55cde | Andreas Gal — Append peer fragments at the end of the list (so f->blacklist() always counts against the same fragment). | |
52e95353080a9db72d3762a7c72d818b04c3279c | Andreas Gal — Add a simple script that calculates an aggregate score over all tests running with the jit in t/*. | |
2161a2f00ce89eb8ce93281ca8a38d51f4836fa6 | Andreas Gal — Merge. | |
bfcedf35495326f052a253dea7e9cb35fa0d5b92 | Andreas Gal — Add the concept of peer fragments to nanojit. Each loop fragment can have a number of peer fragments, which we can use to have several different specialized variants of a loop (i.e. for different types). The makefile doesn't pick up the change to Fragmento.h, so make sure you clobber by hand or you will end up wasting an hour of your life in gdb (like me.) | |
8b85cfd576cdbef1c51c9f89c5073187748b4f69 | Brendan Eich — Merge. | |
0896bef8bbe014a3d3343949a1c1fdb02ad38619 | Brendan Eich — Update stale comment. | |
735b68bb8168dfdf576c6ac1f6d67eabc4014164 | Andreas Gal — Don't allow inner trees to lazily pick up any globals since we currently can't handle that. We already ensure that we don't inline trees that have globals. This patch merely makes sure they don't get some additional globals on the fly. | |
6c6266b8311c947a864542560bcf5118a51b36e8 | Andreas Gal — Similarly to attaching new branches to a side exit, we might end up with a partial type map when exiting from a trace during tree execution, so make sure to merge in missing types from the tree's entry map in this case as well. | |
353145f415a56028175915f128c448e6ee2e0780 | Andreas Gal — Add test case for type map merging (450535). | |
cad6ca9a1e79467153c74a95fd660743913b7a1c | Andreas Gal — If we extend a tree along a side exit that knew about fewer global slots that we have now in the tree, merge in the types for those additional slots from the entry map (450535). | |
ceab60d4090c0486b183aaefbbd7b301dccecd1a | 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. | |
7e0cc7db204a4c650cf0893932fdef8af178f9e4 | Andreas Gal — Enable nested trees by default. This is going to be exciting. | |
9979c1aa2bf236914c3e449c9a2001257dc6c1b9 | Andreas Gal — I honestly to god don't know why this change is necessary but with this nesting works now for SunSpider and all of my test cases. The stack layout calculation needs some reviewing, seriously. | |
50ec7d5955a87a9298a2b1905001d74ac3f651e9 | Andreas Gal — Merge. | |
7c90cf9d9b0e923d059b7a87ef9b3ed5376e8b9a | 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. | |
84b79f7695c2134bbe6c37db2277a2b6b9f04ec0 | Blake Kaplan — bug 450765 - Fix aliasing in LIR.h | |
d5ab7f8a70d6c148d0c44f96aab3d6a5cf061658 | Blake Kaplan — Merge | |
3eaa6a428d520cbbf6995953ad8d4b9ee5f126b1 | Blake Kaplan — bug 450529 - pass pc to String.prototype.match so we can avoid unnecessary object creation when tracing. r=brendan | |
dcb36cfe5cb18f63f1609195558ac117272af495 | Blake Kaplan — Don't just undepend the string, canonicalize it as well. | |
2d22af0171bb4b328ca5cda12b01db6bd8066fb5 | Andreas Gal — Merge. | |
bce09f729d1d011cdaca8cfe91dd4a220052e15f | Andreas Gal — Add callee onto the stack to make sure our native frame layout matches the interpreter during calls. | |
3129ba8fc8fb9c01f17460c25a891275f3eb77c4 | Brendan Eich — Fix gc hazard just introduced in fix for bug 450538. | |
c8a21175816c1c1f6627e44077ca02cb276a51da | Andreas Gal — Merge. I love hg. | |
0afba892607e637848ebc926fdaf8b5bee77b898 | Andreas Gal — Cleanup stack adjustment during tree calling. | |
c1a9feee56ac678accc343257ff6fbbe75d025e5 | David Anderson — Merge. | |
db9b0b847f8a3716d2d9ac8d6b1d78ee0b3ff81a | David Anderson — Fixed js_ValueToNumber overwriting values on the stack as different types, causing the exit type map to assert. The breaking conversion was JSVAL_VOID becoming a NaN. (bug 450538) | |
f9eab78548c66be662432bc14ab7f51e834e8c01 | Brendan Eich — Consolidate tracing-out-of-js_Interpret abort code at bottom of js_Interpret. | |
2dc67b0bcaad2db370b68856e4004b3dd8cd4801 | Andreas Gal — Make sure sp points to the native stack base of the inner tree when calling a nested tree. | |
b348da0a1966af22adcc9c47d26e096365d7a993 | Andreas Gal — Merge. | |
afb6940312f13e4f3869d073009acd51de5fa88a | Andreas Gal — Don't over-compensate sp_adj (exclude the callee). | |
a3204edcb26d6584424bd4e846e6beca57f58edd | David Anderson — Merge. | |
0e382636c8c517ef3eefa06b873ba42e35919644 | David Anderson — Fixed recorder not aborting when leaving js_Execute (bug 450532). | |
5c00030c41898d1c1f9e09cb1b43e6c284da2a54 | Blake Kaplan — Avoid the malloc altogether if we're going to use a unit string. | |
49ebf5338aae652ce674f4f8f01784676baff256 | Vladimir Vukicevic — b=450176; trace parseInt and parseFloat; r=gal | |
aec0cf8db20c1a13d2e28e9d99ab5af97534fe57 | Blake Kaplan — bug 450641 - Add missing JS_free call. | |
8a48902b37536cfb441ee74c0dd5124d9d807eba | David Anderson — Fixed the known native arg handler from accidentally using 'continue' to break out of a loop one level higher. This was causing crashes when the arg didn't match the expected types (bug 450530). | |
161cb76cb8f0e1d741ec1e0032ac46c4e7a220e6 | Andreas Gal — Assert on the recording table only if we have enabled the tracer (446551). | |
f80f08b0d8fca4e4fbf70f2b1ce48227b9aeafb0 | Andreas Gal — Write back outer tree frames, but exclude the current frame (which the next tree will do). This still crashes the trace-tests.js test case with nesting enabled and for the life of me I can't figure out why (try with TRACEMONKEY=nesting). | |
705f4818b9a2647a518d11d29a76a94d9a1d0672 | Andreas Gal — Backed out changeset 089406b2b0aa | |
089406b2b0aa42a38996f7c7beb406985bd1e658 | Andreas Gal — Add an explicit start frame parameter to the FORALL macros, which allows FlushNativeStackFrame to be used for other frames than just the topmost N ones. | |
7e3a88e4ce70014809195bba9f76fef9c87bd21d | Andreas Gal — Fix outrageously incorrect comment. | |
13dd79c7d3a8be255d81a24153e982bb2ba68edd | Andreas Gal — Added bitsinbyte-ish testcase to trace-test.js. This currently still crashes the VM in nested mode. | |
7202e02d323feb72c0d652ca6da98f8bcb0aaa19 | Andreas Gal — Merge. I miss CVS. | |
30d0d047be510f300469a8862de3dcf3edca6796 | Andreas Gal — Restore state of the outer frames in case of a nested exit. Should be feature complete but needs more debugging. | |
4872699c503400d6c722589453e76d31a407d6c9 | Brendan Eich — LOL ANDR3AS SUX0RZ!!! | |
5375ca6c1cfc9a0a71025b1bf0e544ce98129962 | Brendan Eich — MERGE LOL HG SUX0rz! | |
a7108427de3e55f120b5f2204c151cc792d50587 | Brendan Eich — Abort recording if unwinding from js_Interpret to js_Invoke and still recording (this can happen via fun.call/.apply). Also assert in threaded interpreter BEGIN_CASE and DO_OP (from END_CASE) that we either have no recorder or are using the recordingJumpTable. | |
78655198504628022c167e2ec057806a99c4e54c | Andreas Gal — FlushNativeStackFrame currently only handles the innermost nested trees writeback, so at least make it use the proper adjusted stack base for that. | |
df0ca7630874415cb040fe8af267e478ab509202 | Andreas Gal — Update inlineCallCount with the total call stack height, which is the sum of rp_adj and any adjustments nested trees added. Also make sure to read all stack adjustment information from the tree we exit on, not the tree we entered (might be different in case of nesting.) | |
57bfefe8dfc3f66251a0b52fa9c719a8c8296cd8 | Andreas Gal — Print relative stack instead of absolute stack address upon side exit (debug mode). | |
3b13d266b83b735bf3264c009c59bfba9088c7f6 | Andreas Gal — Added test case for nested exits. | |
f24fdeae617ba032a0066d95ee4651ec32c7e238 | Andreas Gal — Implement nested side exits. | |
58d063dff82eadb93211cc48e054dec0acd5e4f6 | Andreas Gal — Merge. If I had a cent for every merge. Sigh. | |
f8033bfacfbbab4a70cc0f5c616656a412c830df | Andreas Gal — Reshuffle code lines in the side-exit return path (do asserts closer to the GlobalFrame writeback.) | |
8c2a3e462e6c807154095fee051f92205e4df931 | David Anderson — Merge. | |
4d81cfd3f6e4bd20bc76626faffd39ff770c629c | David Anderson — Merge. | |
97498b23f3602fba6ae4128551ac15835d5aa5a6 | David Anderson — Fix from brendan for propertyIsEnumerable having an inconsistent return type. | |
3f7b8558a1a7ca6d5f0162dcd0d33e94240502fd | Brendan Eich — Set rval_ins with initializing=true because nothing will get the callee, so the tracker won't have tracked it yet if it's in virgin stack. | |
baac751c4bf54243cdeb047afe121381b9a71a88 | Brendan Eich — Forgot to string-tag before going from atom to jsid in two builtins. | |
e4548362fa74e5449c76dcda675959130cf8f863 | Andreas Gal — Merge. Lame. | |
3b57c7a92f7488b0d268551e3549cde3716da774 | Andreas Gal — Add nestedExit to InterpState and comment its fields. | |
9379f9e865f7ff5edaed99180ee2bd885d8689c2 | David Anderson — Merge. | |
3794c4f36b2737c631631b75beb5647a7fbc6420 | David Anderson — Merge. | |
8f3c8fb8c7162c8eac0c088c8be1e49cd894e2db | David Anderson — Fixed from brendan for counting disparity between nativeStackSlots and FORALL_SLOTS_IN_PENDING_FRAMES. | |
86ef943700acb41357f8accc14842784201388fe | Brendan Eich — Fix prototype hit case in prop to advance obj and obj_ins up the proto chain. | |
d96e0ab82bb857240580ce26f88172477c075eb5 | Andreas Gal — Don't print LeaveFrame debug info when falling out of the global frame. | |
f603e7555aefded72dbfd1842476e20bcdeec8c7 | Andreas Gal — Merge. | |
55d6dbfeeab0582e354479ee3b053141484f9f34 | 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 | Andreas Gal — Merge. | |
1f1b2ed3a1692925802d1c958d1b6e246c69084b | 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. | |
ad0aef3a1a4256a4a1e58bfd03b811c127a45544 | Brendan Eich — Fix bogus varval assert. | |
b7199324e019798953cd243e7c5c73677eddcf1d | Brendan Eich — Major and winning overhaul to for-in codegen (mad props to Andreas for advice). | |
7dd001982f576277d739c45206b3f84b9232c074 | Andreas Gal — Don't call inner trees if they use global slots since we don't support those in inner trees yet. | |
a60b9a521289bcc62389ac5d4adf5ee1761b38a6 | Andreas Gal — Merge. | |
3c864e120a1e999fa905d81c5ab61995c6f97971 | Andreas Gal — Flexible call stack allocation with proper guarding for call stack overflows. | |
bc8a7ed3e87a6367f38f2f56a06375ce086bd1be | David Anderson — Fixed ifop predicting NaNs as true when they should be false. | |
80b14ab9032b6a6448bdbc7621cf2a6f3112fb58 | Andreas Gal — Assert on bogus always-exit guards. | |
c92d3a022fc45ad8f4b2959303996d634d790548 | David Anderson — Fixed ExprFilter emitting corrupt LIR when reducing guards. | |
c4a4d3b58841c608a166665744d8dd75f4dc88c1 | Andreas Gal — Merge. Nothing to see here. Move along. | |
1b635268db9105907d457b5e8e57f7db363b55a3 | Andreas Gal — Blacklist a trace if we hit a global shape mismatch. This makes us suck less on date-format-tofte until we find a way to fix the property cache misses. | |
96f01bb77cf0eebe2ed687345dddb5e27ce1e7a1 | Andreas Gal — Only trash the tree, not the entire cash, on global shape mismatch. | |
4300413499aa57e6b9476781e4e3219d009bace6 | Brendan Eich — Fix deep for-in loop bug (450334). | |
306f03d5486beece02f1c7414722540163368336 | Brendan Eich — Add missingArgTest2 to cover the nativeStackOffset bug fixed recently. | |
3664167dde3bb9a7005c1ac5563cc41f66a87b6c | Andreas Gal — Merge. | |
dd8d7205f3925052dda9157476ef3ca6ab076fe3 | Andreas Gal — Don't cache loads in import into the nativeFrameTracker, since when coming back from a nested tree we re-load the frame state into registers using import() based on the called tree's state, which pushes loads into the nativeFrameTracker that are relative to the inner tree's call depth. Only cache on writes now, which should be always safe. | |
3bf5ae02c28d450cbf5ee44325dde6758e2ba64c | Andreas Gal — Merge. | |
099e3adf99e9cd980ff53e6a79d777cae998e03f | 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. | |
ed3fe7153439cc00146d5532bc34ef88a16e6145 | Brendan Eich — Remove bogus assertion. | |
6ac5f5bc87b914f3f167a4f7452d4d0e75c94d4f | Brendan Eich — Fix missing argument stack offset computation (in both places: FORALL_FRAME_SLOTS and nativeStackOffset). Clear missing args in nativeFrameTracker. | |
5817488e64d26a171cc14fb7756e794470d1a2e9 | Andreas Gal — Introduce a large fixed-size native frame stack and store its ceiling in state->eos. | |
c0da9464cd2c230fe6e6f0facc1d9a91d5eb08ca | Andreas Gal — Merge. | |
966c38b7fc2a3b05315f2f427dfb89dafec5c1d9 | Andreas Gal — Hands down the hardest bug I had to debug in TM so far. Make sure to read back any registers an inner tree might have changed before writing out the typemap for the nested_exit guard, otherwise we might be pointing to old stale pre-(inner-)loop state and pick an incorrect (in this case too narrow) type. fannkuch=2.8x with this. | |
e36360dacbd3498d39e4f6cf9f7ad106bb7b73a9 | Brendan Eich — - Add String match and three replace overloadings, and allow known native matching to continue in search of exact match (not best, and not abort on first mismatch). | |
3d7ea778485f7d3fa75e6e2fee8a37d5b44c82df | Andreas Gal — Merge. | |
73b7992a08762866dcf44dc6ccea7cd02ae8eb47 | Andreas Gal — Add constvalp and isconstp to LIR instructions (nanojit). | |
03b4f173444079cc54e9c4c3166647d32177c152 | Brendan Eich — Use aobj consistently in test_property_cache (450317). | |
bd663de0b35b041174cb8a263bbe4671be6b7fd5 | Andreas Gal — Merge. | |
2c0bb8fbe19a93952f72c8d1f6441e16b301893d | Andreas Gal — Enumerate missing argument slots on the caller's stack and initialize them to undefined (450304). | |
57e831c53db3f330bf9cb60466bf9a062c1c3025 | Brendan Eich — Fix shapelessUnknownCalleeHelper. | |
ca3d2e4e2fa42a2302ef1a955e7bd80e6a873cd4 | Brendan Eich — Merge. | |
08027c99382dd5e3942b9aec28e6cd62134a5472 | Brendan Eich — Fix annoying warnings, finally. | |
78233a72b88292a9934ffb4675dbd7e451345f8c | David Anderson — Added NaN test case that fails when jitting; currently looking into why. | |
997a24ba559e7dd12be849d766d736a13586d4f7 | Andreas Gal — Merge. | |
cdda9caf1fb20945587aec6222162c0a7ea02dc1 | Andreas Gal — js_obj_hasOwnProperty is supposed to return a boolean but was incorrectly generating code to return a number, resulting on a failure in the boolean comparison due to an unexpected i2f (450304). | |
4725b3947a8638175847c9a2598f55d271a8a9f5 | David Anderson — Merge. | |
86694968f80cf2afe1284dfd19498d083f29309b | David Anderson — Only use fastcall on x86. | |
599972fc98e3d2d3556d72ff4e2d4d35448d36f4 | Brendan Eich — More guard argument formatting. | |
e04cf3fa52b89b34fca696caa2cc34c0225c9e00 | David Anderson — Merge. | |
5a93ccf588fda368fe3ed7532861c3b09f13c356 | David Anderson — Fixed nanojit using a variable before it got set (verbosity mode only it seems). | |
49bb96df917845a202b404d13db9b95a0f69a45c | shaver — fix !JS_TRACER build | |
845298f0463e9795d5a49a2769112e01ef928126 | shaver — add way to explicitly disable tracer for easier testing | |
eeae456f2a7cb867412fba46b6e3efd387a36727 | Brendan Eich — Consolidate common name (global slot) addressing code. | |
3528e61059a00b4ca3a532e710e5f25ec9e143ed | Brendan Eich — Put trailing args on their own lines when they otherwise would seem to associate with a nested call in a previous arg position. | |
a1964885bb17c3a16432c704ad2056b09604122f | Brendan Eich — Merge, plus ((void)0) parens. | |
79c44c277700701a357491a6cb5956940d34f431 | Brendan Eich — Fix goto over init whinage. | |
9069d1450c09b3e90f7b6312fd0150d22625e2b3 | shaver — fix build for !JS_TRACER, both threaded and switch interps | |
edd37d2171aef85890f33fd775f69619acb31298 | shaver — guard all of jstracer.h against non-tracer builds | |
aeff6516124ca084099fe2e10b1fae61e786d269 | shaver — NAMEINC, INCNAME, NAMEDEC, DECNAME | |
20f1f3c72ae7049f3f4b2c40d3d4f6000cd48adf | Andreas Gal — Merge. | |
54dd8d960f55efed57c4350bdc904a5ac1ef1d79 | Andreas Gal — Don't read type from typemap if we already have it in a local variable. | |
282900af8a3abc7dffe4e194df29855fbd85c323 | Andreas Gal — Don't re-record traces over and over in case of excessive type mismatches. Instead, blacklist the fragment and slowly back away from recording it. | |
39133fb84172076fff1cfc1bef95598c737a0be3 | Brendan Eich — JSOP_FORNAME. | |
630c5664ad695bb49154d762ae6d514c75e58154 | Brendan Eich — Factor forInOp from JSOP_FORLOCAL, use it from JSOP_FORARG's recorder too; tighten up JSOP_SETNAME. | |
98702deb7b6235b3a5c26f1c42edabe16774bc71 | Brendan Eich — Fix some comments and tighten up assertions about block scope (mrbkap please look). | |
7e21eb642fdff9f836019e0ff0f8c43ae3a34e5a | Brendan Eich — Comments for JSOP_{,STRICT}{EQ,NE} about the layering and constraints on evolution of the non-strict equality ops' recorders. | |
9e6d84330f65e0e4b9eddba2226ca81067e346ad | shaver — cmp over number and (string or bool or undefined) | |
60133b4dc0e205c6141f1829fe516f82621a4f71 | shaver — mistaken relanding, didn't track merges well enough | |
0a7e40c67ad9a3f8419f15af8ab88890f44e1c45 | shaver — reland eb01b1d55d9b after the mismerge | |
a4d7fcc74fc5e23f4d2f87e118cb7aa08e494201 | shaver — reland 3ea1e1317707 after the mismerge | |
7585dbbe9e74078f1a34a3c3e63f8c19fc380b5b | Brendan Eich — Restore lost shaver rev 0e50c89c476b -- how did that get lost? | |
efd75c231a4c1398eea7087660112c1cb3112ea3 | Brendan Eich — Dependent string test. | |
73c94dc3b426d42b74f8c9e884e841db8f2d55da | Brendan Eich — Merge, sigh. | |
2c554a4452e8ec026b0e1eab6a8c49fa8557d519 | 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. | |
83b0ca5bd397db48cb8c53c5151e00e5c670bf6b | shaver — JSOP_EQ/NE for objects | |
e644869356cd97ef77858c41f692aab309cf50bb | Brendan Eich — Argh, I hate hg. | |
f5ab9713d3c241ce8c2ab5c4598aa6cd6fbcc3bf | Brendan Eich — Merge, in the name of all that which does not suck\! | |
f8e65dd581cb6c0f9880da3af62a370f3daaaf05 | Brendan Eich — Merge. | |
76b168cd9d9c8e0374d5d97036a5b865cb131f0b | Brendan Eich — JSOP_LENGTH handles dependent strings now. | |
20baaf76861bbdac91c6a0f7220435d483b8ed45 | David Anderson — Merge. | |
ffb6ef9cdb211d4ec48d29007cc3b47072749207 | David Anderson — Fragmento lifetime is now associated with the thread/runtime instead of the context. | |
0e50c89c476b6e62ae6cd4bae3af0cc6c8665d7a | shaver — implement JSOP_ADD(str, num) | |
3ea1e1317707d67d753fcb1420cf54f9f0a542b3 | David Anderson — Fixed some explicit deallocation bugs that cropped up running in the browser. | |
972973dca4d62813c8845384d8e2d1f34acb56ec | Andreas Gal — Merge. | |
eb01b1d55d9b9d93b0f91ed8ed5397e4af840044 | Andreas Gal — Trash tree if we see an obsolete treeinfo object on record. | |
71609c20f865fd06bd3433eeaf5a26abd46bebd0 | Brendan Eich — Merge. | |
cc72e295f3af9cd667168eb936c24c5169c54f4b | Brendan Eich — Object.prototype.{hasOwnProperty,propertyIsEnumerable}. | |
36b68e56930eba9e0afa135380fef5e1c3eedca0 | Brendan Eich — Handle multi-level property cache hits; put BRANCH_EXIT on its own line so it stands out as the third param to guard in ifop. | |
65a36bfb16bf138ffbea2c237e2c1f1fef0cd547 | Brendan Eich — Make Print a fast native. | |
6a74c06b539a0909af31a13e6f5e2bf605565a36 | Andreas Gal — Don't try to delete names if we are not building a DEBUG build. | |
1b2912dc985eb2c1fdb1015f75232cdf2ac6ef19 | David Anderson — Merge. | |
b37e17ceb2a9d871d7160dcccc58a515e22d4ff1 | David Anderson — Merge. | |
f146f0ca59341c301ca8b7e190dfe2f9d3a90bc4 | David Anderson — Added explicit deallocation (bug 443500, r=gal) | |
3470c59c9942327df762137cb83156437adf2b07 | Andreas Gal — Support non-flat strings in Any_getelem and Any_setelem. | |
82896022e2950544e3bb5c7ccc48b26649d3a911 | Andreas Gal — Remove obsolete Tests.cpp file. | |
aba124b6d799765455387f9f80a257b11354e907 | Andreas Gal — Remove default parameter for guard, specify MISMATCH_EXIT explicitly. | |
90bf295e1abd86fa4e778d6e34d477aceed7c6b8 | Andreas Gal — Remove dead code, add a debug printf. | |
3bb3e3417913ee0e3f1963fb2f3897beb0a223cf | Andreas Gal — If we get a series of tree type mismatches, trash the tree (and all dependent trees in case of nesting.) | |
2470044a1a86cffd9067711072876834637b5ebb | Brendan Eich — Fix FastNewObject built-in to create dense array instance with its own map. | |
fe7b3611e9c4b1eb178a1a24210fe544135700b5 | Brendan Eich — Beware macro argument multiple expansion... | |
647a2d8045fdccca854d042a0187da579040d257 | Brendan Eich — Merge. | |
167ade86d28e45f6161496ceaff224c07dd21077 | Brendan Eich — Try fixing LOAD_INTERRUPT_HANDLER based on Andreas's patch. | |
536fc216355a700a4dfe03342c3a0145f5f20f19 | Brendan Eich — Match JSOP_NULLTHIS up to JSOP_NULL special cases in the decompiler. | |
15d1cccb600f379affab4c50691ab0c8efc7317e | Andreas Gal — Don't try to access the name of arguments beyond nargs (r=brendan). | |
dc1bf0cbd1b65886db14f388ffb0030d162f368a | Andreas Gal — Merge. | |
bfd442d5f0cd0a860b9aa2019232b89072f65ad9 | Andreas Gal — Avoid goto across initialization of sprop2 (446508). | |
d83bcdfdbf7c8d443eb464d96a16975aef2b9faf | Andreas Gal — Don't use asprintf (446508). | |
718349c9238e21f3149a8453bfe16f1adbdfdae3 | Brendan Eich — Rework GCF_DONT_BLOCK to be cx->gcDontBlock, assert it's set, set before entering trace and clear on exit. | |
2145c9d9a5a5018f4a143ccb189f3d6f83280757 | Brendan Eich — Make js_ConcatStrings JS_FASTCALL and use directly as a built-in; remove gcflag param from it and from js_NewString. | |
a68d753df8111dfb0817db03082c628fef37decd | Brendan Eich — Unregress FastNewObject builtin to handle user-defined constructors (note to self: run tests before coffee...). | |
be2ea063790533e98a4a88ae2172f44109294be1 | Brendan Eich — Fix ASSERT_VALID_PROPERTY_CACHE_HIT pcoff argument (my bad from 887fc4facdeb). | |
a6ec5664777b3694c079cdb52a3f04b40fdd3091 | Brendan Eich — Back out extra gcflag param change (859b9a23adbf), I set bad precedent and will back out previous such shortly. Want cx->gcflags instead. | |
7a9d86ec587f67e02bb2b0597b31cb9b800cd414 | Brendan Eich — - Trace JSOP_NEWINIT/INITPROP/INITELEM/ENDINIT, which required extending the FastNewObject builtin to create a dense Array or a new Object (easy to discriminate on the constructor function's u.n.clasp member). | |
859b9a23adbf9eb682c18c85a78834013d8b0d97 | shaver — extend js_NewObjectWithGivenProto to permit specifying additional new-thing flags (such as GCX_DONT_BLOCK) | |
887fc4facdeb31e19f61343c819f202cf541a9e4 | Brendan Eich — - Skip dense array object, try prototype, in all JSOP_GET*PROP variants, interpreter and tracer. | |
0723e7a5fd4cc1a7c5e5db861782501564e8a093 | Brendan Eich — Record JSOP_LOOKUPSWITCH. | |
bf212fa012b300c23f9ef4c8c9f3697827b025f7 | Brendan Eich — Use true and false for js_EqualString return values now that its return type is bool. | |
1ca3fd42ffef177d2d08121fbb108900497f6347 | Brendan Eich — - Fix shapeless callee guarding to guard on function object value. | |
80de104b69b27591d09ed5d9dbfaff3d092c675a | Brendan Eich — Reoptimize call and new based on shape guards and branded method-ful scopes -- no need to emit function-is-interpreted guards. | |
8b5dba9a8613e9a49a613f65399ab61642053738 | Brendan Eich — joinTest. | |
f3487192950fbe6d2e18b696921b9bbb64f0de84 | Brendan Eich — Add Array (generic) join builtin, plus (not yet used) optional this-class guarding for builtins. | |
698de77ed972416e87e4706e591971846cfff453 | Brendan Eich — Implement JSOP_OBJECT. | |
2479e8d30a77a7fe385b80225f5fba082da8d288 | Brendan Eich — Match native map guard specializations in tracer to interpreter, particularly to skip up the proto chain from a dense array in JSOP_CALLPROP (json2.js showed an abort here, pointing to the tracer/interpreter discrepancy). | |
e94e5a5eb08204ca1873591722778193f196e9bf | Brendan Eich — Fix JSOP_FORLOCAL to push false when guarded conditions are false while recording (449961). | |
4920eaced572295282be1484500cba0ee10a749d | Brendan Eich — - Avoid unnecessary FASTCALL builtin wrappers for existing js_* library-private or friend functions, which could be (and now are) fastcall (JS_FASTCALL). A couple of builtins avoid name collisions by using js_Fast instead of just js_ as their name prefix. | |
f9e81741366991654c9c5f40467dade2343e1cf5 | Brendan Eich — - Test JSVAL_BOOLEAN tag in TraceRecorder::record_JSOP_TYPEOF, assert no holes or other pseudo-booleans, to unify false/true/undefined testing. | |
8dfcda7e63b34c14e05114d790409f9b5b04289e | Brendan Eich — Restore C compilation support to jscntxt.h, used by liveconnect (only one file now: jsj_JavaClass.c had no need to include jscntxt.h). | |
7746c011a0a777d04df7bd53e5e785c7f40cd88e | Brendan Eich — camelCaps test names restored (NewTest => newTest, etc.). | |
4ffbe10ff3804f73654dbef77a46ff8bd7bdcc6e | shaver — JSOP_ANONFUNOBJ | |
f83b2d421fbc6bfd28b1a43b487caee427f995f1 | shaver — JSOP_TYPEOF and JSOP_TYPEOFEXPR | |
79b7c73bb4c65feb91b6404b1282e68a0a44d965 | shaver — Builtin for String.prototype.concat (single int-arg version) | |
116eeda87b141c87961f17b828a8bf78a67f7346 | shaver — Implement cmp for string-on-string. | |
ce02fcaa233d64b10c6eabd95e5e41bb14c069ca | Robert Sayre — Bug 449978 – TM: trace some more builtins for string-validate-input | |
cf052e14a8fcf22f5bc7b98e30a8e4e25fa7354c | Robert Sayre — Bug 449972 – TM: give xpcshell a JIT switch | |
537fe0d1d47e49e78300992adda8c6feff3b12d0 | Robert Sayre — Bug 449666 – TM: Assertion failure: JSSTRING_IS_FLAT during trace recording. r=brendan | |
b18239862871eb89e92289a43e42325cb64481ac | Brendan Eich — Fix obj2 typo, meant obj (obvious use-before-set, sorry about that). | |
9ff59eea66b99083dffafae1c01e86b0c643977d | shaver — restore preference for getarg+length over getargprop | |
736964049d9b0c45b0d23dd430c81971b41ce76f | shaver — improve naming of anonymous functions and excess args | |
9be8a9e7c1a23588bf9c4b5f837edcf895ac54c9 | Brendan Eich — Prettier spacing knownNatives table. | |
30360335e75c1f7fa63f28cfce4a4236019f86e8 | Andreas Gal — Merge. | |
34d6fe449e804723ea7f9e00ca5b9c4eefe9fc97 | Andreas Gal — Add an assert to protect against nested exits (not implemented yet.) | |
547989cb40718748efb78e0fce9b5df742bc3738 | Andreas Gal — Support calling of nested tree from within inlined frames. When we call a tree that tree expects to be the top-level tree, which means it assumes callDepth=0. If the call of the tree is within an inlined frame, thats not true (callDepth > 0). We adjust the native stack pointer accordingly before calling the tree, and then restore the value of the stack pointer after the call. Fancy stuff. | |
72600789bcb5bede25d2d6a71983d3453d60bd98 | Andreas Gal — Remove ip from InterpState. Calculate the new pc after a trace side exit relative to lr->from->root->ip, which also works if we side exit on a different tree than we entered (which can happen in case of nested trees.) | |
b5774531645c940a7281cb9bb611ef9e3f9b1ebf | Brendan Eich — Merge from mozilla-central. | |
905b652d020130401fcfc6467886039175f5ba5c | Brendan Eich — Merge. | |
6926240f694dd0bc4736137c93b9e5493072c238 | Brendan Eich — Guard against shapeless callees, with tests (more to do here, can't break the unknown callee case yet, but it should be breakable). | |
ba3f7041b98eb57323a82df86a969b62c6e7cb00 | Brendan Eich — Merge. | |
f180eba5b24751c2ab13e42c337f950d33a3f152 | Brendan Eich — Get operator new on interpreted functions working, along with JSOP_SETPROP on an unmutated object, or one of the right shape but where the setprop is adding the next property, and it's not in the object yet. | |
d2282134b40679c8a4a5f1e248f4ff07afdc0f5a | Brendan Eich — Better idea for avoiding level-1 property cache collisions. | |
66d31fbc85d39ddf4361060c74775bf7a93c1d8a | Brendan Eich — Improve first-level property cache hash function to avoid collisions in linear sequence of setprops. | |
2960d21c2da4fb419301fb878f574f8e89e7af5d | Brendan Eich — Fix bug 449627. | |
af2af6f68095b78a2350f2af270e21f5d7f0f58e | Andreas Gal — Add very preliminary nesting for trees. This is disabled by default. To enable set TRACEMONKEY=nesting in the environment. | |
6f5b4c7001c7c5d95b37c25af1caa76e39071a36 | Andreas Gal — Don't activate a tree if it has globals, since we can't handle that yet. | |
33e1cceddcd721421eaad6139954514574315771 | Andreas Gal — Remove tracking of outer trees and merging of globals since globals will be maintained centrally soon, not attached to trees. | |
8e646ea0d669b9d8cbbf2c868417b9d035ea94c7 | Andreas Gal — We don't deallocate JIT-related data structures when the JIT is shut down. Add a TODO for this. | |
73bb8806ce070943b6573460b913f58ac87985bb | Andreas Gal — Hand the script in when updating the oracle regarding global variable slots even if we don't use it right now. This will be useful for caching information across runtimes. | |
2caa960a08a1136cb148bb0918d419dadab32990 | Andreas Gal — Use a typedef SlotList instead of Queue<uint16>. | |
57b1ef33cc9934faff17e10b1731cb471197803d | Andreas Gal — Teach typemaps how to capture the types of all slots in a slot list. | |
6d1976ec3645c423b6d26771021e07fdf5b12f34 | Andreas Gal — When merging globals from inner trees to outer trees, make sure to push the expected type upstream as well. | |
29b121b064bf4a1426655fac1b30b06447f23438 | Andreas Gal — When we trash a tree, we have to trash all outer trees that call it as well. | |
3e533b098550327f89cf2f61c3f5d9a81edbee49 | Andreas Gal — Recognize loop edges that hit a nested tree. | |
3ad06f79570ce9f3806e82c6eae08797de81279d | Andreas Gal — Fix typo (missing memcmp in statement). | |
cd85328121b9d81bc4927cdde4ffa4a3955b486c | Andreas Gal — Remove type-map hash code. A direct memcmp seems to be faster (probably some SSE magic behind it in gcc/glibc). | |
07a7548b931e08a399446d52ad1d611636782ca7 | Andreas Gal — Factor out the code to capture the current stack type map and move around the type map method implementations to make sure they can see the FORALL macros. | |
da30b17d58e2758c83aaade678f7a9aea504fef2 | Andreas Gal — We expect no interned globals in a new tree. Assert on that. | |
bfdaec7b1d5245764a0d315ea5e45de86c99b381 | Andreas Gal — Merge. | |
d80c57622e6163932f383ebd21cc4ee5887d2154 | Andreas Gal — Always trash TreeInfo when we recompile. This avoids the much dreaded JS_ASSERT(insInt32) errors and we can do this now because the demotion information is provided by the oracle and no longer stored in the typemap directly. | |
b9e1f4a21962d7d3a4a20662e08a88392b666613 | Andreas Gal — Use an oracle to predict when slots are demotable. This allows trashing the TreeInfo* object in the root fragment more aggressively. Rebuild the stack type map at every compile to avert type map mismatches. Purge all global slot info when we re-record a tree. | |
c1470ee6849fa0b1791470f550f944f3072c8398 | Andreas Gal — If we run into an error during compilation, blacklist that fragment. If we run out of memory, flush the cache. | |
919f8fb2ba64c023f63f2d4dcb285654cb80eafe | Brendan Eich — Don't fail to flush cx->thread's JIT cache if JS_THREADSAFE. | |
2504d3a10bd5512192a89a3c20ee6f6b99fb2806 | Andreas Gal — Flush JIT cache for all contexts. Clear nanojit error state when we start compiling. | |
f79dea34edb9568969dfc8f0a1ab4be849a6e359 | Andreas Gal — Remove dead code. | |
022ae0084f87cd9fb424bffa7175cbb87d144d15 | Andreas Gal — Add a helper to flush the JIT code cache (and the fragment lookup quick cache). On a global shape mismatch trash the entire cache (might be a bit overly aggressive). Similary, during GC flush the code cache. | |
23c3a6d97ea51d975605778c30649e7038c73909 | Andreas Gal — Merge. | |
7015dcfa3b822a7f7584d12eaf9b670576d04a46 | Andreas Gal — Tracker outer trees for every tree and merge globals of inner trees into all outer trees as we register inner trees with outer trees. | |
7e5bb36dfdaf5685e8e071edeb75665510afe584 | Andreas Gal — Add a contains method to Queue. | |
bf3737f40561a4775254c21b896bfacf4afaf43b | Andreas Gal — Fix misleading debug text. | |
ca8f57f8437300e1a749e9b0bafa7e32640987ba | shaver — add tests for missing and excess arity for trace-entry function context | |
1bceaaec1b3e08fcf24691735e67daaea47392cf | Andreas Gal — Fix tracing of code inside methods that were called with arity mismatch. | |
09a8a075d0c58d981c39f4be0dd58104c52af445 | Brendan Eich — Replace bogus assertion with runtime test for correct abort test (getter or setter, given sprop hit from propcache). | |
9b0853d93478c05bb5813b7fca85a67abaa36769 | Andreas Gal — Fix nonEmptyStack1 test. | |
01052828929392217f794650749bf8ca173a4d09 | Andreas Gal — Disable outerlining, to be replaced with nesting. | |
e16c289f107ffd031878eebf5ba95c8ba70a83b6 | Andreas Gal — Add a helper to emit a tree-call into the currently recording trace. | |
51f8776d87b1f2750079c00dbfb7c7ab3fe492da | Andreas Gal — Add CallTree builtin. | |
21d952ea53b7ea146df1fa7975dcbedae6db2946 | Andreas Gal — Make ip in InterpStruct const*. | |
715f85f6eb698a3ad8008a6d599b3846489f75aa | Andreas Gal — Merge. | |
ba723f04062864c5586975c80f730e6fc03cf187 | Andreas Gal — Cleanup stack offset calculation and eliminate the stack offset fiddling that was necessary for nanojit prior to adding the getTop hook. | |
134accb72e1db263ce79163789139ac8acb8cf1d | Brendan Eich — Add first non-empty stack testcase, which now passes (yay). | |
982fea14d3ad26eb258b8fb25db9698be96930f4 | Brendan Eich — Merge again, I lost to Andreas\! | |
1d143e8cbf311dd09ea1f6fc8dcd52c1f1a4a25c | Brendan Eich — Merge. | |
89624a4b87c3f906925f30c404455274d055be11 | Brendan Eich — - Add builtins to support for-in loops, both iterating and getting/setter properties by name using o[i] instead of o.p where i is 'p'. | |
e9adc99d55fcb3ab153f71c979c728fc9ccc2912 | Andreas Gal — Always trashing the tree on a type mismatch can't work since the first iteration comes in as undefined for loop-outputs and then kills the main tree that deals with the proper stable types. Have to find a different way to deal with this. | |
e95d8c0ea2abb676f797122393082cf5ed275b47 | Andreas Gal — Pull recompile flag out of the state and pass in as argument. Trash the tree if a secondary trace can't be connected to the loop header. This is very aggressive and might need more tinkering. Trashing the tree on every mismatch doesn't seem to work well, so thats currently disabled. | |
3e3c359c4ec5e181195e7fe6232b1f3d78e300c6 | Andreas Gal — Merge. | |
4f11c5c5f91881b17753450c691cb37506b605d9 | Andreas Gal — If we stop recording, immediately attempt to trigger the tree. | |
91c52fbe0b5b6e257a00724cf9891f688dc7b561 | shaver — add test for non-empty stack on trace entry (fails currently, but no longer crashes) | |
04fabf55e83e809f2b3b7bd372b5e21576389286 | Andreas Gal — Properly deal with trace entry with non-empty stack. | |
22c3d0b83ff8c941d6ee664c8079c92d2a6cdc20 | Andreas Gal — Split side exit handling from js_ExecuteTree. | |
eefad0738a209e558411e481f1c47f6ef7dc2fdd | Brendan Eich — Comment or/and test framework not being traceable. | |
1c9b430ed05e7c8accb424050c3d5363ce43ef20 | Brendan Eich — - Use JSStackFrame* fp over, don't declare another JSStackFrame* f, in the FORALL macros and clones (f is canonical variable name for nanojit::Fragment*, fp for JSStackFrame*). | |
d7f9dde8711458d25ab2115be8e6e70692dbd0f0 | Brendan Eich — Strength-reduced unsigned modulus in the fragment quick cache, don't use signed % which requires a branch and less-than-zero test. | |
798e0c2d58459135b04c08cc50d36997e6ec9802 | Brendan Eich — Misc. cleanup. | |
db3f29418137e8b2473a0e7b27c6f6eaf8b0441e | Brendan Eich — Use INS_CONST to addName a few lir->insImm immediates. | |
2504e9d0022a27c30ab658eb6eedd4210f5a0d20 | Brendan Eich — Fix TraceRecorder::ifop backward logic bug in the OBJECT case, and implement the STRING case. Add tests for truthy and falsy strings. | |
7f929e5d1e7630008c5ce7f8935ba7d2181d3969 | Brendan Eich — Fix return NULL in bool to return false. | |
b7918e1ba3c6da2fce868b2c73171b37dfc96e81 | Brendan Eich — Avoid JSUint64 (NSPR style), use uint64 (SpiderMonkey style). | |
cb14a0450087dc740be59222f0b27b677b4fe4eb | Brendan Eich — Restore lost or/and tests (hg strikes again, grrrr!) | |
760cbe78be8e06ca0faad5b80e34baed995be1b0 | Andreas Gal — Merge. | |
65a8e14beca4f31a1e369aafebe38451977db554 | Andreas Gal — Use quick cache to bypass fragmento is possible. | |
01677050142d7b44d16efc6c5af4ec6a880022d7 | Andreas Gal — Factor out most of the remaining code in js_LoopEdge into js_RecordTree and move the code to attach new branches into js_ExecuteTree. | |
909b44d62e0d2966f0940cec563ecb11f616b61c | Andreas Gal — Factor out js_ContinueRecording from js_LoopEdge. | |
8c0e0f1556835f5b4c506fd2d6e7f1bc018fc5f5 | Andreas Gal — Add a fragment cache data structure. This will be used to accelerate the fragment lookup during branching. | |
e9c52e02deabb438e711682cd71b5782c505f189 | Andreas Gal — Split up FORALL_SLOTS_IN_PENDING_FRAMES macro in a macro that processes a frame, and a macro that uses that macro to process all pending frames. | |
4cc5afb9a89d81281a22be9f6dda37548536d4e3 | Brendan Eich — Merge, dammit -- why did we pick hg anyway? | |
6fc4d7c697d950e9ba4e6775050ee97cf55c1a28 | Brendan Eich — Merge. | |
8c9a97a90e6c1ce851203bf78d2da90a721208d2 | Brendan Eich — Backed out changeset 8421b003fb5f -- it broke string to number, demonstrated by running trace-test.js without the -j (jit) option (10 - "1.3" => NaN instead of 8.7). | |
d1629f43be3d17bef511fe6e8221e9923ad2a02e | Brendan Eich — Fix ifop null/object inverted logic sense bug. | |
0c3e74aa6d88656e9606378834faa01972fbc08f | Brendan Eich — Add || and && tests; use newlines to join pass and fail results now that there are too many tests to be readable joined by commas on one line. | |
2aef4d7c32a7beb9fc19e933112ea6b55b00f886 | Brendan Eich — Add || and && tests. | |
ae7214a19c3c00c668a51d4355de97b1e15af43e | Andreas Gal — Merge. | |
4c1dea8c54637d1167f0f7bc845a2e10da87c7d5 | Brendan Eich — 1. Don't store thisp literally in state.rp, get it from argv[-1]. 2. Fix DEBUG localNames code. | |
58cf778cc1b12a1a9571bc08e26d0bb367339b48 | Brendan Eich — Extend ifop to handle undefined tests; implement JSOP_OR and JSOP_AND (so much work\!). | |
009f5b0ad65240690de1794c5ed17d31c11d78a4 | Brendan Eich — Style police raid: function names start in column 1, with one blank line between functions. | |
5b9e574d90d3212b806cc52045db6600800330f4 | Brendan Eich — 1. Don't store thisp literally in state.rp, get it from argv[-1]. 2. Fix DEBUG localNames code. | |
a1df7c3efe073be8a25d233299f739bddf6f0ee0 | Brendan Eich — Remove synthesizeFrames private declaration -- js_SynthesizeFrames is a static helper now. | |
e986309c71b6e0f591dfd644d174128fc97dcbdf | Brendan Eich — - Implement interpreter frame reconstruction (js_SynthesizeFrame). | |
4481c2d9c70d25000d9c8c4a841b1a3274b4f7a4 | Andreas Gal — Remove entryStackDepth. Calculate sp_adj relative to entryNativeStackSlots. | |
40b8e2f354b15cea17bed1cda835c5a1bc5c8215 | Andreas Gal — Make synthesizeFrame private. | |
4f96b964c7b57ee3c80db5477c5331fdb752c382 | Andreas Gal — Merge. | |
0ce82e77046fed9a267c7173295cc31f20fa353f | Andreas Gal — Add vprof source files (this time for real.) | |
01eb436bb5d70df744dc982032cb0298549b6158 | David Anderson — Fixed builtin_dmod not working on Win32. | |
3073cb49fee5ff16c124448f0e80ed7f666e142a | Andreas Gal — Pull in Moh's vprof utility from tamarin-tracing. | |
db0271921fbf412ee56039aa68e32c0a5b0bf15c | Andreas Gal — Sync with tamarin-tracing/nanojit tip. | |
4f1a037b281a4cf5308797a05d85ead1f39f8733 | shaver — use optimized path for fromCharCode | |
5035415eac179b3d69476ceb26b9db660cd919d9 | shaver — Refactor js_GetUnitString to permit passing in a bare jschar, and use in js_str_fromCharCode. | |
7ac7601852451e61421c0a7c1a299e1d45028e59 | shaver — Refactor trace-test.js to permit running a single test via `js trace-test.js testName`. | |
3e6f2131c8b6a5fc1e4b44f398d40586668f72f9 | shaver — add specialized StringToInt32 and filter for it | |
8421b003fb5f154bb6b8243b991a5d0ab855761d | shaver — give strtointeger a way to avoid octal, to streamline ValueToNumber a bit | |
edd0d8812b7b0679251b54fb8b32f46bc56a0727 | shaver — Coerce strings to numbers for appropriate ops. | |
cce4240c2e2ae46800baced30a2b83c30ce96909 | shaver — merge backout of d24e6005ee4c to fix the world | |
2538576db1ec376c802200dba7de280f343da65c | shaver — Backed out changeset d24e6005ee4c (causing major array-fail). | |
d7359bad0db73deb2b6d2fc69190be2ae7249d8c | Andreas Gal — Merge. | |
9f3518887174932698b77218307c6818e95365ca | Andreas Gal — Remove ANY_TYPE and move debug printf around to print entry point even if we can't enter due to type mismatch. | |
d24e6005ee4c1e86b999e5ae0dd134021dbeb332 | shaver — Make guard return expected, so we can trace alternate cases easily. | |
b78b083dff0fad3e9e63c0ebc252ab22d7f159cb | Andreas Gal — If trees are not enabled, don't try to reuse state and param1. | |
c506c1cd643bbceceb2c57446e20afaffbb6673b | David Anderson — Re-use initial parameters on tree fragments. | |
3ead93ea00f0489bfc81bd5287b9c1c26b7737d1 | shaver — Implement JSOP_EQ and JSOP_NE over strings, plus JSOP_STRING. | |
ad31a3eb02efa4a1234f07965bb4e3b65a8fde69 | Andreas Gal — Merge. | |
06fd91141971ad66797e4984ad2b4142d037baa3 | Andreas Gal — Make the global frame layout match the slot layout in the global object. This will allow leaving global values in place when switching trees as long both inner and outer tree use the same value. | |
f115ed7ab1d6b30e49318a098fd3780ed090203e | Brendan Eich — - Export JSSLOT_ITER_* from jsiter.cpp to jsiter.h, for jstracer.cpp to use. | |
c6aa6d7d35c75578ffa095695eaf3facc967db91 | Andreas Gal — Merge. | |
695977f6efdef218f8e7f301a27e83f9e3c9d15e | Andreas Gal — Use isGlobal to distinguish whether a value is a global slot instead of scanning the table every time. | |
f65c7990a10083860e60524edabb2809ae571e10 | shaver — trace Math.random | |
0793c5db30463c567e6ae7e5fae7b2a9675b38b2 | shaver — Trace String.fromCharCode. | |
303d144b8182c8cd87a6d21ac16bedf17a796a01 | Andreas Gal — Clean up the living room a bit since people are going to come by to look at it. | |
4b6d51af439cb4bc44367f06141aaf3c3227387d | Andreas Gal — Add isGlobal to check whether a value is a slot of the global object. | |
3f908af1a069098a1217d4c85db678b7bffb8432 | Andreas Gal — Note to self: hacking after 4am is detrimental to my spelling. | |
578a2ef048ca9f621a4c75d1bd76b20197903224 | Andreas Gal — Major shakeup of the interning code for globals. Globals are now detected on demand as they are used and the slots are noted in treeInfo->globalSlots. At the same time the type is recorded in treeInfo->globalTypeMap. The stack type-map is maintained separately in treeInfo->stackTypeMap. All these structures are lists and are maintained as List<T> objects. Imports for globals can appear at the top (if we have already seen some imports for the loop header and are recompiling), or on the fly for lazily found values. We no longer intern all global properties that happen to match a name in the current function, and we also support inlining of functions that touch globals that are not used in the method where the trace started in. | |
568235abae0bb152c5841e8a8af9ff27fa5a5f52 | Andreas Gal — Use List<T> to maintain global slot list in TreeInfo. | |
764fb8d99acf87855e86fdae258283e7247c6333 | Andreas Gal — Trash entire tree with all the information associated with it when we have a typemap conflict or the global shape changes. | |
494833e3f77e6c68988fb8cce7e8280dc6d38703 | Andreas Gal — Remember number of global slots known at that point in the trace in every side exit (forward-looking change to cope with dynamic collection of interned globals.) | |
610e5465b74a988b649b67729671f47d8e7a8012 | Andreas Gal — Merge. | |
b43051428b55b82175ec6e54995a693aa5dee344 | Andreas Gal — Add a generic list data structure and fix side exit handling to always pick the right typemap to work with (exit map, not entry map). | |
2ab8e8d38cca529a3042e0665cc70e43d43e66ec | dvander — Merge. | |
31a1d13aa7044dcc1f364e3de93e3b9123b4fd99 | David Anderson — Fixed some MSVC whinings, implemented rdtsc on win32 | |
858f1c9faed18b68cb711220bc748a0ccb952463 | Andreas Gal — Merge. | |
0a5c2d85b330ed451402804fb030bebbb33c1990 | Andreas Gal — Removed unused field from TreeInfo. | |
af7667490a400649243ad21ebc581e8276149612 | David Anderson — Merge (an empty one, thanks hg) | |
dda7ced43663671521a047e8a7b44bb85ad5451c | David Anderson — Fixed infinite looping on non-threaded tracing (rumor is that we do Windows builds of Firefox) | |
6b103d753cb8ace15ce7c63486b0719ce85959ac | Brendan Eich — Merge again. | |
08ff24743de2163c39bb47a4f594e1e52f4ca773 | Brendan Eich — Guard property cache hits by shape(s). | |
df9c6c6a62bfcf1271a80ce10f16259d75a20377 | Brendan Eich — Merge. | |
21de271f5a7b21f0f37df367fef6212b7af99b51 | Brendan Eich — Fix a couple of comments. | |
0c154bd6373b06cfaf49f8d0bb704082038aff70 | Andreas Gal — Rename gslots to globalSlots. | |
5fb357924314dff49c5e8360084c02c7ba0a97b5 | Andreas Gal — Remove global frame transition code. Obsoleted by the new on-demand global loading code which we are about to add. | |
77a50b8cf504f980dcc20cdd47a7ddfb0a7e592e | Andreas Gal — Limit tree growth to side exits that expicitly declare that they want to be grown. | |
624a5f42008b63d7bf10f5a791eb093bbba3580d | shaver — JSOP_ADD over strings | |
baa9cc8969fbfedfec31c2643a266fd7c372fc99 | shaver — signs, signs, everywhere signs | |
a0232a1e6de84f18888fae3da92160463fb4c3b7 | shaver — Trace String.prototype.substring for two-arg case. | |
2e79ec0210996f3d9810080ed803cb77bab80b90 | shaver — Trace JSOP_LENGTH over flat strings. (Need some cmovery for dep strings.) | |
5861c0799b130462837d65b34cde4015e34ada4b | Andreas Gal — Fix spelling. | |
338889461e8596f80b0f6bc8479cc38d075742cf | Andreas Gal — Cleanup global frame switching and add delayed write-back code for doubles. | |
9481af051d761b56a4bd958bf1762a23e6c1eeba | Brendan Eich — Regularize loop update in SwitchNativeGlobalFrame. | |
80fe90ae6f37e4e6dae1ff5567c5169b29374a5d | Brendan Eich — Fix synthesizeFrame's newifp->callerRegs/frame.regs update to pass along the pointer to the precious js_Interpret regs local and update it. | |
280c81d5e1e06257a8491fdfe0ebabfd723959d1 | Brendan Eich — Try to fix SwitchNativeGlobalFrame, still studying it but these changes seem necessary. | |
ceee8862d54513321a8dd9a3714462c658f4f674 | Brendan Eich — Fix synthesizeFrame parameterization, and have it reconstruct stack depth; warning and space fixes. | |
55a104b3ea5595663463da254996360d74eeb522 | Brendan Eich — Export js_ReconstructStackDepth for use by side-exit code when synthesizing stack frames. | |
99f6c3dbe70fa6a9be07c85e8439fb177d509b59 | Andreas Gal — Merge. | |
936088421e2d178a694c0dc4656532ff29beab7b | Andreas Gal — Switch from one global frame to another by walking the two sorted gslots lists. | |
69039bedbe801c39728b2a964fa2e8edadc3aeed | Brendan Eich — Fix uninitialized nbytes in synthesize_frame. | |
21cc518e95f6b4304a2aaaee1b3f2b6bee96a63f | Andreas Gal — Compilation fix for MSVC. | |
7df08105dead1713b208e311b529299a6cb6aac3 | Andreas Gal — Cleanup and split native frame reading/writing into stack and global part. | |
b1f63b3af0210cb733e293053852414e42b95fcb | Andreas Gal — Sort interned global slots in ascending order for fast comparison of two different global frames when switching between them. | |
da175427dc476ac22a04515820d3abc5e8494f68 | shaver — not-yet-working beginnings of frame reconstruction | |
6761243e4e8ccbb75dd3964886fa85ff7179b962 | Andreas Gal — Trash the interned globals of a tree if we experience a global shape mismatch. | |
7e23704101699ed26b9b4e8fdc176abb12db71c1 | Andreas Gal — Trash the typemap if a change of the global shape forces us to throw away a tree. | |
78b4b3cfde88a3a0ce4c9a69e91441071aa726e3 | Andreas Gal — Abort trace if we inline too deeply. | |
94f2e3f29c62f9485b04a80d3a38e51a78e6b7ea | Andreas Gal — Merge. | |
e1d7528f7744bebf9722b14848e9d1990acc3a8d | Andreas Gal — Track the type of guards and react accordingly if we bail out on them. Guards that protect against out-of-memory conditions don't try to grow the tree. Instead we just resume the interpreter. | |
0d41393d023b84be41a9449f73f5ccad7d9bcfc9 | Andreas Gal — Don't use ABORT_TRACE outside the recorder. | |
980c23ed651ebe7dc13570c42655484296353303 | shaver — do setelem in a builtin, so we don't abort trace every 8 times when growing | |
7d4d4ed0e52e04cc090ac789e3f09a41a0295fc8 | Andreas Gal — If we see a f2i(UnboxDouble) chain, simplify it to UnboxInt32 which does the conversion internally. This also enables a fastpath to read 31-bit jsval integers from arrays. | |
ed83a368ff1974b06acb1e3315b58c9309919bf6 | Andreas Gal — Merge. | |
7eed0be91ce49c924ad8b9b86c0bdb199a411b79 | Andreas Gal — Add limited outerlining. Much of this will be subsumed by nested trees. | |
f5e9534513710c4f703b3e7b0df98b2fb9311466 | shaver — remove rval tracking, since it's no longer necessary | |
ee5bf68b0025791cbe4b43a501ed5f9ddeabbe1e | Andreas Gal — Remove guardCount. No longer needed. | |
ff7fb1bfd03df2eb976db17bf1fd65e67d53ee30 | Andreas Gal — Merge. | |
bf4d58f8cc7f728221884369a256f09aadbae20a | Andreas Gal — Smarter speculative demotion of numbers to integers and promotion of the trace seems to require actual doubles. If the number at entry looks like an int we make the slot an int and compile as such. If the loop-tail proves the slot to be a double, we recompile the trace. Currently such miss-speculation cannot be handled on secondary traces since we are currently unable to recompile the primary trace. Such secondary traces are blacklisted. | |
543aa57c695af59042969387ba5eff50324c9f8d | Brendan Eich — Pass null instead of &val is no result is wanted by EvaluateString's caller. | |
1c4a4cad65bd0190b9cab4ea7ba75aa5faedce80 | Brendan Eich — Add JSSF_NO_SCRIPT_RVAL script flag, and uint8 flags field for it. | |
27dc0386e58d1035fc2b21026052f172a87ba3fc | Brendan Eich — Fix comment typo. | |
f38fbde81ed186b3880bc39943cf9916c6958156 | Andreas Gal — Don't try to demote slots on secondary traces (we have to recompile the primary trace as well for that, which we currently don't do.) | |
3bf4ab9ba121c4c876e851a91530728c55bc6305 | Andreas Gal — Add a test case for trees. | |
8841c613afe947a6330e7637540c83617443cad0 | Andreas Gal — Merge. | |
b9075b61c5b5481af0fab849e4bf690d1d9939b9 | Andreas Gal — Added sunspider tests to t/ for dvander. | |
83fe12b7662dbd1e14a8c2d7595c0681253f3687 | Andreas Gal — Fix and cleanup rp_adj and sp_adj calculation. | |
12b6d6a31dc735ca1f17806fdf603c8be96e273c | Andreas Gal — Eliminate EntryRegs. Its not safe to keep a reference to the entry SP since we might extend the tree from a different outer stack frame. Instead just store the entryStackDepth. | |
3002cb5fd642a43d98535519edf9ee75485b50cc | Andreas Gal — Print real recording point, not entryRegs and add an assert that makes sure the guard we come out of is associated with the tree we entered into. | |
72893c1ee4a4714172689fe781860d7b4f9ccc8c | Andreas Gal — Merge. | |
ff036e43274007e1bad6e9d2634b08368f74c831 | Andreas Gal — The VP engineering broke JSOP_NAME! We have to check whether the slot is actually interned and otherwise abort. | |
c2f49e1a25942d9b9ae9fe54f7a344c5da466d8b | Brendan Eich — Avoid JSOP_POPV in global scripts from load(), etc. | |
fd9cf3c556ee0d410dc934be71956a0d33271d2c | David Anderson — Fixed entry typemap having wrong allocation size. | |
75805867814e6e819ba7508a20ffd01dc126b55e | Andreas Gal — Can't use lr->from. Seems to not get set in certain cases. Go figure. The nanojit tree code is really weird. | |
f5149a2b93091409dc28978c5c29cd00460188d3 | Andreas Gal — Factor out AttemptToGrowTree. | |
2666adaeb7527e7eeda8ce1c2db9cd1ed7ccc85d | Andreas Gal — Determine ahead of time whether a side exit is a loop-terminating side exit instead of re-determining this at every side exit. | |
650ff18ef51f6c436528cff2b72d721e30f41f18 | Andreas Gal — Move trace activation code into js_ExecuteTree(). | |
8809b9fffa2749035f47cbfeccaacc40b27e4168 | Andreas Gal — Make demotion threshold optional (0=off, 32=default). Turn off to debug the type assert bug. | |
81375d2214942696bc81f38b1de872085fad105b | Andreas Gal — Don't demote slots in overly long traces (based on counting the number of guards, current threshold=32). | |
6747a00cdc2c2d82c1fe8c459222afdad7625920 | Andreas Gal — Cleanup iteration over all slots to use a single macro to avoid code duplication. | |
d4612c4b9cc2a504016021b7635d36acbb7640ba | Andreas Gal — Add shark support to md5.js directly, no longer around the recorder. | |
d9a55e3014f88e9f9242010c933ffc93c0994e70 | Andreas Gal — Make the interpreter notify us when frames are popped so we see he right cx->fp value. Fix return value tracking for JSOP_STOP. | |
d0b29a253c221f211cf45c5bd17ab49632a2e30b | Andreas Gal — Backed out changeset a58e7ce6eb7f. stack(0) is wrong, if at all it should have been stack(-(1 + argc)). But anyway, its impossible to write through to the frame via set() at that point because leaveFrame() doesn't actually modify cx->fp. We need to wait for the interpreter to do so. Until then nativeFrameOffset produces incorrect values and the assert fails in set. | |
a58e7ce6eb7f1dc53de70c13b9707d4799f331aa | shaver — fix return-value handling for new stack layout | |
4592d6bdad1bcf9b77116dc72c4fe1d8c449b110 | Andreas Gal — Maintain a separate frame for globals using InterpState->gp. | |
1fa3e45f253a841ccdfee21c062b082919f236f2 | Andreas Gal — Add a fast path for nativeFrameOffset that walks entire groups at a time, not slots. Check against the result calculated by the FORALL macro in DEBUG builds (for sanity). | |
c1d3d1e0e92418c474a374bcc876aa8845fdb00b | Andreas Gal — Merge. Make sure we clear out all slots from the tracker when leaving a frame. | |
7f3cc9a4bf1a39d823ef4f1a3bcbc8ecafe0553e | Andreas Gal — When addressing locations above the stack water level, use ->sp as base. Shaver accidently changed this to ->spbase when merging Igor's patch, so we were writing past the water mark and the stores were killed. | |
711092884c032410bd635b1d68ef9c778afa3777 | Andreas Gal — Lazy fill the stackTracker as we lookup the nativeFrameOffset for values. Purge all entries related to the current frame when it is popped. This code could be further simplified if Tracker was a template. | |
58268341e59090e24eb96b8ab4116d675732eec7 | shaver — tighten up some bounds, still not quite right | |
74c74142691de291bfa8790dad6e81416cbf22ae | shaver — merge from andreas | |
c31887108aa492dabf5a8e91a82fe47ac378aa47 | shaver — merge (still not working, probably box/unbox dumbness) | |
d7ce57c5a2d602725c8102d4d2a420c07b6a9b24 | shaver — merge (now compiling, untested) | |
564c062f3f2ed3ae3bf7f7ed72e6e33d081659e5 | shaver — merge (mostly, doesn't build) | |
a72fa45c84d6ae1cca633dc49efde0e03cd46201 | Andreas Gal — Handle leaving of frames in one central place. | |
d69e27a95299f6e4951e57ec36758882b024c698 | Andreas Gal — Reduce HOTLOOP threshold to 2. | |
76743337c5cf144cad79a4e188a14841d9271d1f | Andreas Gal — Avoid calculating native frame offset by tracking the last load/store for every slot and extracting the offset from there. | |
300d7a711abd509d44ffbad624a0d12ea19114e1 | Andreas Gal — Avoid nativeFrameOffset calls in import(). | |
f97a027eb75b6c41909ad906902fb98231ff9d26 | Andreas Gal — Merge. | |
50e742a24660c1fd0c238e0ecf02299396393acc | Andreas Gal — Add a pattern to recognize safe_add and emit a simple add for it. | |
3a9f641607b8688ff5016c41370c9ce8a5103a13 | shaver — use nargs rather than argc, since bytecode only refers to [o-nargs) args | |
19b10d2f8e770f848cf327aa24704944c80f396a | shaver — make time.sh more useful | |
c3a6d7c21b1a6914df0d6fdcde4fea8e56821309 | Andreas Gal — Reverse the insanity that used to be tamarin's arg passing in ins2. Now it makes sense. | |
7ce311bda061ccd508a6dc0f79fcd3b58edaec50 | Andreas Gal — Avoid overflow checks on integer adds when its safe to do so. | |
84567cee23affc704315debffa48ab8d7b12ddaa | Andreas Gal — Eliminate entryFrame pointer (not safe to carry that around.) | |
29dc227c247090f8119ae7d4cc4dea1fd8924446 | Andreas Gal — Use callDepth instead of entryFrame in the FORALL macro. | |
578b74d83ca43925df9969587987d2bbaa6b3a93 | Andreas Gal — Eliminate exit filter, write the type map directly in snapshot. | |
a9674f7445daa65d7c3eeb2768bb3d94c5211480 | Andreas Gal — Sink stack-targeting type conversion in the set() path instead of in the ExitFilter. | |
3431355c8c25779c7e4f58c7c78280b365eac6fa | Andreas Gal — Use callDepth, not entryFrame in nativeFrameSlots(). | |
31c40a134b8392211c83dfb78310dbb2d9e95681 | Andreas Gal — Remove excess parameters of verifyTypeStability. | |
60217cddf325c79bae76c859df8fb3c7c6039db7 | Andreas Gal — Track call depth in the trace recorder. This lays the groundwork to get rid of entryFrame. | |
7ca5021203e6182026d32036ec5c59dd095e4d9c | shaver — beginning of entryFrame removal | |
1d223e643fad98116f3ad00cdb6823a5e14c2887 | Andreas Gal — Merge. | |
488ee9bd7d342fdea5a5a50ecc4ce407604598f8 | Andreas Gal — Use ti instead of fi for TreeInfo pointers. | |
84a4a5c2ccea84d00383bdae6ff68d1a7a1d450b | Andreas Gal — Rename VMFragmentInfo to TreeInfo. | |
82844c30d64cfedc63c4a945330e90fe45ee3cd4 | Andreas Gal — Merge. | |
d98ca5faa22c158273bfa845ad7767c860fc1c58 | Andreas Gal — Style cleanup and eliminate redundant f2u(i2f|u2f) chains. | |
05ab4f11393da4c5e4d60f0e5ab484c92b047067 | shaver — Avoid tracking object properties, make incElem work. | |
e2f7a63c6e54e1858e36d0789e3e118e939da0a1 | shaver — fix no-tracer build | |
0d2ce64b76b1a5616e4582f3a64715281b4a628d | Brendan Eich — Cite bug 445262 with a FIXME instead of omfgHack_ prefix ;-). | |
c315c24d0b90ca071d3325c4a0a4266bbaf3b4a8 | Brendan Eich — Tighten up js_IsLoopEdge and include JSOP_IFNEX. | |
90467ec4fc8b95d51bca051db330cd95501ab491 | Brendan Eich — Nit patrol. | |
85e5e3504108d7947e4d959c70fcf54e8e99f3de | shaver — merge time is fun time | |
ace1904d319c80702a5f127264c9cbb269feba34 | shaver — add simple timing harness | |
dcefd6872de80b0b3ee2f23af6d0104f37470548 | Andreas Gal — Simplify updating of the side exit target. | |
d50e67202e36fadb0d5afc48e021ba11281d5fd3 | shaver — simpler loop exit check (backwards is a loop exit, forwards is not) | |
3f22d73523c2444cc641cb299e28daad85484a37 | shaver — force Math to be interned, and defend against non-interned globals until upvar saves us all | |
8d755a9d420748774094be8b3662b1694023cb1b | Andreas Gal — Use exponential backoff when trying to extend trees. | |
0236cac46f1c9c4879a743130de323448880824c | Andreas Gal — Merge. | |
7fc8fae5275d2fbd04fe1037576c6f9cb67259d2 | Andreas Gal — Don't emit boxed values, use the unboxed representation for constants. | |
c4a57a85b10101a4a63e2390253358a72e170b13 | Andreas Gal — Removed meaningless assert. | |
8fcab8127282610a15427125347f19d5b24c93e3 | shaver — don't pretend we can trace INCELEM and friends (fixes trace-test.js, ahem) | |
fb2591c91c916e7cd188da0fe399e937e4f91c2b | shaver — move summarization to the end, so I can see it through the debug spew | |
55ed09e74ccf4dcbd06b209fff1a76a0e79b8c47 | shaver — improve tracing/recording diagnostics | |
6f2f72b0dc05aab20d81c1cf90c873dfc5d92652 | shaver — discard trace on global shape mismatch | |
68290f50a4aefbaba829a297bf494352b53b8d18 | Brendan Eich — Breathe, vertical-spacing, breathe! | |
395a9edbad9a101b2cac3c941aae9b04cb086f41 | shaver — Implement DEFLOCALFUN for the fully-lightweight case. | |
f301a26e8ecb8f97aaa428ed867dce972f834fab | Brendan Eich — Improve js_IsLoopExit (unannotated JSOP_GOTO is still ambiguous). | |
a5e4e0fbda2908d7744b7e3ab0b53c4c26e485f2 | Brendan Eich — Fix incProp to box and store (incElem still todo). | |
363fb74d8dacfbd6c540fd670e1a6a8da1369ab8 | Andreas Gal — Merge. hg sucks. | |
45d7e50dd07080b06d5cad36edc7b371f26d1129 | Andreas Gal — Don't demote fmul since it overflows in math-partial. We might try to demote it and then promote back if this happens (depends how aggressively we want so speculate). Speedup 6.6 for math-partial (since its sin/cos/pow heavy.) | |
2fd000e77d01c88479d2cf91092590e280cb9fc4 | Brendan Eich — First stab at incops, plus unbox_jsval tag-masking guard fixes, plus misc. cleanup. | |
ccf94bdb2274c3e018e6b6587090ae065e9e6301 | Andreas Gal — Merge. | |
fc709b9639e9e7a9b1e6eb40114436d39c83aff9 | Andreas Gal — Abort trace is STOP is leaving the recording context. | |
eda3a62d96306bb017323cbceebe359aedb9122b | shaver — Propagate TCF_COMPILE_N_GO through to inner functions, so that we can avoid nulling their parents and then cloning expensively in DEFLOCALFUN. | |
dffb3c5243081cca92200864e37022567fda6906 | Andreas Gal — Make entryFrame/entryRegs relative to the tree entry since we only adjust ip/sp/rp when exiting from the tree, not in between fragments. | |
012f81b5524c1513a79bb10440758db5776cb4d8 | Andreas Gal — Adjust ip/sp/rp in the interpreter recovery code, not on the trace. | |
62a1e92eea54cb7e04f05b9f7c9882dc7b87e302 | Andreas Gal — Write all the debug output to stdout (we can't easily make everything go to stderr, so this way at least it all goes into the same place.) | |
0998e027bc956f107e0f168c3aa5a1acde461ae8 | Andreas Gal — Rework some of David's changes. Make sure we don't modify the tree until we are ready to attach the new fragment. Share lirbufs between tree branches. | |
af5b4863aec74b975369bebe1fec472474a683c5 | David Anderson — Got side exits seemingly working, added if.js to trace-test.js | |
3dabed70d6ca867c078b320f9a472b266ce95e30 | shaver — Handle more operand types in ifop(). | |
c0224bf725bb853eaf81e2231f71e83656b8bd37 | shaver — Better diagnostic info for trace abort. | |
b5b9d0d7a80ea700bdf0ea746108edc33d0dfb87 | shaver — lookup/find, but do not fill prop cache from recorder | |
792209cb0c1a9da9247a3e66532a60c97a31c086 | shaver — When PROPERTY_CACHE_TEST misses, fall back to doing our own lookup via js_GetPropertyHelper. | |
37537da783715cbcc4545a28fbd1460021dce209 | Andreas Gal — Merge. | |
f2de492208c52ec4c54d553f827bf71db758a627 | Andreas Gal — Try to clean up the memory allocation/deallocation through the avmplus glue code. | |
dbf05bc936e81b11522bb6b1cf2b29e29de92495 | Brendan Eich — Warning elimination. | |
c306f790af93604f1f9f3c9402bfd5bf30e53663 | Andreas Gal — Make sure we compile again if we reject a trace by decrementing hits. | |
0bb4ca5dad04073fa7d8b4901eb66ee0b51f9758 | Andreas Gal — Fix hot loop triggering. | |
8e25e4b6733ff7cabb01b41af4ff2c7a476cbd6f | shaver — can't easily find real names for globals, so just number them | |
538e21048bd8e4777b392577e266308d19475430 | Andreas Gal — Merge. | |
ef57b8f5b957fa49d789fb18202568ca9b7aaae0 | Andreas Gal — Disable trees for the time being. | |
35a2824c92e3e3c9d387a4a998d2b5a0df8eed9a | shaver — Label globals and locals with their source-names in trace. | |
ead9e74ecc9c2e158ab3f17f51781d08212fd116 | Brendan Eich — Use the property cache for JSOP_NAMEINC, etc. | |
583c987bc8436ba429c4aa63357ac4c49c461444 | Brendan Eich — Fix property cache fill to use the right shape. | |
b84be9bed07482af08d69cd3a65fabeaf4dff9d1 | Brendan Eich — Merge. | |
3323ff68133ff9057bbe0f5594173cf71d2c038c | Brendan Eich — Always select gvar ops for declared global vars, instead of only if loopy/enough-used. | |
3b19f7383ef21a34e2b5f930f6761e7525bec4b5 | Andreas Gal — Add if.js example for trees. | |
5f88cc59d72991675be2f849646b6406059733c1 | Andreas Gal — Add the beginning of support for trees. | |
53ed2537ee6cfe09514b349930b1e1cd36a8c2e2 | Andreas Gal — Don't allocate FpRegs if sse2 is enabled. | |
905fc72f4a2065899523d77dd55fb85b1f46d36c | Andreas Gal — Add js_IsLoopExit that indicates whether a side exit is likely to continue the loop or not. | |
320ce562aa977159b72b5a9dcc153976743a01c5 | Andreas Gal — Cleanup recorder activation, use a single hot loop threshold (10). | |
fbdbd065cc6efc9a781131e998756a3bb6da59ef | Andreas Gal — Merge. | |
fb5f9cc7ae478177d6191465ed55da98a3e0d7be | Andreas Gal — Added statistics and a js_DestroyJIT hook. Also use debug_only and not verbose_only as #ifdef DEBUG shortcut. | |
bce6cd6054c1856563066b58e5ee2e7bb26ed69f | shaver — remove pointless untracedCall test | |
a87fad3690536da8b8d63dcc2dc96e0312aa764a | Andreas Gal — Fix signature of insCall in the FuncFilter and remove f2i(i2f) elimination since we shouldn't really ever hit it. | |
d2f66247b5c4276e6a95a5bf436f0dd7698fddb3 | Andreas Gal — Merge. | |
d38f4a7a7d41385a226c98c94ce26af841645240 | Andreas Gal — Move up addName to make sure it gets inline in non-debug mode. | |
3ac03b040650a6884714dd7d9e21a13ec09660e6 | shaver — Add setprop and tests for setprop and cleanup labling code for debug mode (m=gal). | |
c0262c2283689536c207b54585712bf131fad25d | shaver — merge, woo | |
c6aaa555d1950f8702a3d95003b3d8f0269e21f2 | shaver — summarize test results | |
0cddec1e98b83680d538e31fb923e5f2954a9cbb | Andreas Gal — Cleanup trace abort handling. | |
107ecdb6642ff8b187fa001caf92775b54fe5353 | Andreas Gal — Merge. | |
542a223fff7390f2bf0d927c2bc1f525626f30f7 | Andreas Gal — Fixed ASSERT JS_DOUBLE != JS_VOID issue. If the root fragment fails to compile, trash the type-map and re-capture it when we try to re-compile. | |
3f86b2f85505e7dce76c91da1a346e8e3551c5e9 | shaver — JSOP_LENGTH | |
f0722586589093a27590b80fa9eea902a82b57c5 | Andreas Gal — Merge. | |
8b67188b12b017b67c8a01c456e6d514a5afff55 | Andreas Gal — Increase code cache size. | |
b0e299b66de811507f4b6720e9dc29781f1076e2 | shaver — 4.2, dammit | |
543a03604f4abaeff037fde240004d2f0a893ff3 | Andreas Gal — Merge. | |
2c77daeb680fbb0cd248a5e508006b04efdde7c4 | Andreas Gal — Fix f2i(i2f) filter (broken since the last TT sync, argument order changed from right to left to left to right). | |
87dce0aaaeec1b1bca4854dc3daff170598a0988 | Brendan Eich — Prefer getarg;length, etc. to getargprop. | |
91014d95fffeb79d57238e528fb969b7902118ba | shaver — copy capacity when becoming another list | |
b7c3527f61f62876b44ed678bfe07e5473a79892 | Andreas Gal — Don't clear out arguments, clear out variables at method entry. | |
40e3a3ab03664475890a8440ef3e8e15ff8058d4 | Andreas Gal — Better naming of the after_JSOP_CALL event (EnterFrame). | |
8f4d107086037dcffd132458094f16cde1bfe70d | Andreas Gal — Notify the recorder when a new frame was created by JSOP_CALL. | |
91d05b4adba98c547031ebbb4ac746fd41c5be93 | Andreas Gal — Initialize arguments to void and write JSVAL_HOLE's value onto the native stack, not its boxed representation. | |
668626e5bb30dad3e8910994ede36d582830e726 | Andreas Gal — Fixed call tests. | |
4bcd383c23ba455c58fbb9a0479731ed858d26b0 | Andreas Gal — Hand in typemap the recorder is supposed to use (preparation for side exit compilation and trees). | |
db49e96340f85ad54cac4ef11ec4152efc6f048f | Andreas Gal — Move the allocation of the LIR buffer and the FragmentInfo data structure creation (which includes typemap and interned global calculation) into loopedge. | |
2e17d9cb22a8d20813221a050d654998abb35310 | Andreas Gal — Fix typo in test cases. | |
82ef04c87d86d3cf4328eeb879301b1c5ee38a52 | Andreas Gal — Make JSOP_CALLNAME tell us why it doesn't like to trace. | |
2782087a069d9f135ebafbaacf88cc0b7e6e7e32 | Andreas Gal — Add md5.js so we can play with it. We should sweep these test cases into a subdir or just delete them once they trace. | |
129952e6db0036dc4362a3d6ad8e1ac3e95b8b87 | Andreas Gal — Add testcase for chains for global calls. | |
ded0232195d25ccb776b4b7416efceacc1f1ce70 | Andreas Gal — Fix generation of VOID immediates and initialize rval after the new frame was setup by CALL. | |
52abec1941a46b6a556557a96130b302741e72f4 | Andreas Gal — Add generic recorder hooks that are called before and after all opcodes as we trace. We might want to instead just move to pre_OP and post_OP. | |
f71a374c7e7b11c520df0d989277cbc2c043f46a | Andreas Gal — Add test case for CALLPROP. | |
2e157a7a4bcd328abbd737af36522d27f4fcbd69 | Andreas Gal — Don't intern global function objects onto the native frame since we rarely ever need them anyway (we call them via the property cache). | |
41eb6f7a1cf8e490b98bab9a976e3c25a67928aa | Andreas Gal — Enable CALLNAME and add test case for it so we can call global functions. | |
2a05f9ad0b5eeaae17dadc633d77c589fb2c2090 | Andreas Gal — Add test cases for call. | |
acddbdb4763ed8351c9cf21d0a7e036cd9f97124 | Andreas Gal — Make sure this/argv[-1] is set fpr CALLVAR and CALLARG. | |
8968deea09098b6d0b0d20d06b24bf089072b172 | Andreas Gal — Enable inlining for calls. Deep bailouts (from within side exits) are generated but are not allowed to be ever taken (for now). | |
2c56d87c195a6e64dcbbf16bdb82e92079233119 | Andreas Gal — Don't use a builtin for this. For functions its interned in the native frame. For global this we read from fp->thisp. Restore jsinterp.cpp and jsinterp.h (no longer need COMPUTE_THIS exposed). | |
f2f4b2123e13059ccd074fe7c9e1d8a76fe2dec5 | David Anderson — Synced nanojit with TT tip. | |
d0a717cd415e61daf864175e755ced73c2f791b2 | shaver — fix GETXPROP; thanks to brendan for playing chewbacca | |
48cf6aa1902bf4faebb0e71c745a9a99c89b9d35 | shaver — CALLARG, CALLVAR | |
cbbdaa5874c48dfba0b32d8f6c29b6e0a968a064 | shaver — fix scalpel left in nativeFrameSlots from aborted thisp addition to frame | |
e12ae47e12b34f856aea804e37c67e06924a17a8 | shaver — implement JSOP_MOD | |
0c6fa110c7bfc154dabad39a1f63c968f5e7b614 | shaver — Trace JSOP_THIS and JSOP_THISPROP. | |
8fd0f267cb4e4f8be824257edfaf9be7ac9c0a9d | Andreas Gal — Fix uncomplete range check for slot numbers of interned globals. | |
548e1af4e499bfba1d1c213256a8ffeff0688ff7 | Andreas Gal — Added math-partial-sums.js for danderson. | |
ab39b6bcc2a7ee62afffc29792a7a0089f24a90a | Andreas Gal — Remove dead code. | |
4edbf4abc1465a85118b08989dae59cc1aadf318 | Andreas Gal — Aliasing cleanup for LIR.h. Patch submitted for upstream review. | |
f670d00a78a25ec5504d1a3750fed9dd831b4bc3 | Andreas Gal — Strict aliasing cleanup. | |
902f1517d1f217b4f3d4b1484031b8583cb2987d | Andreas Gal — Add a few consts to char* pointers to pacify gcc 4.2. | |
c4c28183aae56cf29ff69608b26b0daa548d321a | Andreas Gal — Compilation fixes for gcc 4.2. Ripp out write-barrier code in our avmplus glue layer. | |
0d62c88e87c883a29096d315ce0fe7c072d0060c | Andreas Gal — Merge. | |
31b4ffdd70a20634fd8bacffb488c3a6fd700bde | Andreas Gal — Switch tracemonkey over to gcc-4.2 on macosx. We need a compiler that was released in this millenium so we can use SSE2-based calling conventions. | |
50ad43b7bee064441ef238a03455762d096135c4 | shaver — rename getpropfromval, it burns mine eyes | |
63d0917202cdd4acd439950001c2742b11dc6940 | Andreas Gal — Assign blame where blame is due. | |
23489d31e5ae5e717e9188167aba13a8a2d2d11c | Andreas Gal — Merge. | |
9a323082ef73edf6e53119e467f1315520906dc4 | Andreas Gal — Add missing namespace use (pending upstream for review.) | |
92f7a2cadb2e2e1733a2744c2ce5a7aaa2aadfb5 | Andreas Gal — Sync with TT. | |
4861475a8c347af513c61980cd2498bbe28fa662 | shaver — initialize dslots_ins | |
0473aabb092110f8986db054e985676f7f4cdc5b | Brendan Eich — Propagate error exceptions from TraceRecorder ctor; fiddle/trim space. | |
e4625a551017ebce2791c5822e67a86099f88761 | shaver — GETVARPROP, GETARGPROP, GETXPROP | |
177105a57dbcacf7e9c815b1b6c20fae42dc6468 | shaver — more ABORT_TRACE instrumentation (some should be asserts?) | |
343491f8a45469dab381fd58c24658763df39e0e | Andreas Gal — Generate a list of interned global slots (gslots) when we process the tree header. This list is then used whenever we iterate over the native frame. This is faster and safer than looking up properties in the global object every time. | |
b6573d494e42542dec4ffdc1999a89d1672741dc | Andreas Gal — Remove state exposing accessor functions from recorder and instead hand in that state via the constructor into ExitFilter. | |
eb4225e2ba95bc55c9e0090316d9ada133966a7b | Andreas Gal — Guard in FragmentInfo on the shape of the global object. Don't check for the shape of the global object on the trace. | |
38b7a79b00d0c0d84e2a711c313c0d5c38b3703f | Andreas Gal — Store list of interned global slots in struct FragmentInfo | |
120f4016b20dea3104cb69dcec6a0d1715ec4747 | Andreas Gal — Added a callstack that will track the pc of the call that caused a function call to be inlined. This is necessary to recover from deep side exits inside inline functions. The callstack is subject to store elimination, so unnecessary stores to the stack will go dead automatically during compilation (i.e. if we inline a function that doesn't have side exits.) | |
ee36097ea0b5071301bdd8dc6d3b08a184991c90 | Andreas Gal — Fix warnings. | |
14f0ea38fac42068e461932ef0c704b5e83bfb83 | Andreas Gal — Use JS_GetGlobalForObject to get the global object. Walking back the call chain is not equivalent and not safe. | |
be90e8cf66b74f998ecf02015b13015f1587555b | shaver — fix our aliasing idiocy by extending jsdpun, add Math.sqrt, add strict-aliasing to our Makefile.ref flags | |
f335c583a41633a2bd16d5f2f5af80ce329aff1e | Brendan Eich — Non-null prop from js_LookupProperty means found, so must unlock obj2 (now pobj) in all such cases. | |
8ac710a45f2bbd76ffa214bb9436f8fff2cd7555 | Andreas Gal — Clean up shaver's cleanup. | |
64e1d80c3deaad5559ea6a015cc873c45aba3bf4 | Andreas Gal — Fixed printing of integer incoming values in DEBUG mode. | |
1633d3ccbb5de9f31363656402b02f83e173553f | shaver — merge, and fix locking and logic for FORALL_SLOTS | |
b15aafddf015d59f3c364e29c713211b71e56c3e | shaver — make JSOP_CALL builtin specialization data-driven | |
ab90a1b0fefc1da8c141e3b1bd8bb3e02b9eda94 | Andreas Gal — Skip properties that were not found by LookupProperty. | |
aac5b2d87a30ce383585b0afab7aee982e59215f | Andreas Gal — Merge--again. | |
5fbad247a949f15b916ec571e7382f7513fa42a9 | Andreas Gal — Merge. | |
fed259ac5617a367bbbe47489cf064c683a13bd1 | Andreas Gal — Reserve space for every global property that the current script has an atom for instead of trying to rely on ngvars. | |
4b5a2b816866efaa9cdc395dba3d2ce5ea4b7a30 | Andreas Gal — Backed out changeset 2af185cb0fb7. We will map in global variabls different so we don't need the higher ngvars count to find globals in the native frame. | |
98d39d1a3246456522a960eb19b3f67f0147e22b | shaver — merge | |
869563d5a8007ce5f92b3c1dcd7b6f39f9239ef5 | shaver — expand int-equality tests | |
ac317f20cbd45ae42a02bd7dc50bd7c9d5d76834 | Brendan Eich — Merge. | |
ca39ef1cdf98cd4110a2c808ff7b36cb6b6ce35c | Brendan Eich — js_ for library-extern names like math_sin. | |
c9ed5fabd05f977d3f7804980794c709ff36d039 | shaver — fix the secondary map-native guard | |
551fc407e0c091c0325bd2f9befaf23781c0fff4 | shaver — initialize traceMonitor in threadsafe builds | |
0e3333e2de5fbfb6916376ef9a2dbc8eb837206b | shaver — Guard against subzero array indices | |
37ae58239d023a9d11df7618147526b94aa7d711 | Andreas Gal — Demote fneg to neg if input is known to be an integer (untested). | |
35011c819e2bd92726c6bb1f6efd9df287f13f1a | Andreas Gal — Merge. | |
1383b5e65a1945d5d729d798b122e8e2f3540e70 | Andreas Gal — 5 hours of debugging, and 9 keystrokes to fix it. That was one expensive bug. shaver's reduced fannkuch example works now. I think independently of this one we don't check properly for index underflow in dense arrays. Shaver is going to have to take a look at that (this fix makes fannkuch indexes not become negative, but doesn't explain why we crash so hard if they do become negative). | |
b794ecae165364e7bb0a156a65b9ba3660e48fd7 | shaver — add JSOP_NEG and tests | |
478add19377d5715175f4ef6ef9edab090067f8c | shaver — add Math.cos and Math.pow to the specialized-call party, and add tests | |
f4a1671e5fb1169a312aad31cea9f40305986f5b | shaver — I will remember that stacked values are not boxed. | |
26a4c733812df13f54f0ce769b7fbaec1b5fc6a9 | shaver — Specialized tracing of Math.sin, as a proof of concept. Doesn't quite work due to regalloc mismatch, but close! | |
0ebca2e3394610e96dd29d9ca48222ae7f7ab186 | shaver — merge | |
5d31aafecb356528402038ef8408ef822713e38e | shaver — Incomplete stab at CALLPROP, added ABORT_TRACE for better diagnostics, make math_sin non-static in preparation for specializing call. | |
efc04cf7a7c24573ed120dd75bdcd69d85513018 | Brendan Eich — Nits: avoid (double-)over-parenthesization, underhang extra args to start in same column as first. | |
1df4de382fb773567a39047944387c167203ed14 | shaver — add reduced fannkuch version | |
2c558cd29aeffd6cff372486b82615c296be6730 | Andreas Gal — Print meaningful filename/line-number info for trace entry/exit. | |
690ea36d95ccf7312346f50c0bd9164d052a93a5 | Andreas Gal — Report the source location when recording a trace. | |
f81e3afa991b474f55b8d3811bff4f4829bad758 | Andreas Gal — Don't demote u2f conversions and sink the type cast into the side exit type map, because this loses the sign bit for unsigned values. We could fix this by adding an explicit unsigned type to the map, but for now I think we should stick to int/double only since there is the risk of fanning out trees. Crypto doesn't seem to use ush all that much so we should be ok performance-wise. | |
34a01f96dff7613cb51e76bc150f43d4ce98b8f5 | shaver — Windows cares a lot more about where FASTCALL is; such a sensitive platform | |
ca6784612251b299a08b398173cff40a0f9b0e82 | shaver — begone, cat nspr/Version error noise | |
8be17e176e9c970807c67a9056d52b3bdb4f1749 | shaver — set some more config bits for Windows, mostly blindly | |
389241cb337afa6909dd2ab58e26f6c23a23db88 | shaver — turn on all the shift tests, and find a bug with it! | |
aac887f017f3780f21b1d5a334862b6c3077366f | Andreas Gal — Brendan fixed global variable access in non-top level code so re-enable that in trace-test.js. We pass all of shaver's trace torture tests. | |
5313ed2dc850b93e6f9dd40961e69745c0f4f557 | Andreas Gal — Poking around in the arm code, trying to make it not die miserabily with BUILD_OPT=1. | |
f9f7d66d3ed9deef196ec35172de116cd33fb060 | Andreas Gal — Still trying to get the ARM register updating right. | |
a4c9cdc12f753a489a74817c7e4783725ddb36ab | Andreas Gal — Trying to make arm work. Flying blind here. | |
4471d7a2aa883957ad8b7dc78c7610ac46694b06 | Andreas Gal — Adjust sp/ip for ARM. Very useful when trying to run on ARM. | |
fc5ccedb84e5126cdfd22f469acc5ecccbafa3f7 | shaver — some ARM stuff | |
cb2d64b052c048add8f0c4ad633bd08dc6830725 | Andreas Gal — Merge (no, really, can someone teach Mercurial to not do this?). | |
6c147fe24e5f549355dc1f2c3e23883654a9b264 | Andreas Gal — Output the value if we can't enter a trace because of a type mismatch. | |
fa2e5d8cc494be6653865ae60ec9ba0f2c01ff11 | Andreas Gal — Don't crash when expecting an int32 as double box in unbox but getting something else (and better debug output). | |
cf557974ff909a8db886e6db00eb1a13bff0f983 | Brendan Eich — 1. Fix !JS_THREADED_INTERP bugs in BRANCH and recording switch case generation. | |
a45da8d141fb5e0cf9807e9f9cf366d7605c0537 | shaver — here, have a _working_ Thumb back-end | |
06cd6903243908677b763569a58a49955b0b6827 | shaver — here, have a Thumb back-end | |
d1d3de5ca96b7f70f5256184a7137b8f9ff7beb7 | shaver — only build JIT builtins if ENABLE_JIT, and lose antique *inlines.h | |
8f3ab90e807204d7df007e6039b3fb142b759633 | Andreas Gal — Merge. | |
e417dc6f85e8c8a23660f409a0598c47a68ec21d | Andreas Gal — IFEQ and IFNE are identical for us. We just expect the same boolean on the stack and side exit if not. | |
7a021fd8ee24ef041aa249a3e0a8826e96b932bb | shaver — Build the JIT by default if we're on x86, and control enabling it for content | |
36f2e704a60aefabfe9f63eef05874ef1584eac3 | shaver — don't include jstracer.h (and thus nanojit, etc.) if not building with JS_TRACER | |
7f46ccebe368ca71fbfbaa18b65d11c8a8e6321b | shaver — use a type that windows knows about for offset computation | |
2b54939fcc2140189604fa264c6dae5bb89eff51 | shaver — try to get alloca on Windows; remind me to strip these flailing commits before we merge | |
77003ad3dd063933d2b93b9990b477b195646ca5 | shaver — my turn to merge; had to happen eventually | |
75f3b00302ed7e0d9e05e6bf197f75c1523192eb | shaver — disable tracer for platforms not supported by nanojit | |
c43277de083c7473dfbb32806a31e152aa8b1dc5 | shaver — some better OS_CFLAGS for Linux | |
16e78256f19320365c5cd52a79b17b2d2f621296 | shaver — support non-JS_TRACER builds | |
4328f13132c4e9b455733616e51c568ea49cd711 | shaver — try to make alloca work for Windows | |
bd78d1eedabe55ca8d7acc77af796ece9e0619d1 | Andreas Gal — shaver's favorite operating system of choice doesn't like templates, so de-template tracker since we use it with LInsp only anyway. | |
6d24485f818545901b0e0225a39bb2d9709c35d5 | David Anderson — Actually fixed ifeq/ifne fusion now. | |
b9585554a05fd81e656fd6abaf704689bf2291bf | Andreas Gal — Merge. | |
5c3e6ebd8e7214d0b939fe4b8c16b34a373e2a1c | Andreas Gal — Merge. | |
de3ae43c32ef21abde052836f609c1e72673d252 | Andreas Gal — nanojit doesn't support loads with non-constant offsets so don't do that | |
cbc0682e1efb92e930beada508ee4f15660d73a4 | shaver — fix opcode math with the mighty hammer of casting | |
bfabace39fc3d4577e3c5d91ff078674f9ff2027 | shaver — the rest of the stdint defs, no idea why I didn't do them before | |
c01216792073c56cb3d056210d43724a9045182d | Andreas Gal — Merge. | |
ee609b5493d2c898afb29969891d685f7768db4f | Andreas Gal — Steal the reference to cx from the BoxDouble call instead of observing the load. | |
aa3c905521b57a1bf389a877a30b2b1cf32994fd | Andreas Gal — Fixed the setelem a[i] bug. | |
5c0c0d1659b9792a658a022c91b8159df73bfdd7 | David Anderson — Nanojit needs a LINUX define (which may be my fault), fixing it here for now | |
0a5b824dcc4eec7fb1018b82fbd37a7874db7e23 | shaver — use VirtualAlloc for Windows, since it lacks valloc | |
abf6ecb322d18005e3bce34c6e302919a3241784 | shaver — interp needs tracer.h | |
584d2a3dbb9c0691471eb9cf1d2f8e7e3a66bbf9 | shaver — Decouple jscntxt.h from jstracer.h so that xpconnect doesn't try to include all of | |
7f92daca9d4b07f5b93c35541ceb2e52ad0670c2 | shaver — FASTCALL for Windows | |
9a43f36e5cb1ec415c4ecaa9727b552dc5e9a9a9 | shaver — int32_t, now available on Windows | |
c7f76b35889707556b803672374057b11a8fa481 | shaver — Unlike software developers, g++ doesn't like variable-sized arrays. Have some alloca! | |
74f3632c456dbf30f71afac1f9ef6fe6a99d72ed | shaver — merge | |
7211696c8180e83aa73c7b18def35163e6c3bd05 | shaver — update trace-test.js, now crashes calling lsh() the second time | |
6c9e4594f64806cfaf3945b9141e0c244344b150 | David Anderson — Fixed guarding of eq+ifeq/ifne fusions and enabled tracing JSOP_GOTO (no-op) | |
ae78505d5548754ebd79733f9557314d592548be | Andreas Gal — 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. | |
d6b5b13e1168f0cd53c20689ad1649cc1f2455d2 | Andreas Gal — Merge. | |
bd182cf976cc7171c97853ab8caba0b38148ef77 | Andreas Gal — Don't concede an inch to ISO C++. Substract the size of array[1] from the overall struct size when allocating. | |
9af4862e055d5c7ace8e09dedf8d91e0a84ae03a | shaver — MSVC knows about intptr_t, and doesn't like our remix | |
eeb774c6cec9c65dc9f137a376f31629530b4612 | shaver — I'm going to just keep bludgeoning these typedefs until they stick | |
5b6aa76fdb7b5126ba0a3887c5b4b9c70f9246e5 | shaver — try to find malloc on Linux; this buildbot thing rules the school | |
7f1417a3dc7d040ad73b844c902ca7562518eb5f | shaver — use typedefs instead of stdint.h, because someone forgot to tell MSVC it was 2008 | |
76e77fff6b8e6ae8fab5f7e54f0c9682c59db521 | shaver — can't have zero-sized arrays in ISO C++, says gcc | |
4b09958bd6394093a99e8f70a549e391b945c4e1 | shaver — use stdint.h instead of typedefs to help Linux find intptr_t | |
d81fe579045ea6d867b5b2f38d616404d2c42aa1 | shaver — build nanojit | |
98bd12f90606d75601aa075c80ea89a93a5d3c22 | shaver — Make nanojit arch selection explicit in config/*, though for now only OS X and Linux | |
c3b1d195e8e92fbbbe32175290b189d9473ba508 | shaver — rename builtins.tbl *back*, because nanojit expects that name, and whatever | |
e4d850c97690f86acb3f4eff7e760696b216d78e | shaver — rename builtins.tbl to our usual form | |
b921df2b5ead96386f1a6fe7021a44fe9a3137b2 | shaver — fix include ordering for THREADSAFE build | |
4f01601daf66b94eafe3ea30ef504cb9d07726fc | shaver — fix compilation, but possibly not logic, of shared-object defense | |
1e7a1ae17062016781b65ddd285cbadb1d702e7b | shaver — revert ancient shuffling of js_CompareAndSwap decl to fix THREADSAFE build | |
fc02a75e81bfb46f6d9a2f87388db5e5a83cf680 | shaver — some build fixes to help in-browser and other-arch build | |
d73cfe5c9cc320f6a152bc4b189eadfd494a9831 | Andreas Gal — 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. | |
94bd6755d46c888b42ddf47a514e9b90156c76b2 | Andreas Gal — Merge. | |
e715fff3722ba47e540b88b3d9fa3eb42da32d3c | Andreas Gal — Backed out changeset 234230320093 (reducing code cache size due to startup issue.) | |
cafc6ae022fecafaaaf7cbf7d71963d62bdf1eea | Andreas Gal — Merge. | |
54769ffaede59f6b29b1fa1a0bc11c4e7f504f04 | Andreas Gal — Assert if no gvar is allocated for an undeclared global. | |
2af185cb0fb7f902f18ab0ac8806782b26710c76 | Brendan Eich — Always allocate gvars for top-level scripts if any global names are used -- may hurt some microbenchmarks but we can fix it via bug 441686. | |
2e0243cdb8d90b29092dc77c62ed81799e7de6db | Andreas Gal — Merge. | |
aea83aeec350e92bf1c6ac1d8ddd2d836c70c294 | Andreas Gal — varobj is not passed through the chain. Make sure to use global->varobj for gvar access. | |
69efb778d93ed79e9c327c662381f915fcd096f8 | shaver — More tests, working on crashes. | |
3f787099408bb1a5fdf9452af0ce1ddc8044e2f8 | Brendan Eich — Merge. | |
0973f608df4a28b5791b63f30e513cfd13cdb2c6 | Brendan Eich — Condition fp->arg*/*vars usage on fp->callee, not fp->down. | |
234230320093eaca7e8a574ba3dc42806c1f0285 | Andreas Gal — Reduce code cache size until we fix the page allocation code to not touch all the pages at startup (nanojit issues, assigned to gal). | |
ece5161ddbdeb62f8479ca35cfd813b71d13364d | Andreas Gal — 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. | |
968e758026da13b8afe2c4aec6acc957de03b5a7 | Andreas Gal — Add verbose native stack frame printing. | |
75877eb4040bf8ba66afce7b7b02914eb5a4c92a | Brendan Eich — Memoize implicit gvars in the interpreter, on assignment (JSOP_BINDNAME/JSOP_SETNAME); fix recoder l/r operand order bug. | |
b55fe9ec623ec37536f87ff38ff8d8ac135aaa6f | Brendan Eich — 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). | |
291b444d1d63d32e29177e11ba9f6dc2d188ff81 | Blake Kaplan — Add missing #undef, clean up trailing whitespace. | |
f086b35f2c09daeafcf089163e781690a341f5ce | Brendan Eich — Remove unnecessary JSOp cast. | |
d6be157f25c833e36e405103db0919235dcf6a4f | Brendan Eich — Memoize global name gets and sets as if they refer to a declared gvar. | |
658a9ce4e7a7337ad0294431076647d258233fb7 | Andreas Gal — Merge. | |
f48df61f8c432f3e75308cd92f7a5ba1444c6d2f | Andreas Gal — 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. | |
5333b282657b1369715e38b15ccfbb50512ac084 | Brendan Eich — Tweak a few interval tests, eliminate casts, space patrol. | |
a47293a1823620f92eeb430c072808adfa3656f6 | shaver — Update with some additional test coverage (crashes in setgvar test) | |
36009230ec988d9982c7d6d58d2359868902fc45 | Andreas Gal — Sync with mozilla-central. | |
cf05cda24404b5b6b9eaab2555dcd142ecbc9719 | Andreas Gal — Stricter typing of the tracker code path which now only accepts jsval as suggested by Brendan. | |
596ac5ad13aab66f4b2d7a8f48474e3c78d9ce52 | Andreas Gal — Fixed bug in nativeFrameSlots and use an assert to compare the result with nativeFrameOffset (which is slower, but more precise). | |
84e4a44abb65fb7bcc533356df79bce62df2886d | Andreas Gal — Removed numMapEntries since typeMap is not really part of the SideExit struct yet anyway. | |
dc043e4e6c34c5538ed0bdd0e235d2b94e4f5db5 | Andreas Gal — Move builtin[] table in jsbuiltin.cpp | |
7aa4c0495595b4a356223de19d77c7dee376ec5a | Andreas Gal — Housekeeping. Remove a few warnings during BUILT_OPT and spelling in comments. | |
470d9a1d268c82e51d06e5c61dc3896c0348c234 | Andreas Gal — 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. | |
4f7491dea3d2920ac7dcbcaff07dc0716fa8c65d | Andreas Gal — Merge. | |
02c0d6e2fd17e1de5d3d6f2a6be94a6739a04e64 | Andreas Gal — Removed bogus debug printfs. | |
0c289228bd785d32385b5331e2c38ba399c1dc2e | shaver — merge | |
e1e5a521e5bcee6f187fbf9be2f125a4297e8f43 | shaver — rval tracking and JSOP_POPV | |
f32fedbd364a5a97576a41c07e22808001540762 | shaver — protect printf with DEBUG | |
edfbea1e9a8375ae6c10e0a0e65b85192cb37f4c | Andreas Gal — Fixed frame walking FORALL_PENDING_FRAME_SLOTS and add 4 to sp in getTop (hotfix, not the right way to do it.) | |
fd75b6874a9cec8d619af43e76ee928de1af5c9e | Andreas Gal — Merge. | |
71d55866ed34587bb07579ed89c4cf027147ab32 | Andreas Gal — Use more efficient address mode for LIR_load if possible and removed bogus printf. | |
30d810b830e0ce4a2508e2e4e5068fbdef593c6e | Brendan Eich — Merge. | |
f9066e34c30a376a8f1ff271cf8569bb0c8829cb | Brendan Eich — Single-ended interval tests, plus space patrol. | |
559a7ec13f7ad191df3d4ea70016465d0ae1a9ce | shaver — Implement JSOP_SETNAME for globals. | |
f7cdac667ea092689a94e0bcc6a9457778eeb195 | David Anderson — Merge. | |
1dd22bd88472936afb0e2bf45bf9b2850244ee2c | David Anderson — Builds against latest nanojit; merged VMSideExitInfo into SideExit | |
842d94f41381b26c8e05d8fdbbc9f8a7c168cbdc | David Anderson — Merged with tamarin-tracing (Moved SideExit and GuardRecord out of nanojit, improved labelling) | |
7d2e28b8fc80b562496e070750421e7b0a5cb215 | Andreas Gal — Fixed argv[n] and vars[n], should be [0] of course. | |
eeec9337de5e49c86806fd8959d887681cccdb71 | Andreas Gal — Add dummy vpname/vpnum parameters when not compiling in DEBUG mode. | |
1eecbfbdbd3c3722b38b727345e1eac82bec918d | Andreas Gal — Merge. | |
99c4184cbf34330ff0a920276fcdbea3eacd8cf5 | Andreas Gal — 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. | |
58a616473add75962dc7c51bcd43098f2afa3b29 | Andreas Gal — 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 | |
2b29b2099f3d3b6c86f6f77ec0319f597b3d7e4b | shaver — root converted argv[0] | |
7c4145294a0134cea8335b27e5e8aa6fffeb373a | shaver — Add disfile() helper to debug shell, to make it easier to see disassembly of top-level scripts. | |
a8b3db0a4599d3c7d5132db9bfcaadc1bcb91945 | Andreas Gal — Properly display the 'any' type in the side exit map printout. | |
4725b1f18ea5cbabaec76e5ea6068285c0eff9d8 | Andreas Gal — Cleanup definition of tracker (don't use LInsp, use T, its a template now). | |
167f648e1919b666d0b95782db22b85e0e738074 | Andreas Gal — Hack: demotable stores have to be flagged as int in the exit typemap. This needs cleanup. | |
56aecd44a8d847444b488d5b5df9da55505db943 | Andreas Gal — Don't expect args and vars in a top-level frame that is mapped to the native frame. | |
0237d5b48ae816d6de282e220e924cb503f21c93 | Andreas Gal — Merge. | |
1ac351d69a1ecf85362bca01f5e12b8b7d3ff2d3 | Andreas Gal — Fixed native frame offset calculation for globals. | |
b52ff396481d3eebaf88cb1a85b78f3d34b845d1 | shaver — fix type checking of gvars | |
2327d2d1b8d788983002614e1bedfeb80fcd84b9 | shaver — reduce loop count in trace-test for faster interp runs | |
f68f372c47f93c97b0973752b8aa9b95e90d6e42 | shaver — more detailed type-instability diagnostics | |
8da113260e1e4aa0b3f28a6331ba802e5d5713bd | Andreas Gal — We urgently need shaver's magic native stack/typeframe iterator. Fixed exit map builder to skip argv/vars for global scope. | |
92637c19d98668594728563820b66eb26afbb304 | Andreas Gal — Fixed increment for DECGVAR. | |
c3dd9d7d727ff402b5a4dcbfc525473807e0ed2f | Andreas Gal — Bugfixes to the native stack and typemap handling code. | |
cb4443f6f55d178eb07524a8a6435b3ed4554c78 | Andreas Gal — Attempt at cleaning up the typemap/stack frame iteration code. | |
3a2b7c4ec50e2841d0611c4103a841a68e7ced45 | Andreas Gal — ngvars and the slot index are not related, so don't rely on ngvars < JS_INITIAL_NSLOTS to decide whether dslots exists | |
feb147abff3e52c502d3564350034f42c8c7bfcd | Andreas Gal — Make gvar ops use the global varobj values we unbox onto the native stack. The stack offset handling needs more work. | |
20f73d36a25a8cbe84c14982d9c6dff11501974f | Andreas Gal — 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. | |
f72ce8842a04fa9600a8764fe574526ee822a8fb | Andreas Gal — 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. | |
c7fd31cf2ac8c0b29810343ba362a823ca13385e | Andreas Gal — 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. | |
d1b0469a1f5d3eb4bae832a0a6ef2986bdfe5616 | Andreas Gal — Merge. | |
7716f42de1f01bb8840b51b13e9058a1eaa4f2cb | Andreas Gal — Removed an unused variable from the avmplus glue code. | |
451aef0e1c4f24b60764dcad9340afb92d41dda5 | Brendan Eich — Merge. | |
28ee0944d8703c00d9208c19dd498a0bd552151e | Brendan Eich — Indentation and comment wrapping (at 79, 99 looks too long and most comments still avoid going past 80+/-). | |
bc67eb0d7e8aa947e4549b5c352fc43646f93461 | Andreas Gal — Merge. | |
23d317c80d00330484a91f6bbc5afbc95fe3a588 | Andreas Gal — Sync nanojit with tamarin-tracing tip. | |
5b4529458a560d4fabcb625f3eaadd23bb151c39 | Brendan Eich — Use jsopcode.tbl for tracer JSOP_* method decls; trim trailing whitespace. | |
1aa7e11366a29c3fe26fed7639e140ead5ab5902 | Andreas Gal — 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. | |
d88a5e56ec9382799f89b9a87d8b4f9a561ff1af | Andreas Gal — 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. | |
0f7c4afcd5c83af511ec58c8798e0a4716524f96 | Andreas Gal — 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. | |
a051c0844e1ba0b0127db7aeccebebd09222e781 | Andreas Gal — 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). | |
d268132c1bf643d4f98d139a5444468bbd87e5ee | Andreas Gal — 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). | |
7f3e0b5b05dd1e749b772a6ca4357262b48b46eb | Andreas Gal — Make sure we don't get the argument order in BoxDouble wrong again. | |
c3568285ff19a11ee557006da9b8e70553e69267 | Andreas Gal — Make typemap uint8_t and fix order of arguments in call to BoxDouble. | |
ce35d7c30a31f407fc779c1c40cc779c6b7e1b90 | shaver — remove outdated guard (now inferred via filter as needed) | |
513b636c199b467c3164ea1fbb319d0e6e84ad95 | shaver — we only speak double around here now | |
37dd888fcb4252ce63619cba74722c6640fe0154 | shaver — remove bogus NOT_REACHED | |
fdab515b3c8acd9f82177744961a47262e627aa9 | 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 | Andreas Gal — Reduce redundant doubleToInt32(i2f(x)) chains to simply x. | |
0b810d0bf2e7572dbc69b66fce1c3a8b323560bf | 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 | 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 | 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 | shaver — Trace GETGVAR and INCGVAR, though not yet correctly. | |
d84c7e0344ed2c6bd7c28ba6a3eb286558c490e4 | 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 | Andreas Gal — JSVAL_IS_BOOLEAN does what isTrueOrFalse was trying to do. | |
0ce416b5a3df5c324d78859a3d91ddf78678a3b5 | Andreas Gal — Fix template, should use typename, not class. | |
f89cf130bd52037f006c1b950abfebe0e1c6df7f | 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 | Andreas Gal — Merge. | |
a53c3daea0e8bce5abd06e13a810b60177cf5ba5 | Andreas Gal — Added doubleToUint32 builtin and make tracker a template. | |
a2e3ea92df6516cb0f4f4f0dd04f49ee0cba5218 | shaver — fix builtin_UnboxInt32 signature and name shape_ins for debugging | |
ba845ab9dff1c7f57f002bd5de9a3a247b43b15e | shaver — Trace JSOP_NAME, and refactor out jsval unboxing. | |
b83911cb6d173cd2e7300554810276c3bfccebc1 | shaver — begin on JSOP_NAME, refactor stobj_get_slot to chain better | |
2e8512ba0fb481206e3f7d5850888bd370ee7f37 | shaver — Fix optimizer flags for interp and builtins in debug mode, and clean out old | |
e9367ede4167ffedad12590489df214df230dd24 | shaver — actually record at HOTLOOP1 (fencepost) | |
f4cec2d38f041826b410393e653496db3efa2e31 | shaver — some remaining low-hanging ops | |
e4fae864396eb19a24de8d3c48fd9bfe3fe01a17 | shaver — move JSOP_DOUBLE impl to, er, JSOP_DOUBLE (wtf?) | |
6b5d40cc17fed5881b74cf387a56cf121a8ae22a | shaver — Implement JSOP_DOUBLE. | |
859e409ef3796a8abd3e636595d06bb481e4d13d | 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 | Andreas Gal — Merge and rename jsIf to ifop. | |
6ab468ffe7f4b34721667d3eb85259d037f9eeca | Andreas Gal — Added FuncFilter from tamarin core (not part of nanojit yet since its slightly VM dependant). | |
b5556367172da3d22140e614f878a8c05eee47fa | Andreas Gal — Add helpers for i->f and f->i conversion. The f->i path goes via builtin calls. | |
46aabcce02752fce4ae10eda1cfc9a6371337474 | Andreas Gal — Add type primitives for numbers (isNumber and asNumber). | |
8bff19dbf023f7acfb312941c8ccb149d1c4f388 | shaver — Implement JSOP_IFEQ, JSOP_IFNE, JSOP_DUP, JSOP_DUP2. | |
3d66327238969be22f6d92dfca5fa7bde24dc8af | Andreas Gal — Add casting for objects and cleanup casting code. | |
b1d8fd0005e9ce0d1d0387ad1f2a2122d19bf336 | shaver — let JSOP_GETELEM handle boolean values too | |
6272876588dca9a03a207db551c0d1104c56df6c | shaver — Handle boolean lval in SETELEM; now runs access-nsieve unmodified. | |
355d79be4adfe120ebcb0ee2f61ee463106f10e5 | 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 | Andreas Gal — Merge. | |
138fc2d7f4fe744306e5244549030edfb3d9469c | 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 | shaver — Allow hole-filling JSOP_SETELEM to remain on trace. | |
04f3c8fdf238f14566efd1fa27c716d3e486c4d8 | Andreas Gal — Fixed boolean boxing. | |
0523b54c86d82a7aa4dc531290557630c07a4c70 | Andreas Gal — Added boolean boxing/unboxing code. | |
e3af49ee7476edbcc11fab2097190f52c66933e9 | Andreas Gal — Use default parameter in LSH/RSH/URSH to indicate we don't care for the overflow. | |
d23078399de1315e772b009814d1680b3edc51dc | Andreas Gal — Added missing jsbuiltins.cpp | |
6ffdcbdb066c1963380a2e12e4e99f601da2f8ba | Andreas Gal — Add support for some misc opcodes including binary and arithmetic and/or/not. | |
639f37f76fa0a16a05e95a5b05c2fb81026914a5 | Andreas Gal — Track trace entry/exit in debug mode and count cycles. | |
f5a30a112d06eacf7a701fcf27123fd4907e97cf | 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 | Andreas Gal — Help the branch predictor in the builtins. | |
9edc74143be669124e0589c0636e026bd9d7519b | shaver — use FASTCALL for builtins | |
ac9c1fa73e6f3abb9bd736025dfbdaaf3652c400 | Andreas Gal — Style nitpicking. Fix overlong lines. | |
c0ee4caf332f33b3e992a3e7087b2e874edee87c | Andreas Gal — Finish SETELEM for int and double values. | |
977464d95d02128f8a5071cb41c4d5518ea48e41 | Andreas Gal — Merge unboxing code into GETELEM code. | |
788d1cebba153024a3dd5f932495339fa6d888ae | Andreas Gal — Merge. | |
7169fbc897a32d8410568ec93460ce95169b6110 | Andreas Gal — Added box_int_jsval for the store path. Use only there. | |
95a5982008b78be8159ce522ace431691f2d4160 | 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 | Brendan Eich — Fix dumb bugs I just committed, use JS_NOT_REACHED. | |
a03f8c8930e6ddabfc4b8828ac9cd2d94983dccf | Brendan Eich — Try to keep 64-bit portability via size_t instead of unsigned, jsuword for uintptr instead of long, etc. | |
c527aa0c12110e8a28723197be273bc57926fbff | Brendan Eich — Spacing and comment nits picked while reading. | |
970a404b47c412e491ef69374c3bf7575ab234d0 | shaver — shift ops | |
2b1334e5332d2035e96e28ef23f7af8b763be4b6 | shaver — Beginning of SETELEM/GETELEM tracing for dense arrays. Needs computed-offset | |
a87fc64eaf266a7893df7cbce5d1bb4e2898589b | shaver — update to isInt | |
2938be7b4c93504ef22e0995ac16653ce48d599a | shaver — merge | |
719aa82700052a12d95339d328e26fb680571745 | shaver — [mq]: simple-ops | |
4fcf7c5ee2fc7f8acf0817b02bea55cf4c39ec9c | 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. | |
03f3750f7a9891cafa60864f57e5c1716957ffff | Andreas Gal — 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. | |
10f55a9db85b57ff6aeaab930f82b8e7f8684f05 | Andreas Gal — Added support for SET_VAR again. bitwise.js working now. | |
6a5ca2340d494d1bff1b36763f68c7e78a471275 | Andreas Gal — Fixed some stack handling and trace activation issues. We can run trace.js again. | |
ae9f7adc0762254128de1a62b38617935dd9e589 | Andreas Gal — Cleanup of stack handling. | |
db124a3fb5a5ed207ec9e63188b287d04dc8659f | Andreas Gal — Added back support for the instructions required to compile trace.js. | |
9c29b510c584784de3902c4f65b2db17fc02186f | Andreas Gal — Properly switch tracer on and off depending on loopEdge and abort signaling from trace recorder recording functions. | |
4b9461f0261837ead4a427bf3b040ef3c7ff23d2 | Andreas Gal — Re-integrate trace recording and trace activation infrastructure. Model more closely after Tamarin. | |
34fa1af7848bb5ccde5d83efebc955e9311c47d5 | Andreas Gal — Create a stub for each opcode in TraceRecorder and invoke them from the stubs that are pointed to by the recorder dispatch-table. | |
401bf43ab0cea67c387d57e4c70522a33f147bef | Andreas Gal — Extend dispatch table to include 256 extra cases for traceing. | |
5192699cc8d8aac0de2a67746f6e330df58139ed | Andreas Gal — Switch back to mozilla-central jsinter.cpp. Lets try a different approach to attach the tracer to the interpreter. | |
7e5d184d4d0aaa126293f3b0b0da534d218a8498 | Andreas Gal — Sync with mozilla-central. | |
2bf9378f3362c194415b081e1c13b6ff10e53951 | Andreas Gal — Avoid name clash between nanojit and jsinter.cpp (full patch queued up for tamarin). | |
877f3116faae89f4fecfc20ba728d5a8dabf9b72 | Andreas Gal — Fix unnecessary type prefix (reported by bc, doesn't pass gcc 4.2.3) | |
5b8512aeaa740c7d886c0bc7abd3aba6c7b5d10f | Andreas Gal — Added dmod builtin and flag broken builtins for removal (shaver). | |
00d6535c9a737ca66d96a967e544a3f995660d71 | Andreas Gal — Support recording of ValueToECMAInt32, ValueToECMAUint32 and ValueToBoolean. | |
d5da6f30023ce6a7128c691fa2ef31cfcdcd5e87 | Andreas Gal — 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. | |
f6e82eedc29d2d5d231452f0affabe0272402a69 | Andreas Gal — Introduce a VMSideExitInfo structure (holds the exit typemap only for now). | |
0c8bf263ee1cd14f1e87b01a7c0e260911570412 | Andreas Gal — Fix returning from trace execution into the interpreter. | |
7d5278d7f234ee1b3c28c56841dc165828102ce3 | Andreas Gal — Shortcut the wait time to activate fragments after compiling a new fragment. | |
ff52c714902a2d8caeec722eb4408ba2739f2fee | Andreas Gal — Use fragmento to track fragments and add proper trace activiation code. | |
ea4d2030913b7b0ae8f2685b8cd80e59a248a440 | Andreas Gal — Fix unstable trace rejection for optimized build. | |
da95d4684d0e43fe57ebc6929891e8c5e7b7bde8 | Andreas Gal — Fix type stability check. | |
99ea7b7fbf40404983f2a5972ac6159e9e4ab46e | Andreas Gal — Add type stability check for loop variables. Rename readstack to import. | |
ac906d2bd9407662524b8230116f93b09dc99ea0 | Andreas Gal — Removed attempt to imply ints into doubles on the fly. This can't work. Use proper float loads where needed and add some initial code for builtin functions. | |
e5752cd92d9f396dc02d1ff547997b4297761f0d | Andreas Gal — Add a vmprivate field to the guard record (queued for review upstream). | |
8a001f939bd31f8c4d2b42a7e72310f0e48a531c | Andreas Gal — Indicated in a separate primitive when integers get stored as a double because they don't into a jsval. | |
44bce227ed5d3dcfd9bec3faefef49da244e33c0 | Andreas Gal — Backed out changeset 745089a5d1c5 | |
745089a5d1c5a739d7fbb5db98d1b21daee20846 | shaver — no need for rooting of integer values | |
c512cf1203274108a302e72a92fcf4c643216578 | Andreas Gal — This patch eliminates ValueToECMAInt32 and instead tries to emit specialized code depending on the true type. 32-bit integers are detected and treated like integers in fetch_int via ValueToECMA32. Similarly, int store_int NewIntInRootedValue is used if the value is really an underlying int. NewIntInRootedValue is a nop on the trace. | |
b5d17a5c464ab650347de7cf8d7417151f36fd22 | Andreas Gal — Flag ints as type INT in the incoming context if its merely a double holding an int that was too large to fit into jsval directly. Along the side exits make sure we can properly box oversized ints (by casting them to doubles). The fetch_int/store_int paths still need fixing to ensure that values are merely passed through (prim_copy) instead of explicit casting or calling to ValueToECMAInt32 etc. | |
363464372fc4116f68cf4255c1f38ae2f361f5a4 | Andreas Gal — Don't allocate 16MB code cache at startup. Instead use an exponentially increasing growth factor. | |
6d437a2b583246812137955d086e64824fe72bb2 | Andreas Gal — Generate proper overflow detection code. Requires a trivial fix in nanojit (included, pending review to be pushed upstream). | |
2642b6e679c34abddaae281f157e0f953ceec69f | Andreas Gal — Fix circular dependency in makefile. | |
ad2ddde3fd9d39aa8ab247ebfcd46749115575d8 | shaver — use floating point LIR for dealing with doubles | |
baddd2543fc9a5913cb59d450383b3c05d7df510 | Andreas Gal — Merge. | |
5593833365c9d05bd35482be801b158b5805a98d | Andreas Gal — Create type maps during trace entry and in each side exit and store them in the LIR using LIR_skip. Use these type maps during trace entry and exit. | |
e5cb0d24cb731bc630120bf11f78a170c7ffc0e1 | shaver — beginning of trace-capability regression minisuite; will crash you today! | |
eee9f1c7556a572c7af8d2b231638239462fdecf | Brendan Eich — snprintf takes sizeof buffer. | |
3e51f2d90f034fc2cada363da1f736d46abbf577 | Andreas Gal — Sync up with TT tip. | |
3c4ea6051de928a2c1189d1ff8a25e20f2ba709d | Andreas Gal — Merge. | |
6e00e0f31c560dfb46d1bfa3fc43957524659d39 | Andreas Gal — Fix deallocation bug in the recorder. We will have to lift more code Tamarin's Interpreter to stabilize the recording. | |
698856edc137f6c58f8958c8dd0dc5321b12bd5a | Andreas Gal — Better naming (MARK_EXIT => MARK_REGS). | |
46d4b17463d41588a03c9c2bb6ccf0994448a3e1 | shaver — Assembler requires that guard be on a cmp, so force that | |
45c643b522a6862dab4200014a7a38379b186db7 | shaver — fix frame offset calculation for args, I think also non-entry frames | |
01359d7a668ae26e5c583865318ebf3829e5d573 | shaver — label arg/var/stack/sp/state for easier trace-reading | |
df77fa4a3e5b743829926413ec8cb47eadad2a55 | Andreas Gal — Save the VM registers into markRegs at opcode entry and restore that state when ending or aborting recording. The same info is pushed into sideexit and used by guards. With this change we can eliminate the hack in MONITOR_BRANCH that had to adjust the stack pointer depending on the opcode type, and it also allows us to trace through the recently added boolean guard opcode fusing. This improves trace code quality, since only the pre-conditional check state is saved. The guard restores into that state, so the trace code doesn't have to emit the value of the conditional evaluation onto the stack, saving a handful ops. | |
30a18c0f363b7afc9e8b97dafcb06d43433c172e | Andreas Gal — Rework memory management, don't leak memory in the filter pipeline. | |
3dcda8cce1d7913534236f9496e44bf38179a013 | Andreas Gal — Save the side exit state at entry in to the opcode (since we want to restart ops) and enable store filter. | |
4261e41eccc8010be4afc1d1cba2aa6be0d9ba31 | Andreas Gal — Sync with TT-tip. | |
a53a1fc6054cead81ab777e60e28b7eb8d5e8711 | Andreas Gal — Cleanup memory management. Use new char[] inside our overloaded new operator that clears out memory. | |
5669d738e1fee707b49c1fb9895ff8ca41b3f7d6 | Andreas Gal — Use #ifdef DEBUG instead of VERBOSE. | |
b03fd7a5b45d4aff8dc6ac5be0e0f94a48e2a2bc | Andreas Gal — Must use (&gc) new otherwise memory doesn't get cleared (found by danderson). | |
1bf762639bd07f2ad0c838c23c554e3b6da7e2ab | Andreas Gal — Merge. | |
079cdd003c8aaaa106ebf8fd7074ea28d218f80b | Andreas Gal — Housekeeping (add comments, removed some dead code.) | |
739285b494b8fa078f6db8956c61aa6843b51380 | shaver — synthesize LIR_ne using LIR_eq instead of LIR_ugt, per edwsmith's wisdom | |
fbb073357c595f8a9eebbc3380a4fd6d89c2bc16 | Andreas Gal — Mockup of trace execution. Speedup is 10x for a tight loop. Keep in mind that this is a hack and the trace code is not optimized yet. | |
676e746becda45cd99a64d7fef758fe7bf1fed2b | Andreas Gal — Execute trace code. Boxing back the side exit state is not handled yet. | |
931f133220e3a569150cfbaf2a86961a5317a5b5 | Andreas Gal — Fix native frame addressing (reported by vlad.) | |
2a26ff7f76928afa6b1bfc88aa254940ff76bb04 | Andreas Gal — Disable fusing of conditional check and branch when recording. | |
77cc23e2d53c734ad6caa9602caab8686e94b572 | Andreas Gal — When a conditional branch instructions terminates the trace, we have to make sure its restartable, so put the conditional value it was deciding on back onto the stack by incrementing sp before jumping back to the outer interpreter. | |
5e199f65bd2485f5a65cff2eea530a7ab1965470 | Andreas Gal — Initialize jump table when side-entering the interpreter. Keep track of cx and sp directly in the recorder instead of going through the tracker. | |
52a27edd2802d137aa7a4e42a7abc0cf4dc7c37f | Andreas Gal — Guard inside the clause, not seperately. | |
2a09d92140a0334e4de9d22c775e11b908355d12 | shaver — guard on inlined branch in TRY_BRANCH_AFTER_COND | |
d5babbef5f31c07618ce86d434de50a4c22443f3 | shaver — Merge with mozilla-central as of c5dc9d84d476, and restore obj-to-boolean fixes | |
5406f43960b997c6782e889a027b50bbd386d7bf | Andreas Gal — Merge. | |
0f0c02db960b84edfede54656e67089f82cb4843 | Andreas Gal — Remember JSContext instead of trying to keep track of frame pointer. | |
b901845cf938c2f8342e94d1a2487b2ffe5da714 | Andreas Gal — Cleanup trace abort/end code. | |
2b107c27dedf58fbbe8348288206d67e418f5975 | shaver — Fix prim_object_as_boolean (was reversed in meaning in both interp and trace | |
d8a2f6501b3bb7f8a2ab8b66ce2241fba2bbf722 | Andreas Gal — Make internal form of nativeFrameSize private. | |
32f601cb72c6a2fbf2b0f175b1ecd2f39c352cd5 | Andreas Gal — Merge. | |
7d839e95854ddbd5d928552532b2c223ef3b0a64 | Andreas Gal — Rewritten frame management. Use cx->fp->regs chain instead of direct passing of those structures. | |
a985dfddfcb9958ddb888cb818145cf4a1bf3172 | shaver — fix typo in DoIncDec leading to script termination | |
2ce7be9e8b4797b5e0de267b4590d757bf439365 | shaver — Implement icmp_ne (in terms of LIR_ugt(i, 0)!) and make JSOP_NE traceable. | |
bc4650b498ef51a2951ad111be21c06d67ef61c3 | shaver — avoid trace-troubling temporaries via cast gymnastics | |
577e959ad469edf5536d880788df32cad684ad69 | Andreas Gal — Hook up pc and sp to the tracer in order to generate proper PC/SP adjustment code. | |
64c361e213ff6ec902682bf55024381d9f446ccb | Andreas Gal — Move obj_is_xml into interp since its not a primitive. | |
ba44622e1a78b8419891678cb5c2621e7023f7f5 | Andreas Gal — Merge. | |
4f4a8b53b2933b56bd098ba1ee148b1aa86a5f68 | Andreas Gal — Small cleanups and licensing blurb housekeeping. | |
4124dfd6a4212a902a47d7488bfa278dca9cff15 | shaver — More work on tracing EQUALITY_OP. Still need to synthesize LIR_ne before it | |
d69cf8291544bd167f976c5452e22d49c318e30d | shaver — abort tracing if we see an XML object in an equality op | |
af3f8c146e59da9877fb804c428688b01abd7239 | shaver — Add guards for XML objects, and some tracer bits to accommodate them. | |
57e9580712a55356e70e17298a33ae0b15f654ee | Andreas Gal — Merge. | |
913bf6c774b80d11cde46a70fdf86d5fba0368f1 | Andreas Gal — Move recorder initialization into TraceRecorder and encapsulate its state. | |
ab282724f081f709ca6f4432bcb97f10118c8fbb | Andreas Gal — Add a way to calculate the current size of the native frame. | |
bccc56273189692a09ff2ee8236f622860301cf4 | shaver — merge | |
e69e80c40dc515cc194dbb3c917a8813d4a507bb | shaver — rename ENABLE_TRACER to TRACING_ENABLED and explicitly parameterize on cx | |
091d147ef171473b300df0b1ee91992f5048fe31 | Andreas Gal — More concise conversion from object to boolean. | |
e8032bbc4b5a9978e0f3c5a9f6e5dcb0bce1819e | Andreas Gal — Clarified argument names in guard code and explain better why we guard for overflow the way we do. | |
2ae02e8b41dd6beea0bc0fd8902483a0cc00f7b6 | Andreas Gal — Added missing > which has been bugging me for the past month every time I saw it. | |
4b37517aace64772688745053a205844c058cadc | Andreas Gal — Instead of guarding on null -> boolean conversion just emit a null compare and use the boolean result. | |
136af9cafd327877b01138ce89d88a287a0f2448 | Andreas Gal — Throw out a bunch of primitives (guards) that we are no longer interested in. | |
9a9070f8409888cb512b749c444a13c22451ac62 | Andreas Gal — Add a new option -j to enable the JIT. The default is off so we can easily benchmark the overhead without the tracer. | |
4936f8003a9f1182c9b285ab2c4590a59d0f51ed | Andreas Gal — Prepare LIR_ov to be used as soon Ed adds it and add a few comments that explain how overflow is handled. | |
f69ebf1530942a2cc69d36edf363ea191e6806d9 | Andreas Gal — More cleanup and code move into TraceRecorder and prepare for LIR_ov. | |
576c82cfc35b12233da21895e0d9d0ccecfd89d1 | Andreas Gal — Slight cleanup of the guard code emission in the trace inlines. | |
5a2a95cd05b5d057f4c0878cac424291caab0618 | Andreas Gal — Move the recorder functionality into TraceRecorder to unclutter trace inlines. | |
a0491b8e346e46b2e024381d138f2ef3eb75a713 | Andreas Gal — Move set/get into recorder and introduce init. | |
ef7d4b220611d7688ff56af68238ecfa02ad317e | Andreas Gal — Moved loading context slots into the recorder (more to follow). | |
09027170db1516d676c84032a3139e0e5a6c1eeb | Andreas Gal — Make sure nativeOffset uses 64-bit slots on the native stack. | |
06fe0120caea03db1ce71ae50df641a3538dfdf8 | Andreas Gal — Turn macros into inline functions and start prepatations for inlining function calls. | |
77c5266c9c7060436bda054cb8168b923756a2e9 | Andreas Gal — Drop JS prefix from classes related to traceing. | |
6b895cecea39334748da2757377b370970a946ea | Andreas Gal — Merge. | |
14017425deb50771babb2dd8c4af1bca377f1648 | Andreas Gal — Backed out changeset fa82b7eda72a | |
04c3808301548e9579d762a7f2a96a57909b6f56 | Andreas Gal — Removed debug printfs from tracker. | |
5650f7e8e6143602115bcfb9431cc8f799e612f9 | Andreas Gal — Allocate recorder dynamically to avoid having a vtable in the struct holding the reference. Emit writebacks for every update to the tracker, not just stack writes. | |
fa82b7eda72a113289fb998c7907ca125c846253 | Andreas Gal — Parameterize tracker. | |
e7034a27336ed9924ce575f7b3d872c6f3d02a3a | Andreas Gal — Merge. | |
151147ad0122525e2ce7efd8031b96a3ed92757e | dvander — Fixed malloc/delete mismatch (Valgrind was complaining) | |
23fde84128cebc3d8a9910f63dcac29a73586cfa | Andreas Gal — Fix a bug in tracing can_do_fast_inc_dec (wasn't tracking a copy and traced incorrect code). Merge with TT tip. | |
23780f71a0c7f3189c13043b48051eeee0d00780 | Andreas Gal — Removed debug code. | |
77f86c99e3443369c4ec596a8670127529eafee2 | Andreas Gal — Merge. | |
2c10ddceb1280f4649a2963135f06d6a6ddbc03a | Andreas Gal — Merge. | |
a6818f87ee5b0fb8c5de2f06a2fe88f038386307 | Brendan Eich — Add license block-comment, expand tabs. | |
c387371434d7e3c47792986e335525d6f1a331f5 | Brendan Eich — Random style nit-picking. | |
cddbb2795488600b9dac17a4edfb6195e2eb749c | Andreas Gal — Added example code for tracing. | |
dac662a76ad41d9c863a902badb77338f8f210bb | Andreas Gal — Don't setup debugging data structures when not debugging. | |
6ca9805437d49c6445ae7eade75d63b68fc63838 | Andreas Gal — Removed old comments that are no longer correct. | |
38fc51d39760d7e695d0a5b49cd9a5cfd14e0863 | Andreas Gal — Check at runtime that fast inc/dec is possible. | |
8e500d49e006a572dea535831db09a5ab6231776 | Andreas Gal — Eliminate boxing in trace code. To execute such traces all values on the stack must have the same type at execution time as at trace time. Code to detect and enforce these types will be added next. | |
dcb7c32a4aec95e8cea3ff2355751a73cf8df5d4 | Andreas Gal — Write back stack/local variable state in the trace code and improved redundand boxing/unboxing elimination. | |
d26cdf219bf147c16d2b73d421cbdfd076071ad4 | Andreas Gal — Added end-of-trace detection and make sure trace loops back to the loop header. | |
f566dfd03548418c9a74c6e8f9b4cb0e6dbc516e | Andreas Gal — Fix guard code assembly. This code generates trace code for the first time. | |
6fec9157a4067cd04cacc2ebd1301befc5953a5f | Andreas Gal — Mork work on attaching nanojit to our primitives. Traces have now their own box type (Box), which is an opaque 64-bit value. Its never supposed to appear in the trace since we will optimize away all boxing operations. | |
a7edb7cd3362cbe28a01a2a7b4ecb43c41309f48 | Andreas Gal — Start attaching our tracer to nanojit. This is incomplete and meant for review by David only. | |
a7479a421b1f1c8a9c80f4f0790ba21ee5ee2e46 | dvander — Fixed the test case not setting the lastIns value in Fragment | |
38c874659fd11bf897461647bc611ffa5d35e336 | dvander — Fixed _thisfrag not being set in beginAssembly | |
3a9105044eca3564eab99559a462d5ccc570045d | dvander — Fixed beginAssembly() not setting _thisfrag which verbosity requires | |
203dfbd07c57cb71fff81cbbe9c7d9d2102e7439 | Andreas Gal — Backed out explicit zeroing in the constructor of Assembler and Fragmento. | |
078420525d87e6cbeab3a1e59b44232ae295e636 | Andreas Gal — Backed out changeset b142c62e7602 | |
b975a7654d67ec5101e60998bdfe20fd90f15b8a | Andreas Gal — Back out explicit zeroing in the constructor and ensure heap allocated objects are implicitly zero-ed out. | |
964b07241594858a4ae89c091fdd460579f14de6 | dvander — Fixed cases of the tests not prepping the tracer properly for verbosity | |
b142c62e76027d033f4de865ed14575510f05a8b | dvander — fixed constructor relying on zero'd allocation | |
196cde35a54f13d4ee58616becd433eabf0c390c | dvander — fixed memory corruption in verbosity initialization code | |
cac9a2d3d6d8fbbd5318793befe6c9cd2c8b19cc | dvander — use valloc() on Darwin for GCHeap | |
05da54aa7fa2c87739a033375a7080e06fad5270 | dvander — fixed code generation for the LIR_in -> LIR_param change | |
20e5bdc300829716dae277fa4c6b69eb398b2027 | Andreas Gal — Properly align pages allocated by GCHeap. | |
5f82f32b94d0b79df0831c914fd57b067be46ce6 | Andreas Gal — Switch to malloc (avoid new where possible) and properly initialize capacity. | |
c35309e73a1c4a8aec566637504945412d29c253 | Andreas Gal — Added danderson's test cases for nanojit. Execute with nanojit() from JS shell. | |
c8ec9d50b89ba3ab17156080b3e33943414923bd | Andreas Gal — Added hook to trigger nanojit test code from the JS shell. | |
d7f7e6fe6ebe505772fbd4f30b863e8a88440c4c | Andreas Gal — Drop helper code that is no longer needed. | |
8c621db6a231a8c9d47a164f86785455afe3b977 | Andreas Gal — Added necessary glue code to make nanojit compile in DEBUG mode. | |
378807e85abc0e91a11fb3c414b85d265c356ca8 | Andreas Gal — Landed nanojit in TraceMonkey. This is untested and DEBUG must be off for now since we don't support AVM's String class. | |
af2c8cea077ab73bdb895a5f302001e9fd7262d9 | Andreas Gal — Added Assembler.h and vm_fops.h (blank for now) from TT. | |
703852bb249938b172156a13c9950670881b5c87 | Andreas Gal — Added RegAlloc.h and Fragmento.h from TT. | |
822efff560ea9b6c84a035030547edb0c4e7c56b | Andreas Gal — Added LIR.h from TT. | |
98b15b1d79bdc5b2be5404e3faa8bc0ff49073ee | Andreas Gal — Added Native*.h from TT. | |
77195f4d8de82dd03e9271ca4b8664f255461e80 | Andreas Gal — Added nanojit.h from TT. | |
66f37a19393accc0921ab6aa2d0a38748e4acdef | Andreas Gal — Renamned avm.h to avmplus.h | |
27b3ace3bf12f332d15e1414d60bb3e964711043 | Andreas Gal — Added BitSet data structure for nanojit. | |
8e8f3866b6ee3609c74cd670aef7da6dee5fad80 | Andreas Gal — Rewrite AVM's data structures to work within spidermonkey to create an environment that allows us to land nanojit in SM. | |
59fe909d796932cf8a172832c227ce9292d74e33 | Andreas Gal — Make fast inc/dec traceable. | |
fa41975df36b022b9d963dab0d6fbdb787d296c4 | Andreas Gal — Added new primitive guard_can_do_fast_inc_dec and report reason for trace aborts. | |
8fa01370a1c6eb024f4e1400c0a80d0a9a7e2761 | Andreas Gal — More work on the recorder. | |
21ab9b990a6a5f58ae1643d694dbde1fb5d4d80d | Andreas Gal — Fixes to the trace recorder. | |
695e11bf907d529aec7589cf5f59df2634895548 | Andreas Gal — Merge. | |
7b2d68a137cc7680a3bd8b7ced9c8367308baed3 | Brendan Eich — Fix slew of gcc warnings, clear pending exception before triggering recorder error. | |
75910f31ff657d39f3a5fe3d47d7e4608988f335 | Andreas Gal — Call into the recorder for each primitive. Don't use vp in primitives, use &v instead. | |
341346bb54372758d29e6f138c94860aac309748 | Andreas Gal — Notify the recorder of all primitives as they are recorded. If the recorder doesn't support a primitive we abort the trace. In debugging mode this also stops the VM. | |
91ba153e72f96ae50f06883caf45c354bcce088a | Andreas Gal — Merge with be's last push. | |
bad02ba8aee9f8bd71912b71b43775a2639224df | Brendan Eich — native_pointer_to_jsval should not lose low-order bits (plus random style nits). | |
d2a74e1507aefc9765fcfbc9dfe0fca2628d2bbf | Andreas Gal — Initialize ok to true if we didn't side-enter via state. | |
f89e1b7fafa762cbbd5370ef2448a25ba2c0c74d | Andreas Gal — Use an error property in the recorder instead of a return value to indicate errors and make sure DO_OP aborts the trace once we go into the error state in the tracer. | |
a13ba208e5096773ddb61ce90ef5acff73a8a823 | Andreas Gal — js_CallRecorder has no return value any more. | |
7fd3d9c74652ac914943612548b47b0d1a2142c0 | Andreas Gal — Track data flow through variables in the recorder. Set an error flag if the recorder signals an error. | |
ad200cfeb803bdf6ec9f5b1e3df5343c2c17bbf6 | Brendan Eich — Fix used before set ok bugs, fiddled ifdef style a bit. | |
d809377ccb1aa9a8506665a0096c87d998ae6301 | Brendan Eich — Expand tabs. | |
0fb79817d67b4d4d0e977898097048f2c2b31dab | Brendan Eich — Kill trailing spaces. | |
618b6c0fe57e9ddb66cc46a16c6b8855f0fac8d6 | Andreas Gal — Start hooking the recorder into the tracer. | |
e011b9a25ddb76a1a354607dd03948871d41164c | Andreas Gal — Pass JSContext* to all primitives (needed by the recorder.) | |
173b25cd55ee562e5042d4e8d73815b18cfb244b | Andreas Gal — Allow recorder to abort recording. | |
932405ad8feff5263b6ec81bdce421266d5d1f71 | Andreas Gal — Save and restore ok when switching interpreters. | |
780fc3577e5c73d069d2ee9207676a8c21ed37e2 | Brendan Eich — Init ok before goto exit, plus indentation style policing. | |
9468b32713dc7ebd194b53f08263db07ae3cc815 | Andreas Gal — Cleanup and fixed beneign bug. | |
ae95e4bcd0bfe911096cda5d74488fa0dcc74e45 | Andreas Gal — Notify recorder when tracing starts/stops. Restore code accidently lost during last merge. | |
2981e86cc0d723020df5a481c5d3dc2bba43d603 | Andreas Gal — Connect tracer with the interpreter. Errors and exits are handled in the main interpreter. | |
ed2e73551ac7b475c8366f0343797ef9df9791e5 | Andreas Gal — Merged with Brendan's changes. | |
2eadd3630e4c926e1a7c17f7e0a561dd29735f7f | Brendan Eich — No need for eval call. | |
cedc5f7867b69a32179d2d83cc9658e0e505751b | Brendan Eich — Minimize JSInterpreterState, fix warning. | |
e1a6be3a3f98c679501def18e4480d956626df5d | Andreas Gal — Added code to switch to the tracer and back. Incomplete and for review only. | |
b4c57593abb2dc9102b631725b5e7c96e60defdd | Brendan Eich — Style nits, plus no need for rt in JSInterpreterState. | |
0003fed8f30b2d98ad2fad0d68fe8e89359c2b02 | Andreas Gal — Create a side-entry path into the interpreter that bypasses the initialization code and allows switching back and forth between two interpreters (i.e. tracing and non-tracing). | |
9b83fbc282d08c30e1c35d3bbae1afb89304f2b3 | Andreas Gal — Added branch monitoring using a single unified branch frequency counter. | |
ec3574da400646bdbfe5b5b376c4c52818d18334 | Andreas Gal — Removed JSOP_HEADER code. Its too costly. This patch restore essentially the same performance as unmodified SM. | |
37976bfa3bf526de3767ccfeb37002358fe0fbbd | Andreas Gal — Disable JSOP_HEADER counting. | |
605fa476bd9bd2744b3174e07260731a19ed02e1 | Andreas Gal — Use higher optimization settings for jsinterp.cpp to ensure inlining. | |
0e190672ef4e541f416386160426b62ecd80a61c | Andreas Gal — Fixed typo that caused sunspider to fail. | |
a66e3757fe3f8a9f7651d7b928c2a7827c6736a1 | Andreas Gal — Merge. | |
431e18f554dc3a911940c708ba6606e55a7562c4 | Andreas Gal — Merge. | |
97859f3b3b92d7d3abd94d2b897618f45e38241b | Andreas Gal — Backed out value_to_iter inline method extraction. | |
4bd428c4250c68f46c1a3077af53b0d85e915e1e | Andreas Gal — Merge. | |
0e51ce4705a99306be73abe441fef2b343ec6fd1 | Andreas Gal — Backed out do_dorinloop inline method extraction. | |
e72b04a575265bf06358e80c3952fee1a2fd7b1e | Brendan Eich — Merge. | |
74ede2099d05fbac83fb44ee8b35b82a62bf2bb5 | Andreas Gal — Backed out extraction of code from the interpreter loop as inline method. | |
18e5bb903af37da1e38f3ad3c2bc10ef40e78e85 | Andreas Gal — Added tag tested for changeset d1a7596d7887 | |
d1a7596d788757799a1aa5f5d09eac32ff811831 | Andreas Gal — Transform do_dorinloop goto/fall through hack into a proper inline method. | |
d02d00fbb9f606125a9b2d04ab2c2387c7a34113 | Andreas Gal — Convert value_to_iter goto/fall through hack into a proper inlined method. | |
cefafc563f49ffe6d323a9525e52f957f4eac0c6 | Brendan Eich — Fix firefox, etc., (top-level mozilla) builds. | |
783ab3f4f488fb54bf50ccb6a7ac424c4217f84f | Brendan Eich — Merge. | |
39fddc89d6c7646ec1742f2264ca113ab21d5e38 | Brendan Eich — First stage of loop table work; bitmap free space management and GC hook-up still to come. | |
15fb0c1efd77e38d1499822ab500e8169ceaec01 | Brendan Eich — Fix decompiler (hack, really) to cope with misplaced JSOP_HEADER in update part of for(;;) loop. | |
bee80ed3540fd4086a0b8d59691c87dfab774639 | Brendan Eich — Merge, simplify names, and police style. | |
48ffc3e5564b38c2e67a12f5b9889acd91bee787 | Brendan Eich — JSOP_HEADER takes a byte index of loop header counting from script->loopBase, and related changes. | |
82fcc97a2c99dae4f628b11bd2d7f938cd315c7e | Brendan Eich — Fix ReconstructPCStack oplen code, extend js_OpLength to avoid cs recalculation where possible. | |
d7a5198071ce956e89e79f5ace3b175107a11031 | Andreas Gal — Introduced a JavaScript recording script that is loaded dynamically. | |
a35cf568c2f12b06c38863a546ea29cbb9df325e | Andreas Gal — Store the recorder script in JSTraceMonitor and make sure its traced by the GC. Also clean up the tracing of JSTraceMonitor. | |
855d3dd9f89581f3bfdb2aac7a81264ff6523cef | Andreas Gal — Backed out previous attempt to find a place to stash the recorder script. | |
159f25b5b55290dbdd963bb4bf95aa27ca9ddb50 | Andreas Gal — Backed out changeset 3029f4d57bd2 | |
f40c6d08bbc5f891c4dabd80fbb39a36af655ffd | Andreas Gal — Switch to a uniform style for jstracer.cpp. | |
3029f4d57bd20990dd25434b89d552da4850975e | Andreas Gal — Add location in the context where we can hold the recorder script and make sure the GC traces it. | |
3f653ed082c6919e7fd127b12f2e510a9db68ce2 | Andreas Gal — Remove InitTacer. Pointless for JSRuntime. | |
8b55e6657beace519053785a5598a3723e50c214 | Andreas Gal — Compiler fixes for CAS patch. | |
acac4e2f37133db3f91904aac9c2aa5eb5d59317 | Andreas Gal — Merge. | |
3212c3f806cce803a5614c0542046159f914e657 | Brendan Eich — Fix so it compiles, also avoid else after return. | |
25c9be07232c76c60aa3b7608f6feb7e0fcb7c53 | Andreas Gal — Make js_CompareAndSwap visible outside jslock.cpp. | |
16ffabb5defbb8c5480573e57764c580bef26876 | Andreas Gal — Move all inlines that do not represent primitives out of jsinterpinlines.h since we don't have to overwrite them in jstracerinlines.h. They live in jsinterp.cpp now. Added missing error handling for prim_ddiv and prim_dmod. Make sure prim_ddiv and prim_dmod do not call other primitives. Fixed bug in dmod (-1 should be n, but since all invocations had n=-1 this was a non-issue). | |
cc2af8bca37f0d5641f8099423574fcfe831c567 | Brendan Eich — Fiddle loop table slot interface and impl in hope of freeing slots over time. | |
224cd9c69a164a5b040cdec99f794a2b50ddfae2 | Brendan Eich — Use correct idempotent include guard macro name. | |
b8bab0f8f4a135802b3d614398b7aa973dce4412 | Brendan Eich — Merge and undo js_AllocateLoopTableSlot reparam. | |
69e89ed25d335659980fe1ec708dddeb1dc715e8 | Brendan Eich — No JS_TRACER ifdefs, keep line len < 80, reparameterize jstracer.cpp functions, js_OpLength helper. | |
6b03a869bb1cea802988c7eac042c67a82122ee7 | Brendan Eich — Avoid overlong lines per modeline comments. | |
5c416b3706ae7db79a9bc27563cf03d383c32790 | Brendan Eich — Merge, style nits, no locking for tracing. | |
2a51b11c390c0d826cffaa21fbb48ce559fc93c2 | Brendan Eich — Left brace style. | |
340fd2ddb2ae206533d473def16f7bfa28a22222 | Brendan Eich — merge | |
da54ae4ebb7c3adcf89174796f39ee3494cc9f8b | Brendan Eich — merge | |
09d8fde18a45248202b1a122563f09312229ac01 | Brendan Eich — Fix goof in switching from word to jsval counters. | |
07a3235bb1f19842e1a051e155424cc44711a897 | Brendan Eich — Instrument loop headers with jsvals above fp->vars and below fp->spbase. | |
e707f1da531eb7d985fb0f26fe3b288113bb97fe | Brendan Eich — Split trace-supporting inlines, add ifdefs/macros for deriving js_TracingInterpret in jstracer.cpp. | |
0ac401c7dcceefd8025ceaef027072f565a530c3 | Brendan Eich — Style (and substance for vim users: left brace opening in column 1 enables [[ navigation). | |
b46fcf1b955182486e98993738b5c9f1cf338099 | Andreas Gal — Assign fresh loop table slots for all JSOP_HEADER opcodes in a script as it is thawed since the slots we stored there are likely stale by now. | |
1805b63c9f77b324f91468614f00ee6b9e4a4d71 | Andreas Gal — Fixed a bug that triggered the tracer at TRACE_THRESHOLD/2 already. | |
5e055a8c1fef2ef1038820bc2285eca4b53e14dd | Andreas Gal — The table is now per-thread in a multi-threaded environment, and per-runtime otherwise. During code generation we merely allocate a loop table slot to each loop. Each thread will enlarge the table as needed in JSOP_HEADER. | |
0c74d1995a37ea4f9844bb86023994fffff6fb00 | Andreas Gal — Add a per-runtime loop attribute table that associates a jsval attribute with every loop in the code. The jsval is used initially as a counter until a certain threshold is reached, at which point the loop is traced and compiled and the resulting native code object is stored in the jsval to be executed for future encounters of the loop. | |
5eee494d5f061157f47c00d9c76605c00fb7b7d5 | Andreas Gal — Steer macro naming in jsinterinlines.h using a macro. This allows us to prefix all primitives with some prefix (i.e. interp_) when we compile the tracer and replace them with new primitives that invoke the interpreter version first, and then do some tracer specific action. | |
bd1d2405ea5ecf6592cbeb4ff9b5682b7cc5cdec | Brendan Eich — Fix goof in switching from word to jsval counters. | |
8019f065443a8ada678b2f8f1efcd8f5ed2c3350 | Brendan Eich — Instrument loop headers with jsvals above fp->vars and below fp->spbase. | |
4036ebe64345becdac54ca4c084f01a8cb5f4f85 | Brendan Eich — Split trace-supporting inlines, add ifdefs/macros for deriving js_TracingInterpret in jstracer.cpp. | |
c75cf4011be75d3db32d4db7ed7096cc21f91f80 | Brendan Eich — Style (and substance for vim users: left brace opening in column 1 enables [[ navigation). | |
1c495025f185a9e1e3beb14f064b88af12e20e68 | Andreas Gal — Make relational operations (<,<=,>,>=) traceable. | |
cca08ddd5e978ee3e055b576b522f884a57720e2 | Andreas Gal — Mark getting and setting arguments and local variables as safe for tracing. | |
77e835f850beea7167ae6a665607c0991e531fd0 | Andreas Gal — Make branch instructions traceable using a new primitive guard_boolean_is_true. | |
bc4ea1dfdb2db4f84f18cd9e712b541cb0c0f7ac | Andreas Gal — Enable tracing for selected opcodes that do not have any remaining tracing hazards. | |
1e8aed6c7201d4db8e8ff1eb332ad8654888d10d | Andreas Gal — Opcodes that can be traced through can be declared with TRACE_CASE(op). Currently all opcodes are declared as BEGIN_CASE(op), which automatically aborts trace recording. In addition, error handlers (defined with DEFINE_HANDLER) also abort trace recording. At every backwards branch trigger monitor_branch(), which will monitor for new trace tree anchors. | |
5c552143c1b3c335cd55bdc38d2368213815777b | Andreas Gal — Introduce primitives for common binary operations. | |
343a7e6713a3673d1884d728b97b82a8412e69b9 | Andreas Gal — Convert macro code in jsinterp.cpp into inline functions and introduce trace primitives (prim_*, guard_*, call_*). | |
5c9fdaab8776db17eab4258784a15f3fca4e675c | Brendan Eich — From Igor's patch for bug 433382. | |
251c171475d361646abfddf5df87e29505b6c95a | Brendan Eich — Fix bad merge. | |
5783ce0bad4f085912b1697ccfed22b61e150798 | Brendan Eich — Igor's patch for bug 433382, r=me. | |
9f158c90185bcae0c60c7376b9039095c3202bca | Brendan Eich — Fix POP_STACK to take a macro out param. | |
ef81950a59e686a777e38f128901b352befcd381 | Brendan Eich — First round of macro cleanups to enable tracing. | |
b3d09506eaae1fcb5cbddf76c6e4cd95c2b0ee2a | Brendan Eich — Igor's fix for bug 432881, r=me. | |
6e4e82c5932f463b82bf5463b8e34de2a91b7e73 | Brendan Eich — Fix for bug 433672, r=igor. |