Commit Graph

80 Commits

Author SHA1 Message Date
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
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
b54446d182 Fixed typo that caused sunspider to fail. 2008-06-09 18:30:08 -07:00
Andreas Gal
0077c6a422 Backed out value_to_iter inline method extraction. 2008-06-09 14:47:14 -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
Andreas Gal
9684e2070f Introduced a JavaScript recording script that is loaded dynamically. 2008-06-03 21:01:23 -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
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
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
5b116ae998 Merge, style nits, no locking for tracing. 2008-05-31 15:29:54 -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
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
Benjamin Smedberg
d23620a37a Merge cvs-trunk-mirror to mozilla-central. One conflict resolution: updated NSPR tag from client.mk into client.py
--HG--
rename : js/src/jsdbgapi.c => js/src/jsdbgapi.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jsobj.c => js/src/jsobj.cpp
rename : js/src/jsopcode.c => js/src/jsopcode.cpp
rename : js/src/jsparse.c => js/src/jsparse.cpp
2008-05-02 14:08:43 -04:00
Benjamin Smedberg
44143a17c2 Merge from cvs-trunk-mirror to mozilla-central. No conflict resolution necessary.
--HG--
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jsopcode.c => js/src/jsopcode.cpp
2008-05-01 09:50:06 -04:00
Benjamin Smedberg
5337262e90 Merge cvs-trunk-mirror to mozilla-central. No manual conflict resolution was necessary.
--HG--
rename : js/src/jsdbgapi.c => js/src/jsdbgapi.cpp
rename : js/src/jsfun.c => js/src/jsfun.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jsopcode.c => js/src/jsopcode.cpp
2008-04-30 12:35:19 -04:00
Benjamin Smedberg
160d9d1766 Merge cvs-trunk-mirror to mozilla-central. Automated merge, no manual conflict resolution necessary.
--HG--
rename : js/src/jsapi.c => js/src/jsapi.cpp
rename : js/src/jsarray.c => js/src/jsarray.cpp
rename : js/src/jsdbgapi.c => js/src/jsdbgapi.cpp
rename : js/src/jsfun.c => js/src/jsfun.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jslong.c => js/src/jslong.cpp
rename : js/src/jsobj.c => js/src/jsobj.cpp
rename : js/src/jsopcode.c => js/src/jsopcode.cpp
rename : js/src/jsparse.c => js/src/jsparse.cpp
rename : js/src/jsregexp.c => js/src/jsregexp.cpp
rename : js/src/jsscope.c => js/src/jsscope.cpp
rename : js/src/jsstr.c => js/src/jsstr.cpp
rename : js/src/prmjtime.c => js/src/prmjtime.cpp
2008-04-29 10:20:07 -04:00
Benjamin Smedberg
b3c6962a6c Merge cvs-trunk-mirror to mozilla-central.
--HG--
rename : js/src/js.c => js/src/js.cpp
rename : js/src/jsapi.c => js/src/jsapi.cpp
rename : js/src/jsemit.c => js/src/jsemit.cpp
rename : js/src/jsfun.c => js/src/jsfun.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jsobj.c => js/src/jsobj.cpp
rename : js/src/jsparse.c => js/src/jsparse.cpp
rename : js/src/jsregexp.c => js/src/jsregexp.cpp
rename : js/src/jsxml.c => js/src/jsxml.cpp
2008-04-15 13:59:01 -04:00
jorendorff@mozilla.com
e366e3a8e5 Merge from cvs-trunk-mirror to mozilla-central.
--HG--
rename : js/src/jsapi.c => js/src/jsapi.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
2008-04-07 17:37:54 -05:00
jorendorff@mozilla.com
1dd1d9f71d Merge from cvs-trunk-mirror to mozilla-central.
--HG--
rename : js/src/js.c => js/src/js.cpp
rename : js/src/jsapi.c => js/src/jsapi.cpp
rename : js/src/jsarray.c => js/src/jsarray.cpp
rename : js/src/jscntxt.c => js/src/jscntxt.cpp
rename : js/src/jsdate.c => js/src/jsdate.cpp
rename : js/src/jsdbgapi.c => js/src/jsdbgapi.cpp
rename : js/src/jsemit.c => js/src/jsemit.cpp
rename : js/src/jsexn.c => js/src/jsexn.cpp
rename : js/src/jsfun.c => js/src/jsfun.cpp
rename : js/src/jsgc.c => js/src/jsgc.cpp
rename : js/src/jsinterp.c => js/src/jsinterp.cpp
rename : js/src/jsiter.c => js/src/jsiter.cpp
rename : js/src/jslock.c => js/src/jslock.cpp
rename : js/src/jsobj.c => js/src/jsobj.cpp
rename : js/src/jsopcode.c => js/src/jsopcode.cpp
rename : js/src/jsparse.c => js/src/jsparse.cpp
rename : js/src/jsregexp.c => js/src/jsregexp.cpp
rename : js/src/jsscope.c => js/src/jsscope.cpp
rename : js/src/jsscript.c => js/src/jsscript.cpp
rename : js/src/jsxml.c => js/src/jsxml.cpp
2008-04-02 16:35:13 -05:00