Commit Graph

1895 Commits

Author SHA1 Message Date
Andreas Gal
628a1f6985 Cleanup trace abort/end code. 2008-06-28 18:19:21 -07:00
Andreas Gal
ba35b66f90 Make internal form of nativeFrameSize private. 2008-06-28 17:22:08 -07:00
Andreas Gal
91c85e9cb4 Merge. 2008-06-28 17:14:42 -07:00
Andreas Gal
6df975a5b5 Rewritten frame management. Use cx->fp->regs chain instead of direct passing of those structures. 2008-06-28 17:14:06 -07:00
shaver@mozilla.org
f81f153710 fix typo in DoIncDec leading to script termination 2008-06-28 19:28:56 -04:00
shaver@mozilla.org
fac133d1e5 Implement icmp_ne (in terms of LIR_ugt(i, 0)!) and make JSOP_NE traceable. 2008-06-28 17:47:33 -04:00
shaver@mozilla.org
8cb49dede9 avoid trace-troubling temporaries via cast gymnastics 2008-06-28 14:48:02 -04:00
Andreas Gal
552425ee07 Hook up pc and sp to the tracer in order to generate proper PC/SP adjustment code. 2008-06-28 11:00:18 -07:00
Andreas Gal
b6773c0340 Move obj_is_xml into interp since its not a primitive. 2008-06-28 10:12:24 -07:00
Andreas Gal
44e0963c4e Merge. 2008-06-28 09:58:48 -07:00
Andreas Gal
1f37ae3e62 Small cleanups and licensing blurb housekeeping. 2008-06-28 09:58:15 -07:00
shaver@mozilla.org
cc9079bc60 More work on tracing EQUALITY_OP. Still need to synthesize LIR_ne before it
traces correctly.  (This loses the length-test equality-check short-circuit
for strings, until such time as we have a builtin for EqualStrings as well:
regresses js1_5/String/regress-322772.)
2008-06-28 12:46:21 -04:00
shaver@mozilla.org
293db3763e abort tracing if we see an XML object in an equality op 2008-06-28 00:14:21 -04:00
shaver@mozilla.org
4fc71515e0 Add guards for XML objects, and some tracer bits to accommodate them. 2008-06-27 23:58:06 -04:00
Andreas Gal
e5d4f398ef Merge. 2008-06-27 18:09:33 -07:00
Andreas Gal
40f1a90a78 Move recorder initialization into TraceRecorder and encapsulate its state. 2008-06-27 18:06:50 -07:00
Andreas Gal
2c370239e5 Add a way to calculate the current size of the native frame. 2008-06-27 16:24:17 -07:00
shaver@mozilla.org
06500a1a50 merge 2008-06-27 12:01:28 -04:00
shaver@mozilla.org
af19dd5627 rename ENABLE_TRACER to TRACING_ENABLED and explicitly parameterize on cx 2008-06-27 11:41:59 -04:00
Andreas Gal
5d9de143af More concise conversion from object to boolean. 2008-06-27 07:48:18 -07:00
Andreas Gal
afd5f3b1e3 Clarified argument names in guard code and explain better why we guard for overflow the way we do. 2008-06-27 07:28:10 -07:00
Andreas Gal
a13289ec80 Added missing > which has been bugging me for the past month every time I saw it. 2008-06-27 07:21:37 -07:00
Andreas Gal
e59076860a Instead of guarding on null -> boolean conversion just emit a null compare and use the boolean result. 2008-06-27 06:53:10 -07:00
Andreas Gal
3492763c96 Throw out a bunch of primitives (guards) that we are no longer interested in. 2008-06-27 06:18:12 -07:00
Andreas Gal
0c5757a21f Add a new option -j to enable the JIT. The default is off so we can easily benchmark the overhead without the tracer. 2008-06-27 00:22:53 -08:00
Andreas Gal
a21ca6a788 Prepare LIR_ov to be used as soon Ed adds it and add a few comments that explain how overflow is handled. 2008-06-26 23:34:50 -08:00
Andreas Gal
49fe7a95eb More cleanup and code move into TraceRecorder and prepare for LIR_ov. 2008-06-26 23:22:16 -08:00
Andreas Gal
8c67877472 Slight cleanup of the guard code emission in the trace inlines. 2008-06-26 22:05:44 -08:00
Andreas Gal
f357ff14f0 Move the recorder functionality into TraceRecorder to unclutter trace inlines. 2008-06-26 21:58:57 -08:00
Andreas Gal
0c98250a90 Move set/get into recorder and introduce init. 2008-06-26 21:41:10 -08:00
Andreas Gal
431b7b810a Moved loading context slots into the recorder (more to follow). 2008-06-26 21:33:33 -08:00
Andreas Gal
2dca610f28 Make sure nativeOffset uses 64-bit slots on the native stack. 2008-06-26 21:25:30 -08:00
Andreas Gal
693ee7f0cc Turn macros into inline functions and start prepatations for inlining function calls. 2008-06-26 21:19:11 -08:00
Andreas Gal
c7bab6721b Drop JS prefix from classes related to traceing. 2008-06-26 19:49:04 -08:00
Andreas Gal
ad5ceed9cd Merge. 2008-06-26 19:46:51 -08:00
Andreas Gal
a1b42735cd Backed out changeset fa82b7eda72a 2008-06-26 19:44:23 -08:00
Andreas Gal
2fddbfdceb Removed debug printfs from tracker. 2008-06-26 19:41:58 -08:00
Andreas Gal
5b4f0aaeaa 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. 2008-06-26 19:37:28 -08:00
Andreas Gal
407b9cdf75 Parameterize tracker. 2008-06-26 17:13:54 -08:00
Andreas Gal
d3e1a067e5 Merge. 2008-06-24 15:58:21 -07:00
Andreas Gal
4678be95aa Fix a bug in tracing can_do_fast_inc_dec (wasn't tracking a copy and traced incorrect code). Merge with TT tip. 2008-06-24 15:57:33 -07:00
dvander@traceknight.local
76d930e192 Fixed malloc/delete mismatch (Valgrind was complaining) 2008-06-23 18:00:03 -07:00
Andreas Gal
d8e0d5edec Removed debug code. 2008-06-23 17:17:48 -07:00
Andreas Gal
5e55f5e1f4 Merge. 2008-06-23 16:52:37 -07:00
Andreas Gal
5b30ba137c Merge. 2008-06-23 16:51:28 -07:00
Andreas Gal
40c5417190 Added example code for tracing. 2008-06-23 16:50:44 -07:00
Andreas Gal
0c1996ce25 Don't setup debugging data structures when not debugging. 2008-06-22 23:59:41 -07:00
Brendan Eich
dff03bc859 Add license block-comment, expand tabs. 2008-06-22 23:54:19 -07:00
Brendan Eich
d5d3c6fb26 Random style nit-picking. 2008-06-22 23:42:54 -07:00
Andreas Gal
f302e681aa Removed old comments that are no longer correct. 2008-06-22 23:39:44 -07:00
Andreas Gal
ab02df3893 Check at runtime that fast inc/dec is possible. 2008-06-22 22:49:12 -07:00
Andreas Gal
17d189ecb9 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. 2008-06-22 21:32:24 -07:00
Andreas Gal
4312eb9b9b Write back stack/local variable state in the trace code and improved redundand boxing/unboxing elimination. 2008-06-22 19:58:24 -07:00
Andreas Gal
6d192a7054 Added end-of-trace detection and make sure trace loops back to the loop header. 2008-06-22 09:30:04 -07:00
Andreas Gal
2270a14eb0 Fix guard code assembly. This code generates trace code for the first time. 2008-06-21 23:45:16 -07:00
Andreas Gal
3197b76462 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. 2008-06-21 22:28:41 -07:00
Andreas Gal
78da0668af Start attaching our tracer to nanojit. This is incomplete and meant for review by David only. 2008-06-21 14:55:32 -07:00
dvander@traceknight.local
4fd375f52b Fixed the test case not setting the lastIns value in Fragment 2008-06-20 15:45:37 -07:00
dvander@traceknight.local
490d9eb8b5 Fixed _thisfrag not being set in beginAssembly 2008-06-20 14:40:40 -07:00
dvander@traceknight.local
1d79a74ace Fixed beginAssembly() not setting _thisfrag which verbosity requires 2008-06-20 14:38:39 -07:00
Andreas Gal
f53b17ea14 Backed out explicit zeroing in the constructor of Assembler and Fragmento. 2008-06-20 14:30:29 -07:00
Andreas Gal
dbab3f5a43 Backed out changeset b142c62e7602 2008-06-20 14:29:10 -07:00
Andreas Gal
29c6494f2c Back out explicit zeroing in the constructor and ensure heap allocated objects are implicitly zero-ed out. 2008-06-20 14:26:43 -07:00
dvander@traceknight.local
ee94b07a44 Fixed cases of the tests not prepping the tracer properly for verbosity 2008-06-20 13:55:56 -07:00
dvander@traceknight.local
f086d675e7 fixed constructor relying on zero'd allocation 2008-06-20 11:48:02 -07:00
dvander@traceknight.local
10ed967625 fixed memory corruption in verbosity initialization code 2008-06-20 11:43:49 -07:00
dvander@traceknight.local
f1a775ac86 use valloc() on Darwin for GCHeap 2008-06-20 11:38:46 -07:00
dvander@traceknight.local
7feb713f8b fixed code generation for the LIR_in -> LIR_param change 2008-06-20 11:38:21 -07:00
Andreas Gal
9c6e4287f1 Properly align pages allocated by GCHeap. 2008-06-19 20:12:48 -07:00
Andreas Gal
ddb6af4683 Switch to malloc (avoid new where possible) and properly initialize capacity. 2008-06-19 19:19:39 -07:00
Andreas Gal
33ecda6e85 Added danderson's test cases for nanojit. Execute with nanojit() from JS shell. 2008-06-19 18:28:15 -07:00
Andreas Gal
4ddef8f5e3 Added hook to trigger nanojit test code from the JS shell. 2008-06-19 17:14:17 -07:00
Andreas Gal
48b30922c7 Drop helper code that is no longer needed. 2008-06-19 15:49:32 -07:00
Andreas Gal
9a6946405f Added necessary glue code to make nanojit compile in DEBUG mode. 2008-06-19 15:32:40 -07:00
Andreas Gal
5a17de3bca Landed nanojit in TraceMonkey. This is untested and DEBUG must be off for now since we don't support AVM's String class. 2008-06-19 10:47:58 -07:00
Andreas Gal
f5d51ff347 Added Assembler.h and vm_fops.h (blank for now) from TT. 2008-06-18 21:32:23 -07:00
Andreas Gal
debb2cc333 Added RegAlloc.h and Fragmento.h from TT. 2008-06-18 21:23:53 -07:00
Andreas Gal
0c21fdbd7e Added LIR.h from TT. 2008-06-18 21:11:15 -07:00
Andreas Gal
0e152648fe Added Native*.h from TT. 2008-06-18 20:57:17 -07:00
Andreas Gal
eed27a563d Added nanojit.h from TT. 2008-06-18 20:49:37 -07:00
Andreas Gal
f65ca9580f Renamned avm.h to avmplus.h
--HG--
rename : js/src/nanojit/avm.h => js/src/nanojit/avmplus.h
2008-06-18 20:45:37 -07:00
Andreas Gal
8228c504ce Added BitSet data structure for nanojit. 2008-06-18 20:29:01 -07:00
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
Taras Glek
d53bf0fc25 bug 442331: Added -fno-exceptions and -fno-rtti to Makefile.ref 2008-06-27 12:39:29 -07:00
Brendan Eich
97bce759b2 Fix for(;;) loops to use one branch per iter (after initial iter; 441477, r=jorendorff). 2008-06-26 17:49:01 -07:00
Blake Kaplan
bc7e519eec Turn off these noisy and now mostly useless printfs for me. No bug, NPOTB 2008-06-26 16:42:41 +02:00
Johnny Stenback
a743b87dec Fixing bug 441377. Don't GC when replacing safe contexts. r+sr=brendan@mozilla.org 2008-06-25 17:04:06 -07:00
Bob Clary
4bbe828e56 Sisyphus/JavaScript - update to support 1.9.1, bug 441875 2008-06-25 18:14:01 -04:00
bcrowder@mozilla.com
942878bc17 Fixing a comment spacing nit. 2008-06-25 14:18:12 -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