shaver@mozilla.org
12614d0334
Coerce strings to numbers for appropriate ops.
...
(Wants a specialized StringToInt32 and a filter to put it in place.)
2008-07-31 07:41:58 -07:00
shaver@mozilla.org
d200eb863e
merge backout of d24e6005ee4c to fix the world
2008-07-31 06:36:53 -07:00
shaver@mozilla.org
f2c0c93637
Backed out changeset d24e6005ee4c (causing major array-fail).
2008-07-31 06:35:11 -07:00
Andreas Gal
e5a87ade9f
Merge.
2008-07-31 01:35:56 -07:00
Andreas Gal
6f4cfc2628
Remove ANY_TYPE and move debug printf around to print entry point even if we can't enter due to type mismatch.
2008-07-31 01:35:18 -07:00
shaver@mozilla.org
a3bc7296d9
Make guard return expected, so we can trace alternate cases easily.
...
Better diagnostic for non-global scope chain head.
2008-07-30 22:59:13 -07:00
Andreas Gal
86aa1f7ff7
If trees are not enabled, don't try to reuse state and param1.
2008-07-30 21:40:21 -07:00
David Anderson
ad3e892e92
Re-use initial parameters on tree fragments.
2008-07-30 23:30:58 -05:00
shaver@mozilla.org
959dd9184f
Implement JSOP_EQ and JSOP_NE over strings, plus JSOP_STRING.
2008-07-30 17:28:59 -07:00
Andreas Gal
e91eb4bc47
Merge.
2008-07-30 16:37:35 -07:00
Brendan Eich
fe3a6127c5
- Export JSSLOT_ITER_* from jsiter.cpp to jsiter.h, for jstracer.cpp to use.
...
- Fix OBJ_GET_SLOT to be STOBJ_GET_SLOT in jsiter.cpp, no thread safety here (bug on file).
- Move JSNativeEnumerator from jsobj.cpp to jsobj.h for jstracer.cpp as well.
- Rename JOF_2BYTE JOF_UINT8 for consistency, and actually decompile it.
- Trace JSOP_FORVAR (can't do anything in JSOP_ITER, it comes before the loop).
- Shortened some guardMyLongSummerVacationWithinBounds names ;-).
- Removed/refactored to avoid dslots_ins obligation on all callers.
2008-07-30 16:32:33 -07:00
Andreas Gal
698d3fb5cc
Make the global frame layout match the slot layout in the global object. This will allow leaving global values in place when switching trees as long both inner and outer tree use the same value.
2008-07-30 16:28:48 -07:00
Andreas Gal
e8043788a7
Merge.
2008-07-30 16:06:11 -07:00
Andreas Gal
9b9d60583c
Use isGlobal to distinguish whether a value is a global slot instead of scanning the table every time.
2008-07-30 16:05:51 -07:00
shaver@mozilla.org
124e9ae44b
trace Math.random
2008-07-30 15:51:44 -07:00
shaver@mozilla.org
b1df95f721
Trace String.fromCharCode.
...
Handle failure signals of < 0 or NULL from traceable natives.
2008-07-30 15:19:25 -07:00
Andreas Gal
266a7c534f
Clean up the living room a bit since people are going to come by to look at it.
2008-07-30 13:34:22 -07:00
Andreas Gal
3a278cdf00
Add isGlobal to check whether a value is a slot of the global object.
2008-07-30 12:15:53 -07:00
Andreas Gal
40696cff65
Note to self: hacking after 4am is detrimental to my spelling.
2008-07-30 04:20:48 -07:00
Andreas Gal
f1a5494d05
Major shakeup of the interning code for globals. Globals are now detected on demand as they are used and the slots are noted in treeInfo->globalSlots. At the same time the type is recorded in treeInfo->globalTypeMap. The stack type-map is maintained separately in treeInfo->stackTypeMap. All these structures are lists and are maintained as List<T> objects. Imports for globals can appear at the top (if we have already seen some imports for the loop header and are recompiling), or on the fly for lazily found values. We no longer intern all global properties that happen to match a name in the current function, and we also support inlining of functions that touch globals that are not used in the method where the trace started in.
2008-07-30 04:17:22 -07:00
Andreas Gal
7290f281a0
Use List<T> to maintain global slot list in TreeInfo.
2008-07-30 01:38:21 -07:00
Andreas Gal
7beb3cd77f
Trash entire tree with all the information associated with it when we have a typemap conflict or the global shape changes.
2008-07-30 01:29:13 -07:00
Andreas Gal
afc7936599
Remember number of global slots known at that point in the trace in every side exit (forward-looking change to cope with dynamic collection of interned globals.)
2008-07-30 00:15:07 -07:00
Andreas Gal
90eee755f0
Merge.
2008-07-29 23:51:43 -07:00
Andreas Gal
f60c785137
Add a generic list data structure and fix side exit handling to always pick the right typemap to work with (exit map, not entry map).
2008-07-29 23:48:39 -07:00
David Anderson
60181b7fd2
Fixed some MSVC whinings, implemented rdtsc on win32
2008-07-29 19:19:51 -05:00
Brendan Eich
48a3285a82
Merge again.
2008-07-29 16:02:53 -07:00
Brendan Eich
73e208808e
Guard property cache hits by shape(s).
2008-07-29 16:01:00 -07:00
Andreas Gal
4d5b44839c
Rename gslots to globalSlots.
2008-07-29 15:28:23 -07:00
Andreas Gal
437f15d428
Remove global frame transition code. Obsoleted by the new on-demand global loading code which we are about to add.
2008-07-29 15:16:35 -07:00
Brendan Eich
cc79bb34c5
Merge.
2008-07-29 14:52:22 -07:00
Andreas Gal
5a7ac301e6
Limit tree growth to side exits that expicitly declare that they want to be grown.
2008-07-29 11:13:41 -07:00
Brendan Eich
636b8ed6b6
Fix a couple of comments.
2008-07-29 10:53:58 -07:00
shaver@mozilla.org
ce85bd8955
JSOP_ADD over strings
2008-07-29 07:53:31 -07:00
shaver@mozilla.org
2a1fd601c4
signs, signs, everywhere signs
2008-07-29 07:38:04 -07:00
shaver@mozilla.org
a8b963d4a4
Trace String.prototype.substring for two-arg case.
...
* Export str_substring as js_str_substring.
* Add basic String_p_substring builtin (only handle end > begin, both in range).
* Add String_p_substring_1 builtin for the missing-end case.
* INS_CONST for named constants in traces.
* Support boxing of strings.
* Support CALLPROP with primitive this.
* Support traceable natives which require cx and this.
* Support fallible traceable natives.
* Fix JSOP_LENGTH to use i2f on result (need that everything-is-doubles T-shirt).
* Add strings test.
2008-07-29 07:32:18 -07:00
shaver@mozilla.org
98caf383a5
Trace JSOP_LENGTH over flat strings. (Need some cmovery for dep strings.)
2008-07-29 06:51:27 -07:00
Andreas Gal
eaeee57c9b
Fix spelling.
2008-07-29 01:02:06 -07:00
Andreas Gal
1d8df7fd3c
Cleanup global frame switching and add delayed write-back code for doubles.
2008-07-29 01:00:50 -07:00
Brendan Eich
747b8fab0e
Regularize loop update in SwitchNativeGlobalFrame.
2008-07-29 00:13:59 -07:00
Brendan Eich
0a6546fb7a
Fix synthesizeFrame's newifp->callerRegs/frame.regs update to pass along the pointer to the precious js_Interpret regs local and update it.
2008-07-29 00:06:29 -07:00
Brendan Eich
f2ca9496f4
Try to fix SwitchNativeGlobalFrame, still studying it but these changes seem necessary.
2008-07-28 23:59:29 -07:00
Brendan Eich
3e4d484622
Fix synthesizeFrame parameterization, and have it reconstruct stack depth; warning and space fixes.
2008-07-28 23:47:20 -07:00
Andreas Gal
28deb1f5b0
Merge.
2008-07-28 23:31:39 -07:00
Andreas Gal
0bb95b6c46
Switch from one global frame to another by walking the two sorted gslots lists.
2008-07-28 23:30:16 -07:00
Brendan Eich
9894a22d65
Fix uninitialized nbytes in synthesize_frame.
2008-07-28 22:25:13 -07:00
Andreas Gal
ed2b81df60
Compilation fix for MSVC.
2008-07-28 21:17:43 -07:00
Andreas Gal
a9e5f84f42
Cleanup and split native frame reading/writing into stack and global part.
2008-07-28 18:06:34 -07:00
Andreas Gal
52bda2ec2c
Sort interned global slots in ascending order for fast comparison of two different global frames when switching between them.
2008-07-28 16:49:13 -07:00
shaver@mozilla.org
9c4c8495f9
not-yet-working beginnings of frame reconstruction
2008-07-28 09:05:55 -04:00
Andreas Gal
cd39ba2407
Trash the interned globals of a tree if we experience a global shape mismatch.
2008-07-27 21:44:08 -07:00
Andreas Gal
4df581e3b3
Trash the typemap if a change of the global shape forces us to throw away a tree.
2008-07-27 19:18:51 -07:00
Andreas Gal
b798d08035
Abort trace if we inline too deeply.
2008-07-27 16:28:09 -07:00
Andreas Gal
4710877c9a
Merge.
2008-07-27 16:19:15 -07:00
Andreas Gal
6126f5fa5c
Track the type of guards and react accordingly if we bail out on them. Guards that protect against out-of-memory conditions don't try to grow the tree. Instead we just resume the interpreter.
2008-07-27 16:18:53 -07:00
Andreas Gal
51b608badc
Don't use ABORT_TRACE outside the recorder.
2008-07-27 15:40:34 -07:00
shaver@mozilla.org
a4af3457f4
do setelem in a builtin, so we don't abort trace every 8 times when growing
2008-07-27 18:34:23 -04:00
Andreas Gal
e6cc02f5cc
If we see a f2i(UnboxDouble) chain, simplify it to UnboxInt32 which does the conversion internally. This also enables a fastpath to read 31-bit jsval integers from arrays.
2008-07-27 14:55:26 -07:00
Andreas Gal
7837aae392
Merge.
2008-07-27 14:29:24 -07:00
Andreas Gal
a3eb60b77e
Add limited outerlining. Much of this will be subsumed by nested trees.
2008-07-27 14:28:56 -07:00
shaver@mozilla.org
e69c5b7239
remove rval tracking, since it's no longer necessary
2008-07-27 15:47:43 -04:00
Andreas Gal
ca563057ee
Remove guardCount. No longer needed.
2008-07-27 12:05:01 -07:00
Andreas Gal
8a7bb9c550
Smarter speculative demotion of numbers to integers and promotion of the trace seems to require actual doubles. If the number at entry looks like an int we make the slot an int and compile as such. If the loop-tail proves the slot to be a double, we recompile the trace. Currently such miss-speculation cannot be handled on secondary traces since we are currently unable to recompile the primary trace. Such secondary traces are blacklisted.
2008-07-27 02:15:17 -07:00
Andreas Gal
a4fc19765e
Don't try to demote slots on secondary traces (we have to recompile the primary trace as well for that, which we currently don't do.)
2008-07-25 19:30:33 -07:00
Andreas Gal
059abfa50f
Added sunspider tests to t/ for dvander.
2008-07-25 18:43:19 -07:00
Andreas Gal
812989bb8a
Eliminate EntryRegs. Its not safe to keep a reference to the entry SP since we might extend the tree from a different outer stack frame. Instead just store the entryStackDepth.
2008-07-25 18:22:15 -07:00
Andreas Gal
bbb1bc89c0
Print real recording point, not entryRegs and add an assert that makes sure the guard we come out of is associated with the tree we entered into.
2008-07-25 18:13:57 -07:00
Andreas Gal
24447ee8fb
Merge.
2008-07-25 16:54:14 -07:00
Andreas Gal
1b7930d39d
The VP engineering broke JSOP_NAME! We have to check whether the slot is actually interned and otherwise abort.
2008-07-25 16:51:42 -07:00
Brendan Eich
a8c6046d8c
Avoid JSOP_POPV in global scripts from load(), etc.
2008-07-26 01:23:12 +02:00
David Anderson
4560ed961f
Fixed entry typemap having wrong allocation size.
2008-07-25 13:30:52 -07:00
Andreas Gal
d952f192ba
Can't use lr->from. Seems to not get set in certain cases. Go figure. The nanojit tree code is really weird.
2008-07-25 02:29:36 -07:00
Andreas Gal
dee805421b
Factor out AttemptToGrowTree.
2008-07-25 02:00:02 -07:00
Andreas Gal
ecb79b1640
Determine ahead of time whether a side exit is a loop-terminating side exit instead of re-determining this at every side exit.
2008-07-25 01:44:40 -07:00
Andreas Gal
f3573b9940
Move trace activation code into js_ExecuteTree().
2008-07-25 01:20:40 -07:00
Andreas Gal
3999210c12
Make demotion threshold optional (0=off, 32=default). Turn off to debug the type assert bug.
2008-07-24 17:33:34 -07:00
Andreas Gal
e838b138b8
Don't demote slots in overly long traces (based on counting the number of guards, current threshold=32).
2008-07-24 16:25:18 -07:00
Andreas Gal
f0399ffea7
Cleanup iteration over all slots to use a single macro to avoid code duplication.
2008-07-24 14:51:14 -07:00
Andreas Gal
e7f92ecf31
Add shark support to md5.js directly, no longer around the recorder.
2008-07-24 11:08:37 -07:00
Andreas Gal
6df91a21a0
Make the interpreter notify us when frames are popped so we see he right cx->fp value. Fix return value tracking for JSOP_STOP.
2008-07-24 10:35:10 -07:00
Andreas Gal
5ae4ef819e
Backed out changeset a58e7ce6eb7f. stack(0) is wrong, if at all it should have been stack(-(1 + argc)). But anyway, its impossible to write through to the frame via set() at that point because leaveFrame() doesn't actually modify cx->fp. We need to wait for the interpreter to do so. Until then nativeFrameOffset produces incorrect values and the assert fails in set.
2008-07-24 10:09:51 -07:00
shaver@mozilla.org
b989e7b3e7
fix return-value handling for new stack layout
2008-07-24 00:31:37 -07:00
Andreas Gal
41e0593392
Maintain a separate frame for globals using InterpState->gp.
...
This will allow nested loops to access the globals interned by outer loops while at the same time sharing parts of the stack of the outer loop.
2008-07-23 23:18:02 -07:00
Andreas Gal
117bc4d9f9
Add a fast path for nativeFrameOffset that walks entire groups at a time, not slots. Check against the result calculated by the FORALL macro in DEBUG builds (for sanity).
2008-07-23 16:39:17 -07:00
Andreas Gal
4cc2061091
Merge. Make sure we clear out all slots from the tracker when leaving a frame.
2008-07-23 15:56:27 -07:00
Andreas Gal
df280d08d7
When addressing locations above the stack water level, use ->sp as base. Shaver accidently changed this to ->spbase when merging Igor's patch, so we were writing past the water mark and the stores were killed.
2008-07-23 15:48:15 -07:00
shaver@mozilla.org
c29aa4c3d2
tighten up some bounds, still not quite right
2008-07-23 11:42:52 -04:00
Andreas Gal
5dd9876515
Lazy fill the stackTracker as we lookup the nativeFrameOffset for values. Purge all entries related to the current frame when it is popped. This code could be further simplified if Tracker was a template.
2008-07-23 02:57:56 -07:00
shaver@mozilla.org
f0a625f5bc
merge from andreas
2008-07-23 01:08:23 -04:00
shaver@mozilla.org
6f5e58e443
merge (still not working, probably box/unbox dumbness)
2008-07-23 01:06:18 -04:00
shaver@mozilla.org
a93fbcc99d
merge (now compiling, untested)
2008-07-23 00:20:29 -04:00
Andreas Gal
c9cac5757f
Handle leaving of frames in one central place.
2008-07-22 20:16:12 -07:00
Andreas Gal
c6828d3504
Reduce HOTLOOP threshold to 2.
2008-07-22 18:31:44 -07:00
Andreas Gal
06365155c2
Avoid calculating native frame offset by tracking the last load/store for every slot and extracting the offset from there.
2008-07-22 17:54:04 -07:00
Andreas Gal
48b195e651
Avoid nativeFrameOffset calls in import().
2008-07-22 17:24:29 -07:00
Andreas Gal
14b0a0827d
Merge.
2008-07-21 19:38:03 -07:00
Andreas Gal
9b799905ed
Add a pattern to recognize safe_add and emit a simple add for it.
2008-07-21 19:37:43 -07:00
shaver@mozilla.org
e0b2e86c09
use nargs rather than argc, since bytecode only refers to [o-nargs) args
2008-07-21 22:31:08 -04:00
Andreas Gal
2d2bcf0fc8
Reverse the insanity that used to be tamarin's arg passing in ins2. Now it makes sense.
2008-07-21 17:59:42 -07:00
Andreas Gal
3b2a943332
Avoid overflow checks on integer adds when its safe to do so.
2008-07-21 17:50:17 -07:00
Andreas Gal
410c0b9a98
Eliminate entryFrame pointer (not safe to carry that around.)
2008-07-21 16:20:53 -07:00
Andreas Gal
b30f4c9be6
Use callDepth instead of entryFrame in the FORALL macro.
2008-07-21 16:19:38 -07:00
Andreas Gal
f1ef7f0175
Eliminate exit filter, write the type map directly in snapshot.
2008-07-21 15:09:19 -07:00
Andreas Gal
9495f9cb50
Sink stack-targeting type conversion in the set() path instead of in the ExitFilter.
2008-07-21 15:01:47 -07:00
Andreas Gal
a7cc4892f9
Use callDepth, not entryFrame in nativeFrameSlots().
2008-07-21 14:55:41 -07:00
Andreas Gal
bce8e13528
Remove excess parameters of verifyTypeStability.
2008-07-21 13:21:00 -07:00
Andreas Gal
a0cd046167
Track call depth in the trace recorder. This lays the groundwork to get rid of entryFrame.
2008-07-21 13:18:08 -07:00
shaver@mozilla.org
124244af4b
beginning of entryFrame removal
2008-07-21 15:57:02 -04:00
Andreas Gal
5067fc2638
Merge.
2008-07-21 12:44:03 -07:00
Andreas Gal
3f6f0d1ea5
Use ti instead of fi for TreeInfo pointers.
2008-07-21 12:43:51 -07:00
Andreas Gal
e9b2918575
Rename VMFragmentInfo to TreeInfo.
2008-07-21 12:41:43 -07:00
Andreas Gal
2f5e227963
Merge.
2008-07-20 17:36:47 -07:00
Andreas Gal
221f99adce
Style cleanup and eliminate redundant f2u(i2f|u2f) chains.
2008-07-20 17:36:11 -07:00
Brendan Eich
4a9828f126
Cite bug 445262 with a FIXME instead of omfgHack_ prefix ;-).
2008-07-20 16:21:45 -07:00
Brendan Eich
464b70d055
Tighten up js_IsLoopEdge and include JSOP_IFNEX.
2008-07-20 16:11:52 -07:00
Brendan Eich
c278ae56e0
Nit patrol.
2008-07-20 16:09:08 -07:00
Andreas Gal
e82ab0c21f
Simplify updating of the side exit target.
2008-07-20 14:56:04 -07:00
shaver@mozilla.org
368d1588bf
simpler loop exit check (backwards is a loop exit, forwards is not)
2008-07-20 17:54:16 -04:00
shaver@mozilla.org
7546f723f5
force Math to be interned, and defend against non-interned globals until upvar saves us all
2008-07-20 17:23:39 -04:00
Andreas Gal
0b74e54db8
Use exponential backoff when trying to extend trees.
2008-07-20 14:28:56 -07:00
Andreas Gal
a0e38ffd84
Merge.
2008-07-20 13:29:20 -07:00
Andreas Gal
d4d2117f7c
Don't emit boxed values, use the unboxed representation for constants.
2008-07-20 13:28:53 -07:00
Andreas Gal
71eb1da52f
Removed meaningless assert.
2008-07-20 13:25:36 -07:00
shaver@mozilla.org
cadc5891e5
don't pretend we can trace INCELEM and friends (fixes trace-test.js, ahem)
2008-07-20 16:21:43 -04:00
shaver@mozilla.org
ed1d0a8953
improve tracing/recording diagnostics
2008-07-20 15:42:19 -04:00
shaver@mozilla.org
d03348f92d
discard trace on global shape mismatch
2008-07-19 22:32:45 -07:00
Brendan Eich
5b009b1b49
Breathe, vertical-spacing, breathe!
2008-07-19 15:42:31 -07:00
shaver@mozilla.org
ef2e8305dc
Avoid tracking object properties, make incElem work.
2008-07-19 10:24:10 -07:00
shaver@mozilla.org
f34cd71b78
Implement DEFLOCALFUN for the fully-lightweight case.
...
Reset atoms base register on function entry and exit.
2008-07-19 06:29:56 -07:00
Brendan Eich
293e6bd4c4
Improve js_IsLoopExit (unannotated JSOP_GOTO is still ambiguous).
2008-07-19 10:52:24 -07:00
Brendan Eich
a26be1bd4b
Fix incProp to box and store (incElem still todo).
2008-07-19 10:24:28 -07:00
Andreas Gal
f2ad868fc0
Merge. hg sucks.
2008-07-19 00:40:54 -07:00
Andreas Gal
457c855d15
Don't demote fmul since it overflows in math-partial. We might try to demote it and then promote back if this happens (depends how aggressively we want so speculate). Speedup 6.6 for math-partial (since its sin/cos/pow heavy.)
2008-07-19 00:27:45 -07:00
Brendan Eich
d1b171e5e2
First stab at incops, plus unbox_jsval tag-masking guard fixes, plus misc. cleanup.
2008-07-19 00:15:22 -07:00
Andreas Gal
5495ccf586
Abort trace is STOP is leaving the recording context.
2008-07-18 19:15:49 -07:00
Andreas Gal
47ae25da20
Make entryFrame/entryRegs relative to the tree entry since we only adjust ip/sp/rp when exiting from the tree, not in between fragments.
2008-07-18 16:21:22 -07:00
Andreas Gal
a8b127d5af
Adjust ip/sp/rp in the interpreter recovery code, not on the trace.
2008-07-18 15:35:59 -07:00
Andreas Gal
1c9c67b6a1
Write all the debug output to stdout (we can't easily make everything go to stderr, so this way at least it all goes into the same place.)
2008-07-18 14:13:31 -07:00
Andreas Gal
89b50ed124
Rework some of David's changes. Make sure we don't modify the tree until we are ready to attach the new fragment. Share lirbufs between tree branches.
2008-07-18 14:11:01 -07:00
David Anderson
4770d4b3e0
Got side exits seemingly working, added if.js to trace-test.js
2008-07-18 10:33:17 -07:00
shaver@mozilla.org
61d58bad87
Handle more operand types in ifop().
2008-07-18 08:01:51 -07:00
shaver@mozilla.org
983e9cdb83
Better diagnostic info for trace abort.
2008-07-18 07:59:37 -07:00
shaver@mozilla.org
3eaeae50b5
lookup/find, but do not fill prop cache from recorder
2008-07-18 00:46:18 -07:00
shaver@mozilla.org
7078a99d21
When PROPERTY_CACHE_TEST misses, fall back to doing our own lookup via js_GetPropertyHelper.
2008-07-17 23:57:56 -07:00
Brendan Eich
84c0998916
Warning elimination.
2008-07-17 18:30:54 -07:00
Andreas Gal
f94180fbe2
Make sure we compile again if we reject a trace by decrementing hits.
2008-07-17 18:15:55 -07:00
Andreas Gal
f58160134a
Fix hot loop triggering.
2008-07-17 18:10:47 -07:00
shaver@mozilla.org
859ec6fbb6
can't easily find real names for globals, so just number them
2008-07-17 17:33:18 -07:00
Andreas Gal
dded69f2a3
Merge.
2008-07-17 17:13:41 -07:00
Andreas Gal
19ed222624
Disable trees for the time being.
2008-07-17 17:12:28 -07:00
Andreas Gal
43fbfbfe1e
Add if.js example for trees.
2008-07-17 16:38:09 -07:00
Andreas Gal
dbf2dc54bd
Add the beginning of support for trees.
2008-07-17 16:20:13 -07:00
shaver@mozilla.org
3db81baa04
Label globals and locals with their source-names in trace.
...
Show line number on abort.
2008-07-17 15:09:48 -07:00
Andreas Gal
f91ca871ac
Add js_IsLoopExit that indicates whether a side exit is likely to continue the loop or not.
2008-07-17 14:58:09 -07:00
Andreas Gal
3df09fb85c
Cleanup recorder activation, use a single hot loop threshold (10).
2008-07-17 13:42:58 -07:00
Andreas Gal
954c5830e1
Added statistics and a js_DestroyJIT hook. Also use debug_only and not verbose_only as #ifdef DEBUG shortcut.
2008-07-17 10:22:40 -07:00
Andreas Gal
bfb3e457f1
Fix signature of insCall in the FuncFilter and remove f2i(i2f) elimination since we shouldn't really ever hit it.
2008-07-17 03:24:17 -07:00
Andreas Gal
e12047397c
Move up addName to make sure it gets inline in non-debug mode.
2008-07-17 02:02:48 -07:00
shaver
87eacb1139
Add setprop and tests for setprop and cleanup labling code for debug mode (m=gal).
2008-07-17 02:00:23 -07:00
Andreas Gal
9d6fa41738
Cleanup trace abort handling.
2008-07-17 01:29:41 -07:00
Andreas Gal
3fa6978605
Merge.
2008-07-17 00:48:30 -07:00
Andreas Gal
3cd2b84ec4
Fixed ASSERT JS_DOUBLE != JS_VOID issue. If the root fragment fails to compile, trash the type-map and re-capture it when we try to re-compile.
2008-07-17 00:48:10 -07:00
shaver@mozilla.org
acde4fceb0
JSOP_LENGTH
2008-07-16 23:53:14 -07:00
Andreas Gal
6cfd498b7c
Increase code cache size.
2008-07-16 23:47:57 -07:00
Andreas Gal
ad6b349616
Merge.
2008-07-16 23:39:12 -07:00
Andreas Gal
e2a0438e22
Fix f2i(i2f) filter (broken since the last TT sync, argument order changed from right to left to left to right).
2008-07-16 23:38:39 -07:00
Brendan Eich
13d6469f9b
Prefer getarg;length, etc. to getargprop.
2008-07-16 23:33:04 -07:00
Andreas Gal
83ac88d4c7
Don't clear out arguments, clear out variables at method entry.
2008-07-16 23:04:50 -07:00
Andreas Gal
b243a8350a
Better naming of the after_JSOP_CALL event (EnterFrame).
2008-07-16 23:00:59 -07:00
Andreas Gal
2442099090
Notify the recorder when a new frame was created by JSOP_CALL.
2008-07-16 22:58:06 -07:00
Andreas Gal
2379d6dcde
Initialize arguments to void and write JSVAL_HOLE's value onto the native stack, not its boxed representation.
2008-07-16 22:25:56 -07:00
Andreas Gal
df5005a322
Hand in typemap the recorder is supposed to use (preparation for side exit compilation and trees).
2008-07-16 21:49:42 -07:00
Andreas Gal
def4afc614
Move the allocation of the LIR buffer and the FragmentInfo data structure creation (which includes typemap and interned global calculation) into loopedge.
2008-07-16 21:41:03 -07:00
Andreas Gal
af95344998
Make JSOP_CALLNAME tell us why it doesn't like to trace.
2008-07-16 19:00:14 -07:00
Andreas Gal
74f767e62b
Fix generation of VOID immediates and initialize rval after the new frame was setup by CALL.
2008-07-16 17:44:44 -07:00
Andreas Gal
db7e41ed40
Add generic recorder hooks that are called before and after all opcodes as we trace. We might want to instead just move to pre_OP and post_OP.
2008-07-16 17:29:08 -07:00
Andreas Gal
c041bad939
Don't intern global function objects onto the native frame since we rarely ever need them anyway (we call them via the property cache).
2008-07-16 15:48:51 -07:00
Andreas Gal
7f119dc35a
Enable CALLNAME and add test case for it so we can call global functions.
2008-07-16 15:40:35 -07:00
Andreas Gal
c7714a3ad5
Make sure this/argv[-1] is set fpr CALLVAR and CALLARG.
2008-07-16 15:13:27 -07:00
Andreas Gal
04ea9e0e09
Enable inlining for calls. Deep bailouts (from within side exits) are generated but are not allowed to be ever taken (for now).
2008-07-16 15:01:55 -07:00
Andreas Gal
43b7ba1be4
Don't use a builtin for this. For functions its interned in the native frame. For global this we read from fp->thisp. Restore jsinterp.cpp and jsinterp.h (no longer need COMPUTE_THIS exposed).
2008-07-16 14:36:50 -07:00
David Anderson
5dca2ad552
Synced nanojit with TT tip.
2008-07-16 14:21:31 -07:00
shaver@mozilla.org
ef9a5dc216
fix GETXPROP; thanks to brendan for playing chewbacca
2008-07-16 13:10:17 -04:00
shaver@mozilla.org
f8c80ec490
CALLARG, CALLVAR
2008-07-15 23:37:57 -04:00
shaver@mozilla.org
4937938676
fix scalpel left in nativeFrameSlots from aborted thisp addition to frame
2008-07-15 23:20:53 -04:00
shaver@mozilla.org
21a3ec3485
implement JSOP_MOD
2008-07-15 23:19:29 -04:00
shaver@mozilla.org
3a4c348313
Trace JSOP_THIS and JSOP_THISPROP.
...
Rename getprop to get_prop, just because.
Extract COMPUTE_THIS to jsinterp.h as JS_COMPUTE_THIS for reuse in tracer.
2008-07-15 21:37:00 -04:00
Andreas Gal
21490a6e41
Fix uncomplete range check for slot numbers of interned globals.
2008-07-15 17:10:52 -07:00
Andreas Gal
cd739bdb35
Strict aliasing cleanup.
2008-07-15 16:14:00 -07:00
Andreas Gal
3aeb53f580
Add a few consts to char* pointers to pacify gcc 4.2.
2008-07-15 16:04:08 -07:00
shaver@mozilla.org
3693365174
rename getpropfromval, it burns mine eyes
2008-07-15 18:29:42 -04:00
Andreas Gal
1b783425aa
Assign blame where blame is due.
2008-07-15 15:05:16 -07:00
Andreas Gal
cbf4813605
Merge.
2008-07-15 13:14:05 -07:00
Andreas Gal
a81b83090e
Sync with TT.
2008-07-15 13:06:05 -07:00
shaver@mozilla.org
919139d11b
initialize dslots_ins
2008-07-15 13:40:11 -04:00
Brendan Eich
3ccdb62685
Propagate error exceptions from TraceRecorder ctor; fiddle/trim space.
2008-07-15 10:26:15 -07:00
shaver@mozilla.org
7d7ece76a8
GETVARPROP, GETARGPROP, GETXPROP
2008-07-15 13:17:51 -04:00
shaver@mozilla.org
409bb7f29d
more ABORT_TRACE instrumentation (some should be asserts?)
2008-07-15 09:07:54 -04:00
Andreas Gal
5848fd6694
Generate a list of interned global slots (gslots) when we process the tree header. This list is then used whenever we iterate over the native frame. This is faster and safer than looking up properties in the global object every time.
2008-07-15 01:53:39 -07:00
Andreas Gal
84608819b9
Remove state exposing accessor functions from recorder and instead hand in that state via the constructor into ExitFilter.
2008-07-15 01:27:14 -07:00