Commit Graph

1744 Commits

Author SHA1 Message Date
Andreas Gal
71546267c3 Rewrite AVM's data structures to work within spidermonkey to create an environment that allows us to land nanojit in SM. 2008-06-18 19:55:26 -07:00
Andreas Gal
e04746d2c0 Make fast inc/dec traceable. 2008-06-18 17:40:32 -07:00
Andreas Gal
1a0333027b Added new primitive guard_can_do_fast_inc_dec and report reason for trace aborts. 2008-06-18 16:23:24 -07:00
Andreas Gal
ee79053ae8 More work on the recorder. 2008-06-17 20:24:07 -07:00
Andreas Gal
737e387076 Fixes to the trace recorder. 2008-06-17 13:30:59 -07:00
Andreas Gal
40be837c3c Merge. 2008-06-15 17:49:28 -07:00
Andreas Gal
6fedd2b687 Call into the recorder for each primitive. Don't use vp in primitives, use &v instead. 2008-06-15 16:31:28 -07:00
Brendan Eich
77dcedf8cc Fix slew of gcc warnings, clear pending exception before triggering recorder error. 2008-06-12 12:07:04 -07:00
Andreas Gal
179be35727 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. 2008-06-11 20:22:00 -07:00
Andreas Gal
448d1ba7e3 Merge with be's last push. 2008-06-11 18:13:43 -07:00
Andreas Gal
ab59446c58 Initialize ok to true if we didn't side-enter via state. 2008-06-11 18:05:58 -07:00
Andreas Gal
bb1b206714 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. 2008-06-11 17:59:28 -07:00
Andreas Gal
2a34b19f23 js_CallRecorder has no return value any more. 2008-06-11 17:36:35 -07:00
Brendan Eich
a64ed1a5ee native_pointer_to_jsval should not lose low-order bits (plus random style nits). 2008-06-11 17:21:15 -07:00
Andreas Gal
54dd5103e9 Track data flow through variables in the recorder. Set an error flag if the recorder signals an error. 2008-06-11 17:15:49 -07:00
Brendan Eich
c58ac03421 Fix used before set ok bugs, fiddled ifdef style a bit. 2008-06-11 13:55:34 -07:00
Brendan Eich
6be978e069 Expand tabs. 2008-06-11 13:09:25 -07:00
Brendan Eich
74c80d5597 Kill trailing spaces. 2008-06-11 13:07:24 -07:00
Andreas Gal
b484f790e4 Start hooking the recorder into the tracer. 2008-06-11 12:12:29 -07:00
Andreas Gal
73698e5e72 Pass JSContext* to all primitives (needed by the recorder.) 2008-06-11 11:46:47 -07:00
Andreas Gal
fef28e9f56 Allow recorder to abort recording. 2008-06-11 11:29:35 -07:00
Andreas Gal
3e75d9e04e Save and restore ok when switching interpreters. 2008-06-11 09:01:29 -07:00
Brendan Eich
e90aa46c27 Init ok before goto exit, plus indentation style policing. 2008-06-11 03:41:50 -07:00
Andreas Gal
76f6917ece Cleanup and fixed beneign bug. 2008-06-11 01:32:02 -07:00
Andreas Gal
50bf94c527 Notify recorder when tracing starts/stops. Restore code accidently lost during last merge. 2008-06-11 01:22:39 -07:00
Andreas Gal
9bb9f4893d Connect tracer with the interpreter. Errors and exits are handled in the main interpreter. 2008-06-11 00:21:51 -07:00
Andreas Gal
8dee65f176 Merged with Brendan's changes. 2008-06-10 22:30:46 -07:00
Andreas Gal
c79c0bfeef Added code to switch to the tracer and back. Incomplete and for review only. 2008-06-10 22:20:05 -07:00
Brendan Eich
f8e68441c2 No need for eval call. 2008-06-10 21:46:03 -07:00
Brendan Eich
45358518de Minimize JSInterpreterState, fix warning. 2008-06-10 21:40:47 -07:00
Brendan Eich
57eff0cc24 Style nits, plus no need for rt in JSInterpreterState. 2008-06-10 19:40:09 -07:00
Andreas Gal
b5238a9929 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). 2008-06-10 17:45:38 -07:00
Andreas Gal
17d0d41459 Added branch monitoring using a single unified branch frequency counter. 2008-06-10 16:49:05 -07:00
Andreas Gal
a1bf0819b2 Removed JSOP_HEADER code. Its too costly. This patch restore essentially the same performance as unmodified SM. 2008-06-10 14:44:51 -07:00
Andreas Gal
aa4de72f2b Disable JSOP_HEADER counting. 2008-06-10 14:17:05 -07:00
Andreas Gal
5f7b163827 Use higher optimization settings for jsinterp.cpp to ensure inlining. 2008-06-10 13:59:43 -07:00
Andreas Gal
b54446d182 Fixed typo that caused sunspider to fail. 2008-06-09 18:30:08 -07:00
Andreas Gal
82d514b492 Merge. 2008-06-09 14:48:23 -07:00
Andreas Gal
0077c6a422 Backed out value_to_iter inline method extraction. 2008-06-09 14:47:14 -07:00
Andreas Gal
76e4f25384 Merge. 2008-06-09 14:46:26 -07:00
Andreas Gal
70e23d6dc1 Backed out do_dorinloop inline method extraction. 2008-06-09 14:45:32 -07:00
Brendan Eich
a6b3eeb630 Merge. 2008-06-08 17:05:46 -07:00
Brendan Eich
ff8942e9cf Fix firefox, etc., (top-level mozilla) builds. 2008-06-06 15:12:48 -07:00
Andreas Gal
fd852a83dd Transform do_dorinloop goto/fall through hack into a proper inline method. 2008-06-06 15:11:08 -07:00
Andreas Gal
8d20524c9b Convert value_to_iter goto/fall through hack into a proper inlined method. 2008-06-06 13:32:04 -07:00
Brendan Eich
04b1ac5592 Merge. 2008-06-04 00:09:57 -07:00
Brendan Eich
894dd03e2a First stage of loop table work; bitmap free space management and GC hook-up still to come. 2008-06-03 23:52:28 -07:00
Brendan Eich
2e6db5a253 Fix decompiler (hack, really) to cope with misplaced JSOP_HEADER in update part of for(;;) loop. 2008-06-03 23:50:22 -07:00
Andreas Gal
9684e2070f Introduced a JavaScript recording script that is loaded dynamically. 2008-06-03 21:01:23 -07:00
Andreas Gal
be39054e45 Store the recorder script in JSTraceMonitor and make sure its traced by the GC. Also clean up the tracing of JSTraceMonitor. 2008-06-03 17:35:30 -07:00
Andreas Gal
02b2fde780 Backed out previous attempt to find a place to stash the recorder script. 2008-06-03 17:27:31 -07:00
Andreas Gal
bfecd01b75 Backed out changeset 3029f4d57bd2 2008-06-03 17:24:02 -07:00
Andreas Gal
3094b79c6b Switch to a uniform style for jstracer.cpp. 2008-06-03 17:15:58 -07:00
Andreas Gal
c93d0c8e08 Add location in the context where we can hold the recorder script and make sure the GC traces it. 2008-06-03 17:14:54 -07:00
Andreas Gal
8b6c4d02c6 Remove InitTacer. Pointless for JSRuntime. 2008-06-03 17:04:42 -07:00
Brendan Eich
a0363085ef Merge, simplify names, and police style. 2008-06-03 16:21:31 -07:00
Brendan Eich
9c2b039d6f JSOP_HEADER takes a byte index of loop header counting from script->loopBase, and related changes. 2008-06-03 14:48:47 -07:00
Brendan Eich
44ed0935e5 Fix ReconstructPCStack oplen code, extend js_OpLength to avoid cs recalculation where possible. 2008-06-03 13:51:30 -07:00
Andreas Gal
d78d723aeb Compiler fixes for CAS patch. 2008-06-03 13:29:10 -07:00
Andreas Gal
3bc4b753d4 Merge. 2008-06-03 13:22:04 -07:00
Brendan Eich
b2ee0f4849 Fix so it compiles, also avoid else after return. 2008-06-03 12:37:20 -07:00
Andreas Gal
70cdf27b42 Make js_CompareAndSwap visible outside jslock.cpp. 2008-06-03 10:06:28 -07:00
Andreas Gal
53060c32ce 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). 2008-06-02 23:26:17 -07:00
Brendan Eich
946fa41d8c Fiddle loop table slot interface and impl in hope of freeing slots over time. 2008-06-02 18:06:33 -07:00
Brendan Eich
21c493d829 Use correct idempotent include guard macro name. 2008-06-02 18:05:18 -07:00
Brendan Eich
3db9424289 Merge and undo js_AllocateLoopTableSlot reparam. 2008-06-02 17:28:39 -07:00
Brendan Eich
01514c4b16 No JS_TRACER ifdefs, keep line len < 80, reparameterize jstracer.cpp functions, js_OpLength helper. 2008-06-02 17:19:41 -07:00
Brendan Eich
ea827846a5 Avoid overlong lines per modeline comments. 2008-06-02 17:16:14 -07:00
Andreas Gal
d528552bca 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. 2008-05-31 18:12:39 -07:00
Brendan Eich
5b116ae998 Merge, style nits, no locking for tracing. 2008-05-31 15:29:54 -07:00
Brendan Eich
ef8a767739 Left brace style. 2008-05-31 10:17:40 -07:00
Andreas Gal
e66383e26e Fixed a bug that triggered the tracer at TRACE_THRESHOLD/2 already. 2008-05-31 09:53:16 -07:00
Andreas Gal
e461a72736 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. 2008-05-30 18:58:43 -07:00
Andreas Gal
de3107d2ee 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. 2008-05-30 10:11:56 -07:00
Andreas Gal
a6ded872bf 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. 2008-05-29 17:14:42 -07:00
Brendan Eich
7cdb540c44 Fix goof in switching from word to jsval counters. 2008-05-28 23:12:45 -07:00
Brendan Eich
ed4274e179 Instrument loop headers with jsvals above fp->vars and below fp->spbase. 2008-05-28 19:07:32 -07:00
Brendan Eich
8bfb8bfef7 Split trace-supporting inlines, add ifdefs/macros for deriving js_TracingInterpret in jstracer.cpp. 2008-05-28 19:07:25 -07:00
Brendan Eich
968021cff9 Style (and substance for vim users: left brace opening in column 1 enables [[ navigation). 2008-05-28 19:07:16 -07:00
Andreas Gal
f4d6e71bf6 Make relational operations (<,<=,>,>=) traceable. 2008-05-27 10:45:58 -07:00
Andreas Gal
8a5d86fa50 Mark getting and setting arguments and local variables as safe for tracing. 2008-05-26 23:40:52 -07:00
Andreas Gal
e0a5de51b2 Make branch instructions traceable using a new primitive guard_boolean_is_true. 2008-05-26 23:33:23 -07:00
Andreas Gal
32908d0e2f Enable tracing for selected opcodes that do not have any remaining tracing hazards. 2008-05-26 20:04:58 -07:00
Andreas Gal
33ec9a35fb 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. 2008-05-26 18:55:16 -07:00
Andreas Gal
288e988b40 Introduce primitives for common binary operations. 2008-05-26 17:29:28 -07:00
Andreas Gal
6d10603538 Convert macro code in jsinterp.cpp into inline functions and introduce trace primitives (prim_*, guard_*, call_*). 2008-05-26 15:27:13 -07:00
Brendan Eich
b065dd2fce From Igor's patch for bug 433382. 2008-05-24 11:39:18 -07:00
Brendan Eich
c611e90657 Fix bad merge. 2008-05-24 10:17:15 -07:00
Brendan Eich
5e03c06ce3 Igor's patch for bug 433382, r=me. 2008-05-23 23:44:08 -07:00
Brendan Eich
2595b54a6b Fix POP_STACK to take a macro out param. 2008-05-23 22:18:36 -07:00
Brendan Eich
602bcd5f50 First round of macro cleanups to enable tracing. 2008-05-23 19:24:10 -07:00
Brendan Eich
2f95757906 Igor's fix for bug 432881, r=me. 2008-05-23 19:14:05 -07:00
Brendan Eich
c0c9201c0a Fix for bug 433672, r=igor. 2008-05-23 19:08:44 -07:00
bcrowder@mozilla.com
ccdd027d08 Bug 433964 - dtrace build fixes for C++ linkage, r=jorendorff 2008-05-19 12:59:09 -07:00
jorendorff@mozilla.com
f2cbe9af26 Merge 8 changesets from cvs-trunk-mirror to mozilla-central. Use (hg log -r b60aee4a61a6:e70e05d8eda2) to see them. 2008-05-16 11:55:05 -05:00
bclary@bclary.com
b017a73ad2 JavaScript Tests - update test and remove from exclusion list, bug 433698, r=jorendorff 2008-05-14 16:18:47 -07:00
jorendorff@mozilla.com
9b5032bfde Merge from cvs-trunk-mirror to mozilla-central. 2008-05-13 09:57:11 -05:00
bclary@bclary.com
abd3a90982 JavaScript Tests - add unary - tests for bug 432881 2008-05-09 20:33:48 -07:00
reed@reedloden.com
82c33e4d43 Bug 430955 - "jsfun.h uses JSArenaPool without needed typename" [p=mh+mozilla@glandium.org (Mike Hommey) r=brendan a1.9=damons] 2008-05-09 00:40:10 -07:00
jorendorff@mozilla.com
9b2db511f4 Merge from cvs-trunk-mirror to mozilla-central.
--HG--
rename : js/src/jsobj.c => js/src/jsobj.cpp
2008-05-07 17:37:49 -07:00