Commit Graph

16945 Commits

Author SHA1 Message Date
Andreas Gal
01e3af1f79 We expect no interned globals in a new tree. Assert on that. 2008-08-07 15:44:11 -07:00
Andreas Gal
7351e39b63 Merge. 2008-08-07 15:41:50 -07:00
Andreas Gal
00b12bbaca 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. 2008-08-07 15:38:54 -07:00
Andreas Gal
95f5262e4f 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. 2008-08-07 15:28:43 -07:00
Brendan Eich
e04a6b22c4 Don't fail to flush cx->thread's JIT cache if JS_THREADSAFE. 2008-08-06 23:38:57 -07:00
Andreas Gal
e09041e2a5 If we run into an error during compilation, blacklist that fragment. If we run out of memory, flush the cache. 2008-08-06 22:26:20 -07:00
Andreas Gal
0fe0cf9a98 Flush JIT cache for all contexts. Clear nanojit error state when we start compiling. 2008-08-06 22:18:33 -07:00
Andreas Gal
e9733ceed9 Remove dead code. 2008-08-06 22:10:30 -07:00
Andreas Gal
9385e7842c 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. 2008-08-06 21:56:25 -07:00
Andreas Gal
cd8d6cd3da Merge. 2008-08-06 19:31:52 -07:00
Andreas Gal
d1a1a76121 Tracker outer trees for every tree and merge globals of inner trees into all outer trees as we register inner trees with outer trees. 2008-08-06 19:25:24 -07:00
shaver@mozilla.org
7c89606155 add tests for missing and excess arity for trace-entry function context 2008-08-06 22:24:39 -04:00
Andreas Gal
6bb6800be5 Add a contains method to Queue. 2008-08-06 19:06:37 -07:00
Andreas Gal
3785f2a5af Fix misleading debug text. 2008-08-06 19:04:41 -07:00
Andreas Gal
ff22344594 Fix tracing of code inside methods that were called with arity mismatch. 2008-08-06 18:51:26 -07:00
Brendan Eich
f23efc77b2 Replace bogus assertion with runtime test for correct abort test (getter or setter, given sprop hit from propcache). 2008-08-06 17:54:36 -07:00
Andreas Gal
c8df243f32 Fix nonEmptyStack1 test. 2008-08-06 17:44:39 -07:00
Andreas Gal
d41941073e Disable outerlining, to be replaced with nesting. 2008-08-06 17:34:06 -07:00
Andreas Gal
1bf2697257 Add a helper to emit a tree-call into the currently recording trace. 2008-08-06 16:24:29 -07:00
Andreas Gal
1b8f21c8f3 Add CallTree builtin. 2008-08-06 15:56:31 -07:00
Andreas Gal
6bd49e0d49 Make ip in InterpStruct const*. 2008-08-06 15:55:00 -07:00
Andreas Gal
bc93ceb9d5 Merge. 2008-08-06 15:04:18 -07:00
Andreas Gal
27de48d1f9 Cleanup stack offset calculation and eliminate the stack offset fiddling that was necessary for nanojit prior to adding the getTop hook. 2008-08-06 15:04:02 -07:00
Brendan Eich
5331ec8967 Add first non-empty stack testcase, which now passes (yay). 2008-08-06 13:53:34 -07:00
Brendan Eich
0f1f29e9a4 Merge again, I lost to Andreas\! 2008-08-06 13:44:07 -07:00
Andreas Gal
2acb2afdec 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. 2008-08-06 13:41:04 -07:00
Brendan Eich
586464070d Merge. 2008-08-06 13:37:45 -07:00
Andreas Gal
fcaab6d007 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. 2008-08-06 13:37:29 -07:00
Brendan Eich
6e215765df - 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'.
- Record JSOP_ITER and JSOP_ENDITER, which must be handled since tracing could start in between them (and always will, until we nest or unless we outerline).
- Add a null state guard in JSOP_FORVAR's recorder method.
- Pick include order, indentation, and trailing space nits.
2008-08-06 13:36:29 -07:00
Andreas Gal
d1d2895356 Merge. 2008-08-06 13:23:55 -07:00
Andreas Gal
a253b66a09 If we stop recording, immediately attempt to trigger the tree. 2008-08-06 13:18:30 -07:00
shaver@mozilla.org
9615dbd804 add test for non-empty stack on trace entry (fails currently, but no longer crashes) 2008-08-06 16:12:49 -04:00
Andreas Gal
141f71186c Properly deal with trace entry with non-empty stack. 2008-08-06 12:38:17 -07:00
Andreas Gal
0ed65746a7 Split side exit handling from js_ExecuteTree. 2008-08-06 06:34:16 -07:00
Brendan Eich
a1c6f2606a Comment or/and test framework not being traceable. 2008-08-05 11:36:25 -07:00
Brendan Eich
03b511f9e4 - 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*).
- Nit-pick include order (alphabetical within each group).
- Trailing space and indentation no-knock raid.
2008-08-03 22:55:28 -07:00
Brendan Eich
da42a8c6f7 Strength-reduced unsigned modulus in the fragment quick cache, don't use signed % which requires a branch and less-than-zero test. 2008-08-03 22:35:15 -07:00
Brendan Eich
fc2c669949 Misc. cleanup. 2008-08-03 01:34:07 -07:00
Brendan Eich
df36d9e36f Use INS_CONST to addName a few lir->insImm immediates. 2008-08-02 20:01:36 -07:00
Brendan Eich
5b9f299115 Fix TraceRecorder::ifop backward logic bug in the OBJECT case, and implement the STRING case. Add tests for truthy and falsy strings. 2008-08-02 16:51:22 -07:00
Brendan Eich
607e259b69 Fix return NULL in bool to return false. 2008-08-02 16:05:29 -07:00
Brendan Eich
0ac70ec2cc Avoid JSUint64 (NSPR style), use uint64 (SpiderMonkey style). 2008-08-02 16:05:16 -07:00
Brendan Eich
3488a68372 Restore lost or/and tests (hg strikes again, grrrr!) 2008-08-02 15:56:28 -07:00
Andreas Gal
3799a6f8ff Merge. 2008-08-02 03:24:03 -07:00
Andreas Gal
3106dc8845 Use quick cache to bypass fragmento is possible. 2008-08-01 22:56:52 -07:00
Andreas Gal
12f1c06952 Factor out most of the remaining code in js_LoopEdge into js_RecordTree and move the code to attach new branches into js_ExecuteTree. 2008-08-01 22:47:15 -07:00
Andreas Gal
746cb91802 Factor out js_ContinueRecording from js_LoopEdge. 2008-08-01 22:39:52 -07:00
Andreas Gal
6df2ea22c9 Add a fragment cache data structure. This will be used to accelerate the fragment lookup during branching. 2008-08-01 22:33:05 -07:00
Andreas Gal
3fea3f5d53 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. 2008-08-01 22:27:39 -07:00
Brendan Eich
67ff139b74 Merge, dammit -- why did we pick hg anyway? 2008-08-01 21:12:34 -07:00