Commit Graph

2745 Commits

Author SHA1 Message Date
Andreas Gal
80036e48d3 Pull in Moh's vprof utility from tamarin-tracing. 2008-07-31 13:39:41 -07:00
Andreas Gal
f0c74cce54 Sync with tamarin-tracing/nanojit tip. 2008-07-31 13:28:12 -07:00
shaver@mozilla.org
df01719b57 use optimized path for fromCharCode 2008-07-31 12:22:48 -07:00
shaver@mozilla.org
c274666457 Refactor js_GetUnitString to permit passing in a bare jschar, and use in js_str_fromCharCode. 2008-07-31 12:21:59 -07:00
shaver@mozilla.org
b078fb1509 Refactor trace-test.js to permit running a single test via js trace-test.js testName. 2008-07-31 12:15:22 -07:00
shaver@mozilla.org
3221386525 add specialized StringToInt32 and filter for it 2008-07-31 11:35:08 -07:00
shaver@mozilla.org
bccb36ea81 give strtointeger a way to avoid octal, to streamline ValueToNumber a bit 2008-07-31 11:33:55 -07:00
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
dvander@iroh.alliedmods.net
6fe516cd73 Merge. 2008-07-29 19:20:36 -05:00
David Anderson
60181b7fd2 Fixed some MSVC whinings, implemented rdtsc on win32 2008-07-29 19:19:51 -05:00
Andreas Gal
8a6d3622fe Merge. 2008-07-29 17:15:00 -07:00
Andreas Gal
79fa051958 Removed unused field from TreeInfo. 2008-07-29 17:14:36 -07:00
David Anderson
340cb50c53 Merge (an empty one, thanks hg) 2008-07-29 19:05:59 -05:00
David Anderson
921bbecea3 Fixed infinite looping on non-threaded tracing (rumor is that we do Windows builds of Firefox) 2008-07-29 19:04:17 -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
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
Blake Kaplan
d1c2f6d0ef Merge backout 2008-08-04 11:13:34 -07:00
Blake Kaplan
1c6155e1bf Backed out changeset 90020c4ad446 to fix tinderbox orange while I figure out why a test was failing. 2008-08-04 11:12:51 -07:00
Blake Kaplan
74e6fd4abf Don't optimize variable names in with statements. bug 448595, r=brendan 2008-08-04 10:07:06 -07:00
Blake Kaplan
52a3888cfa Propagate compilation errors to our caller to make syntax errors easier to debug. bug 408412, r=shaver sr=brendan 2008-08-04 10:03:34 -07:00
Graydon Hoare
78450de1f0 Bug 444845, js hooks to control vtune, r=sayrer 2008-07-29 15:19:26 -07:00
Igor Bukanov
dcdf0df942 bug 445391 - re-enable OJI for Firefox 3.1, the configure changes is from jst, r=jst,crowder, sr=benjamin 2008-07-29 19:53:03 +02:00
Igor Bukanov
0e9a6fa3da bug 446320 - fixing -Wformat warnings in debug printouts. r=crowder 2008-07-29 16:11:36 +02:00
Igor Bukanov
b85cc2c8a0 bug 448173 - fixing js shell compilation issues on Windows caused by my changes from the bug 447807. r=bclary, not-part-of-the-build 2008-07-28 01:22:29 +02:00
Igor Bukanov
0f9d60d4c4 Backed out changeset 65836af09dac - compilation errors 2008-07-27 23:05:52 +02:00
Igor Bukanov
e04b341333 bug 446320 - fixing -Wformat warnings in debug printf code. r=crowder 2008-07-27 22:52:10 +02: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
Bob Clary
ba65f510c3 JavaScript Tests - regression test for bug 438415, by Jesse Ruderman 2008-07-26 21:13:30 -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
Graydon Hoare
f335bdf69d Bug 447844: fix build with JS_HAS_SCRIPT_OBJECT, r=mrbkap 2008-07-24 16:07:00 -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
Brian Crowder
645304c008 merging backout 2008-07-24 14:07:05 -07:00
Brian Crowder
019e94ec12 Backed out changeset a5fc387c4622 2008-07-24 14:05:29 -07:00
Igor Bukanov
7ee86f95f8 bug 447807 - allow to override the object dir when building js shell. r=crowder 2008-07-24 22:08:18 +02:00
Brian Crowder
8d3b212c33 Fixing a typo in a comment. 2008-07-24 12:59:11 -07:00
Brian Crowder
cdc07f72ab Bug 384244 - Updating dtoa from David M. Gay's latest code, and refactoring to
accept patches from this upstream source more easily. r=mrbkap, r=igor
2008-07-24 12:43:41 -07:00
Brian Crowder
10901da2a8 Bug 446494 - Number.toLocalString() doesn't handle Infinity or exponential notation correctly, r=mrbkap 2008-07-24 12:43:40 -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
Igor Bukanov
f2afe03bb6 bug 447705 - fixinge makefile for js shell to handle parallel make invocations. r=crowder, not-part-of-the-build. 2008-07-24 11:03:19 +02: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
Bob Clary
756a07e31b Sisyphus|JavaScript Tests - add repository information to failure tracking, bug 447738 2008-07-24 01:04:56 -04:00
Bob Clary
5e4e630789 merge commit for bug 399397 2008-07-24 00:52:24 -04:00
Bob Clary
b42b1e15b8 Sisyphus|JavaScript Tests - update public failures, bug 399397 2008-07-24 00:50:21 -04: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
Brendan Eich
2100afe584 Space nit fix. 2008-07-24 00:55:41 +02: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
Blake Kaplan
9153202245 Merging backout 2008-07-23 13:20:41 -04:00
Blake Kaplan
5ec9f1693f Backed out changeset 084567d3ebe6. It actually made us not comply with ECMAScript 3. 2008-07-23 13:19:44 -04:00
Blake Kaplan
742d27285f Attempt to make XPC_XOW_ClassNeedsXOW faster. bug 444779, r=jorendorff/jst sr=jst 2008-07-23 12:55:57 -04:00
John Fitzgerald
c21fd6d356 Calculate the time zone offset correctly. bug 445879, r=mrbkap 2008-07-23 12:46:39 -04: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
Igor Bukanov
e32ac96bff bug 330765 - patch from romaxa to fix NativeCompareAndSwap implementation on ARM. r=myself 2008-07-22 16:12:04 +02: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
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
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
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
Brendan Eich
a6bb7cfc89 Always select gvar ops for declared global vars, instead of only if loopy/enough-used (445901, r=shaver). 2008-07-21 15:14:14 -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
Jason Orendorff
a721c4227c Bug 445624 - Delete dead code in JSObject2NativeInterface hot path (r+sr=jst) 2008-07-21 15:16:47 -05: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
c73f865645 Fix property cache fill to use the best shape (445899, r=shaver). 2008-07-20 16:27:10 -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
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
f91f913b49 move summarization to the end, so I can see it through the debug spew 2008-07-20 16:17:58 -04:00
Igor Bukanov
fc68712767 bug 441686 - eliminating JSStackFrame.(nvars|vars). r=brendan 2008-07-20 22:13:17 +02:00
shaver@mozilla.org
ed1d0a8953 improve tracing/recording diagnostics 2008-07-20 15:42:19 -04:00
Igor Bukanov
d3223d86a3 [Bug 446229] Fixing GCC conversion warnings within SpiderMonkey. r=brendan 2008-07-20 14:53:21 +02: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
Igor Bukanov
6e106c4272 [Bug 444846] Fixing GCC warning on x86-64 about redefined HAVE_VA_LIST_AS_ARRAY. r=crowder 2008-07-19 19:51:05 +02:00
Igor Bukanov
c3acf2cc17 merge 2008-07-19 19:31:48 +02:00
shaver@mozilla.org
ef2e8305dc Avoid tracking object properties, make incElem work. 2008-07-19 10:24:10 -07:00
shaver@mozilla.org
991ee56658 fix no-tracer build 2008-07-21 06:59:38 -04: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
Brendan Eich
032f06cdc0 Property-cache JSOP_NAMEINC etc. direct slot case (445893, r=shaver). 2008-07-18 22:53:22 -07:00
L. David Baron
ff3cb68441 Backed out changeset 5c009a853d70 for hitting a fatal JS_Assert during xpcshell unit tests (xpcom/unit/test_bug374754.js) on the DO_NEXT_OP(JSOP_INCNAME_LENGTH) line on !JS_THREADED_INTERP platforms (Windows). 2008-07-18 21:53:07 -07:00
Andreas Gal
d6a9994067 Merge. 2008-07-18 19:16:16 -07:00
Brendan Eich
3ec5069d69 Property-cache JSOP_NAMEINC etc. direct slot case (445893, r=shaver). 2008-07-18 19:16:15 -07:00
Andreas Gal
5495ccf586 Abort trace is STOP is leaving the recording context. 2008-07-18 19:15:49 -07:00
shaver@mozilla.org
beb2ed6657 Propagate TCF_COMPILE_N_GO through to inner functions, so that we can avoid nulling their parents and then cloning expensively in DEFLOCALFUN.
Also make Process do COMPILE_N_GO.
2008-07-18 17:15:41 -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
Andreas Gal
a947ae3ef3 Merge. 2008-07-17 21:32:23 -07:00
Andreas Gal
f309cf6b64 Try to clean up the memory allocation/deallocation through the avmplus glue code. 2008-07-17 21:31:50 -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
Igor Bukanov
c645a6135d [Bug 445818] Using explicit assembly to implement compare-and-swap on x86-64 to avoid __sync_bool_compare_and_swap (GCC intrinsic) as the latter is buggy at least on ARM. r=brendan 2008-07-18 02:18:45 +02: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
Bob Clary
e818dc5938 JavaScript Tests - update public-failures and universe.data to include mozilla-central 1.9.1 branch, remove unsupported machine configurations, bug 399387 2008-07-18 13:59:09 -04:00
Bob Clary
831500ce51 Sisyphus - JavaScript Tests - add detect-universe.sh, bug 446037 2008-07-18 12:56:47 -04: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
Brendan Eich
08930f369e Use the property cache for JSOP_NAMEINC, etc. 2008-07-17 16:54:01 -07:00
Brendan Eich
04a56fbab2 Fix property cache fill to use the right shape. 2008-07-17 16:51:27 -07:00
Brendan Eich
0400c0250e Merge. 2008-07-17 16:50:09 -07:00
Andreas Gal
591262852c Don't allocate FpRegs if sse2 is enabled. 2008-07-17 15:00:22 -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
Brendan Eich
78677269db Always select gvar ops for declared global vars, instead of only if loopy/enough-used. 2008-07-17 14:37:25 -07:00
Brian Crowder
6b267118d5 Bug 430740 - BOM characters are stripped from javascript before execution
r=igor
2008-07-17 16:58:06 -04:00
Andreas Gal
3df09fb85c Cleanup recorder activation, use a single hot loop threshold (10). 2008-07-17 13:42:58 -07:00
Andreas Gal
d12de2bcc6 Merge. 2008-07-17 10:30:00 -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
Ben Turner
b9aab16257 Bug 443870 - Add JSAutoSuspendRequest to match JSAutoRequest
r=brendan
2008-07-17 12:37:32 -04:00
shaver@mozilla.org
78a73004ca remove pointless untracedCall test 2008-07-17 08:43:55 -07:00
Igor Bukanov
43807b8a54 [Bug 444608] optimizing E4X constructor calls. r=brendan 2008-07-17 16:19:30 +02:00
Jason Orendorff
832cb53b87 Bug 423867 - Migrate js/src/README.html to developer.mozilla.org (r=brendan) 2008-07-17 07:24:33 -05: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
d158a8b778 Merge. 2008-07-17 02:03:56 -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
shaver@mozilla.org
d55f1d7153 merge, woo 2008-07-17 01:59:58 -07:00
shaver@mozilla.org
9929228e46 summarize test results 2008-07-17 01:58:34 -07:00
Igor Bukanov
708422ea13 [Bug 433337] jsinterp.cpp source no longer split between 2 compilation units when compiling on Windows. r=brendan 2008-07-17 10:57:34 +02:00
Andreas Gal
9d6fa41738 Cleanup trace abort handling. 2008-07-17 01:29:41 -07:00
Igor Bukanov
da35201aed [Bug 440184] js_(Lock|Unlock) are defined as external non-inline functions to prevent linkage errors with js shell. r=brendan 2008-07-17 10:22:45 +02: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
6496a9a34f Merge. 2008-07-16 23:48:42 -07:00
Andreas Gal
6cfd498b7c Increase code cache size. 2008-07-16 23:47:57 -07:00
shaver@mozilla.org
5c32a234df 4.2, dammit 2008-07-16 23:44:25 -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
shaver@mozilla.org
9182a834c4 copy capacity when becoming another list 2008-07-16 23:11:17 -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
2bb0691553 Fixed call tests. 2008-07-16 22:08:59 -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
782f2b87ec Fix typo in test cases. 2008-07-16 19:10:07 -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
ef439210ed Add md5.js so we can play with it. We should sweep these test cases into a subdir or just delete them once they trace. 2008-07-16 18:10:19 -07:00
Andreas Gal
25c6cd5ff1 Add testcase for chains for global calls. 2008-07-16 18:08:58 -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
dd7be4a81c Add test case for CALLPROP. 2008-07-16 15:53:04 -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
fe50e4724a Add test cases for call. 2008-07-16 15:26:51 -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
Blake Kaplan
dccac8e071 Test that the object has the right class, even when called from native code. bug 444233, r=shaver 2008-07-16 19:29:06 +02:00
shaver@mozilla.org
ef9a5dc216 fix GETXPROP; thanks to brendan for playing chewbacca 2008-07-16 13:10:17 -04:00
Igor Bukanov
43c915fb81 [Bug 444076] implementing compare-and-swap for 64-bit Linux. r=brendan 2008-07-16 17:58:37 +02:00
Blake Kaplan
b0d13d837c Tab removal. No bug, NPOTB. 2008-07-16 12:06:26 +02: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
e4c2afffe8 Added math-partial-sums.js for danderson. 2008-07-15 17:07:24 -07:00
Andreas Gal
47d2c66cc7 Remove dead code. 2008-07-15 16:25:19 -07:00
Andreas Gal
d9110d8393 Aliasing cleanup for LIR.h. Patch submitted for upstream review. 2008-07-15 16:17:34 -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
Andreas Gal
7c24d0f34d Compilation fixes for gcc 4.2. Ripp out write-barrier code in our avmplus glue layer. 2008-07-15 15:58:43 -07:00
Andreas Gal
d69aca5be6 Merge. 2008-07-15 15:54:07 -07:00
Andreas Gal
d834427e36 Switch tracemonkey over to gcc-4.2 on macosx. We need a compiler that was released in this millenium so we can use SSE2-based calling conventions. 2008-07-15 15:53:38 -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
42d91c123d Add missing namespace use (pending upstream for review.) 2008-07-15 13:12:14 -07:00
Andreas Gal
a81b83090e Sync with TT. 2008-07-15 13:06:05 -07:00