Brendan Eich
9d20e12316
snprintf takes sizeof buffer.
2008-07-01 15:58:47 -07:00
Andreas Gal
697a294d14
Sync up with TT tip.
2008-07-01 14:46:10 -07:00
Andreas Gal
39891951f4
Merge.
2008-07-01 13:36:33 -07:00
Brendan Eich
9a38bf0cdc
Eliminate useless genexp for(;;) conditions (442342, r=jorendorff).
2008-07-01 13:05:11 -07:00
bcrowder@mozilla.com
9f3e12daf8
Bug 438415 - Assertion failure: *vp != JSVAL_HOLE, r=shaver, r=brendan
2008-07-01 12:47:09 -07:00
bcrowder@mozilla.com
9736e0887f
Bug 435345 - Cannot accurately watch the 'length' property of arrays, r=shaver
2008-07-01 12:47:09 -07:00
shaver@mozilla.org
6e5e783b3d
Assembler requires that guard be on a cmp, so force that
2008-07-01 10:07:20 -04:00
shaver@mozilla.org
da72d620b9
fix frame offset calculation for args, I think also non-entry frames
2008-07-01 08:11:49 -04:00
shaver@mozilla.org
50d599cb99
label arg/var/stack/sp/state for easier trace-reading
2008-07-01 08:06:02 -04:00
Andreas Gal
d3e7a57a68
Fix deallocation bug in the recorder. We will have to lift more code Tamarin's Interpreter to stabilize the recording.
2008-07-01 02:37:07 -07:00
Andreas Gal
1567618f99
Better naming (MARK_EXIT => MARK_REGS).
2008-06-30 18:41:22 -07:00
Andreas Gal
84274f1b33
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.
2008-06-30 18:31:29 -07:00
Andreas Gal
87396e1870
Rework memory management, don't leak memory in the filter pipeline.
2008-06-30 18:08:32 -07:00
Andreas Gal
19b4bcdc69
Save the side exit state at entry in to the opcode (since we want to restart ops) and enable store filter.
2008-06-30 17:12:52 -07:00
Andreas Gal
e6b28ce4f8
Sync with TT-tip.
2008-06-30 15:33:41 -07:00
Andreas Gal
f8a6a789d0
Cleanup memory management. Use new char[] inside our overloaded new operator that clears out memory.
2008-06-30 12:00:31 -07:00
Andreas Gal
7511e45275
Use #ifdef DEBUG instead of VERBOSE.
2008-06-30 11:44:47 -07:00
Andreas Gal
806d0de678
Must use (&gc) new otherwise memory doesn't get cleared (found by danderson).
2008-06-30 11:39:00 -07:00
Andreas Gal
dbd9bb7b09
Merge.
2008-06-30 09:36:38 -07:00
Andreas Gal
5d1d997c9d
Housekeeping (add comments, removed some dead code.)
2008-06-30 09:36:10 -07:00
shaver@mozilla.org
9cf9a554b6
synthesize LIR_ne using LIR_eq instead of LIR_ugt, per edwsmith's wisdom
2008-06-30 11:18:43 -04:00
Andreas Gal
d8d25140f9
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.
2008-06-29 23:02:22 -07:00
Andreas Gal
b1e24b8c98
Execute trace code. Boxing back the side exit state is not handled yet.
2008-06-29 20:56:06 -07:00
Andreas Gal
e267cb120c
Fix native frame addressing (reported by vlad.)
2008-06-29 17:17:39 -07:00
Andreas Gal
eff9ce9111
Disable fusing of conditional check and branch when recording.
2008-06-29 16:57:27 -07:00
Andreas Gal
b3060293c7
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.
2008-06-29 15:21:50 -07:00
Andreas Gal
253b2572b2
Initialize jump table when side-entering the interpreter. Keep track of cx and sp directly in the recorder instead of going through the tracker.
2008-06-29 13:53:40 -07:00
Andreas Gal
28d2ed62d9
Guard inside the clause, not seperately.
2008-06-29 12:21:16 -07:00
shaver@mozilla.org
d93ba06080
guard on inlined branch in TRY_BRANCH_AFTER_COND
2008-06-29 10:36:31 -04:00
shaver@mozilla.org
d571eaac32
Merge with mozilla-central as of c5dc9d84d476, and restore obj-to-boolean fixes
...
from 2b107c27dedf (accidentally backed out during an earlier merge). 22 test
suite failures for -L lc2 lc3 spidermonkey-n slow-n, probably needs some guard
work in TRY_BRANCH_AFTER_COND.
2008-06-29 10:01:59 -04:00
Andreas Gal
ef71223de2
Remember JSContext instead of trying to keep track of frame pointer.
2008-06-28 18:47:12 -07:00
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
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
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