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
Brendan Eich
fff2cda315
Export js_ReconstructStackDepth for use by side-exit code when synthesizing stack frames.
2008-07-28 23:46:27 -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
05870cebe8
Merge.
2008-07-27 02:15:42 -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
Brendan Eich
4d1de6a956
Add JSSF_NO_SCRIPT_RVAL script flag, and uint8 flags field for it.
2008-07-27 00:12:01 +01:00
Brendan Eich
8b62f00bae
Fix comment typo.
2008-07-27 00:11:30 +01: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
02997616f4
Add a test case for trees.
2008-07-25 19:10:23 -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
shaver@mozilla.org
8a97552a28
merge (mostly, doesn't build)
2008-07-22 23:58:43 -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
shaver@mozilla.org
c0213c60b9
make time.sh more useful
2008-07-21 21:44:21 -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
shaver@mozilla.org
faf081c185
merge time is fun time
2008-07-20 18:04:27 -04:00
shaver@mozilla.org
49619fefae
add simple timing harness
2008-07-20 18:03:07 -04: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
Igor Bukanov
e32ac96bff
bug 330765 - patch from romaxa to fix NativeCompareAndSwap implementation on ARM. r=myself
2008-07-22 16:12:04 +02:00
Johnny Stenback
499796e945
Landing fix for bug 442708. JS_GC with GC_SET_SLOT_REQUEST doesn't loop until all threads are satisfied. Patch by brendan@mozilla.org, r=bent.mozilla@gmail.com
2008-07-21 16:58:24 -07:00
Johnny Stenback
6b0fc3a654
Landing fix for bug 444880. Make the JS component loader use the JS context stack so that pending requests are suspended while components load. Patch by bent.mozilla@gmail.com, r+sr=jst@mozilla.org
2008-07-21 16:56:45 -07:00
Bob Clary
97a6b9fbb5
Sisyphus|JavaScript Tests - allow user to execute tests from other location than TEST_DIR, bug 446097, r=cbook
2008-07-21 18:18:15 -04:00