Commit Graph

1075 Commits

Author SHA1 Message Date
Brian Crowder
d87b65397b Add a JIT stats object in the shell 2008-09-19 22:47:58 -04:00
Boris Zbarsky
4b972f730f Adding test for bug 451605 2008-09-19 21:58:00 -04:00
Andreas Gal
da5081c842 Properly calculate tree exit/call guards (bug 453397, r=danderson). 2008-09-19 18:45:57 -07:00
Andreas Gal
b20918f930 Dynamic reconstruction of arbitrary native frames (454402, r=danderson). 2008-09-19 16:09:18 -07:00
Andreas Gal
16fbc92e91 Backed out changeset 5e4ec981e9ea 2008-09-19 12:07:46 -07:00
Andreas Gal
f06affb8ed Allow tree to grow around unbox operations when the type of the value changes (452514, r=danderson). 2008-09-18 17:40:46 -07:00
Andreas Gal
9d7afa336a Add support for fast native that return jsval and wire up push/pop (453734, r=mrbkap). 2008-09-18 16:53:09 -07:00
Andreas Gal
9908bc1345 Merge. 2008-09-18 16:08:52 -07:00
Andreas Gal
2c406fe617 Add support for JSOP_NOT on strings (451787, r=danderson). 2008-09-18 16:04:54 -07:00
David Anderson
b895f26605 Fixed trying to record arguments past the formal arg count in JSOP_ARGSUB and JSOP_CALL (bug 455757, r=gal). 2008-09-18 15:23:22 -07:00
David Anderson
40d94b8bed Fixed -0 being treated as a promotable unsigned integer (bug 455758, r=gal). 2008-09-18 14:19:17 -07:00
Andreas Gal
708f08ca9c Properly handle side exits in scripted constructors (originally mrbkap, r=brendan, 453462). 2008-09-18 14:13:37 -07:00
Andreas Gal
f074cc7a9f Cleanup and unify comparison code (455811, r=danderson). 2008-09-18 13:31:26 -07:00
Andreas Gal
dab25898eb Don't export operator new/delete except if really needed (452721, r=danderson). 2008-09-16 13:57:59 -07:00
Andreas Gal
6de13bab44 Merge. 2008-09-16 13:24:57 -07:00
Andreas Gal
8ef12c41b5 Removed bogus assert (argv is NULL if callee is NULL, assert segfaults, 452495, r=danderson). 2008-09-16 13:24:34 -07:00
David Anderson
6dcdb6aeb9 Fixed pointer arithmetic bug during trace recording on 64-bit platforms (bug 454981, r=m_kato). 2008-09-16 10:48:54 -07:00
Andreas Gal
4f38e736a7 Backed out changeset 66a76c8c7346 2008-09-16 06:51:33 -07:00
brendan
18c4ef65df Don't forget to set RHS as result in SETPROP in case we don't call either SetPropHit or SetPropMiss (455408, r=gal). 2008-09-16 06:26:57 -07:00
Andreas Gal
61aeda1e95 Detect modulo by constant that is not zero and demote to integer modulo (451788, r=brendan). 2008-09-16 06:20:54 -07:00
Andreas Gal
70d28c8730 Backed out changeset 61b9209c186f 2008-09-15 19:59:06 -07:00
brendan
663c6aeb04 test_property_cache_direct_slot forgot to insist on a direct slot for get ops (453249, r=gal). 2008-09-15 19:40:43 -07:00
Andreas Gal
2e60c6889f Merge. 2008-09-15 17:09:45 -07:00
Andreas Gal
13cc3eaad6 Backed out changeset 87fe68f51647 2008-09-15 17:09:25 -07:00
Andreas Gal
950247bb9d Fix JSOP_NOT (455380, r=brendan). 2008-09-15 17:08:15 -07:00
Andreas Gal
0764f9fccb Demote modulo operation with a constant non-zero right hand side (451788). 2008-09-15 15:59:25 -07:00
Andreas Gal
a580bcd185 Implement comparison of numbers against null (455293, r=brendan,danderson). 2008-09-15 15:30:06 -07:00
Andreas Gal
f369f7dcfb Whitespace nit-pick (453261, r=brendan). 2008-09-15 15:26:16 -07:00
Andreas Gal
cdb4ed8fae Merge. 2008-09-15 15:01:44 -07:00
Andreas Gal
95068bdc26 Properly handle floating point array indexes (453261, r=brendan). 2008-09-15 15:00:40 -07:00
Vladimir Vukicevic
47e9d3a21b b=454530; misc trace abort fixes (trace String.concat); r=brendan 2008-09-15 17:30:05 -04:00
Andreas Gal
be1b44bf0e Trace slow array get/set of indexed props (453261, r=brendan). 2008-09-15 00:54:28 -07:00
Brendan Eich
a834957775 TraceRecorder::record_SetPropMiss mis-layered on top of record_SetPropHit (454689, r=mrbkap). 2008-09-11 15:53:00 -07:00
Brendan Eich
e0626f7799 Bug 453563 - TM: assertion when running unit tests with the JIT on (r=danderson). 2008-09-11 00:07:50 -07:00
Brendan Eich
ef47fcf4f8 Bug 454744 - TM: "Assertion failure: PCVAL_IS_SPROP(entry->vword)" with getter. 2008-09-11 00:00:37 -07:00
Benjamin Smedberg
b7c5804c10 Merge backout of the old patch for bug 453388 - we can statically allocate Oracle again, now that we're linking using the C++ linker magic, r=crowder 2008-09-10 15:38:28 -04:00
Benjamin Smedberg
bfeb170706 Merge backouts of bug 453388 - using g++ to link libjs.so means we can have static classes 2008-09-10 15:27:17 -04:00
Benjamin Smedberg
52e1ae86c7 Backed out changeset fc4a8cc07c9f - bustage fix from the first patch for bug 453388 which is also being backed out 2008-09-10 15:21:30 -04:00
Benjamin Smedberg
e780e5e3ea Backed out changeset e2614011f194 - Bug 453388 - the better solution is to allow static objects and link libjs.so with g++ so that _init and _fini run static constructors/destructors correctly backout r=crowder 2008-09-10 15:20:01 -04:00
Blake Kaplan
88856d9ef1 Merge tracemonkey -> mozilla-central 2008-09-09 23:38:21 -07:00
Brendan Eich
ce15bc7cd3 Bug 454039 - TM: don't abort TraceRecorder::record_JSOP_SETPROP on cache miss (r=mrbkap). 2008-09-09 22:22:52 -07:00
Brendan Eich
7d5c49516c Back out patch for bug 454039. 2008-09-09 16:55:07 -07:00
Brendan Eich
c7b40d9f99 Bug 454039 - TM: don't abort TraceRecorder::record_JSOP_SETPROP on cache miss (r=mrbkap). 2008-09-09 16:05:04 -07:00
Brendan Eich
ad49bd309d Bug 453918 - TM: eliminate silly map_is_native guards on globalObj (r=shaver). 2008-09-09 16:01:01 -07:00
Brendan Eich
94b10f6170 Avoid needless prototype-shape purges (454035, r=igor). 2008-09-09 11:24:03 -07:00
Brendan Eich
40cf4096c7 Avoid needless prototype-shape purges (454035, r=igor). 2008-09-09 09:57:10 -07:00
Andreas Gal
3c8d2430dd Merge. 2008-09-09 17:21:32 +02:00
Andreas Gal
85b1749c8c Capture the typemap of the outgoing stack frame during a function call and store a pointer to it on the native call stack. 2008-09-09 15:16:21 +02:00
Andreas Gal
6a76d26107 Extract the snapshot code for a single slot into determineSlotType() und use that method in snapshot(). 2008-09-09 15:06:23 +02:00
Blake Kaplan
4203e79309 Trace Math.max. r=brendan 2008-09-08 20:06:58 -07:00
Brendan Eich
5b35846387 Fix bug 454266 - js_FillPropertyCache uses the wrong scope's shape sometimes (r=mrbkap). 2008-09-08 15:52:35 -07:00
Brendan Eich
cd3284e96a Fix bug 454266 - js_FillPropertyCache uses the wrong scope's shape sometimes (r=mrbkap). 2008-09-08 15:51:47 -07:00
Andreas Gal
32f22d2e1e Don't try to record recursion until we support it properly (454277). 2008-09-08 22:49:17 +02:00
Boris Zbarsky
c57647d6f4 Bug 451605. Make sure to properly restore the thisp for the innermost frame when taking a nested side exit with a callDepth > 0. r=brendan,gal 2008-09-08 08:55:20 -04:00
Igor Bukanov
27d83904e5 bug 453133 - merging JSOP_DEFUN and JSOP_CLOSURE. r=brendan 2008-09-08 13:58:17 +02:00
Igor Bukanov
1694ed5ded bug 454163 - fixing build problem with 64-bit debug builds. 2008-09-08 12:37:41 +02:00
Brendan Eich
082cb07c53 Make return at callDepth 0 terminate the loop, like break (454027, r=gal). 2008-09-08 00:31:18 -07:00
Brendan Eich
e697e5113d Bug 454044 - TM: JSOP_NOT needs isPromoteInt/::demote help. 2008-09-07 01:40:24 -07:00
David Anderson
5018287de0 Trace through parseInt(double), bug 454037 r=gal+brendan. 2008-09-07 02:41:10 -05:00
Brendan Eich
ba17412f5e Easy fixes to avoid aborting on V8/raytrace.js: MAX_CALLDEPTH doubled to 10; JSOP_NOT handles int and undefined. 2008-09-05 18:57:32 -07:00
Brendan Eich
623433f549 Merge. 2008-09-05 18:34:16 -07:00
Brendan Eich
fc936fa1da Checkpoint arguments tour-de-force (453730). 2008-09-05 18:29:08 -07:00
Ginn Chen
2763e5d63e Make TraceMonkey build on Solaris x86 with Sun Studio 12 (bug 452588, r=danderson). 2008-09-05 16:56:03 -07:00
David Anderson
9937dc1262 Trace through Math.log as a known native (bug 453868, r=brendan). 2008-09-05 14:25:01 -07:00
David Anderson
ba87213e86 Abort tracing if a callee encounters a primitive |this| and doesn't support it (bug 453701, r=brendan). 2008-09-05 13:55:03 -07:00
Blake Kaplan
b4d3674f58 Bug 453747 - Replace any holes on the stack with undefined. r=gal 2008-09-04 22:14:27 -07:00
Brendan Eich
ce684a0a6e Bug 453747 - Avoid overuse of the fun_getProperty class getter to optimize getting and setting random properties on functions. r=mrbkap 2008-09-04 21:56:37 -07:00
David Anderson
3e31bc7fb2 Another fix for the patch to bug 452884 -- when ignoring switch guards, don't update the tracker stack. 2008-09-04 20:11:58 -07:00
David Anderson
8c610797f3 Merge. 2008-09-04 19:43:58 -07:00
David Anderson
05991c905d Better fix for bug 452884 (changeset badf4c84665f regressed) - don't emit guards rather than bailing out of comparisons (r=gal). 2008-09-04 19:43:07 -07:00
Brendan Eich
ae2a22c019 Bug 453747 - Avoid overuse of the fun_getProperty class getter to optimize getting and setting random properties on functions. r=mrbkap 2008-09-04 19:30:58 -07:00
Brendan Eich
b35babfe1d House style bracing for multiline then clause. 2008-09-04 18:53:31 -07:00
David Anderson
09123ebd63 Don't guard on constant decisions, which will always have the same path (bug 452884, r=gal). 2008-09-04 14:44:59 -07:00
David Anderson
ede63892f9 Disabled building AMD64 JIT in shell until regressions are tracked down. Fixed some compiling errors while I'm poking around here (bug 453674). 2008-09-04 10:58:35 -07:00
David Anderson
afe91e2757 Merge. 2008-09-03 23:28:27 -07:00
David Anderson
b791826dc5 Fixed JSOP_NEG with 0 being tracked as a promotable int, and added an equals-zero guard for the same opcode (bug 453049, r=gal). 2008-09-03 23:27:58 -07:00
Brendan Eich
9657023ef6 Missing guard for CallGetter builtin (453580, r=gal). 2008-09-03 22:32:13 -07:00
Blake Kaplan
d9be63b689 Handle an interpreted constructor returning an object. r=brendan 2008-09-03 18:21:15 -07:00
Andreas Gal
1d44de3cb6 Merge. 2008-09-03 01:22:07 -07:00
Andreas Gal
483b7fd5a1 Removed a bogus assert. Inner loops can exit on a goto in case we hit a break (453051). 2008-09-03 01:21:21 -07:00
Brendan Eich
4fa7c5195d Put the trace-recording/executing flag in the trace monitor to handle many contexts per thread (451666, r=gal). 2008-09-03 00:38:24 -07:00
Andreas Gal
c466258c18 Limit tree growth to 16 traces per tree to avoid code explosion due to tail duplication (452869, r=danderson). 2008-09-02 23:52:11 -07:00
Brendan Eich
3cd36a3b5f Fix JS_THREADSAFE build, pick extern nit. 2008-09-02 23:00:23 -07:00
Vladimir Vukicevic
dfd7f72c0a Fix up some ifdefs and debug printfs 2008-09-02 22:42:25 -07:00
Vladimir Vukicevic
a4ec50d569 Add VFP for floating point ops to nanojit ARM backend. 2008-09-02 22:29:23 -07:00
Vladimir Vukicevic
420e72ed85 b=449526, TM: fix up ARM code generation / softfloat 2008-09-02 22:29:23 -07:00
Brendan Eich
e3916b316d Teach js_IsLoopExit about JSOP_AND, JSOP_OR, etc. and separate extended jump cases so they can get the extended offsets. 2008-09-02 22:29:06 -07:00
Blake Kaplan
3d517dff43 Remove outdated comment. r=gal 2008-09-02 22:18:57 -07:00
Andreas Gal
f91071f139 Allocate the oracle dynamically instead of making it a global object to avoid atexit C compatibility issues (453388, r=danderson). 2008-09-02 21:56:22 -07:00
Blake Kaplan
8f80eec070 Don't flush anything if we're not even enabled. r=gal 2008-09-02 14:02:13 -07:00
Ginn Chen
76f8dc0daf On x86 compilers without fastcall, simulate it when invoking traces and un-simulate it when invoking builtins (bug 452390, r=dvander). 2008-09-02 11:43:55 -07:00
Andreas Gal
1632042ed8 Merge. 2008-09-01 18:37:27 -07:00
Andreas Gal
4a36a6b709 Backed out changeset 25f856429db3. Wrong fix. Looks like jstracer.h is not included. We in fact can call methods of TraceRecorder directly. Sigh. I wish we had a try server. 2008-09-01 18:37:04 -07:00
Andreas Gal
d85543063d Merge. 2008-09-01 18:33:05 -07:00
Andreas Gal
fe70cfea9b Introduce js_DeepAbort to be used from jsinterp.cpp, instead of trying to call TraceRecorder->deepAbort directly (453235). 2008-09-01 18:32:41 -07:00
Brendan Eich
b3042b928d Holey single-element dense array has null dslots, requires nulld defense (453173). 2008-09-01 13:59:30 -07:00
Brendan Eich
cda5a77a1b Fast followup fix for unintended change to 'f' prefix handling in TraceRecorder::record_JSOP_NEW (452878). 2008-09-01 01:44:26 -07:00
Brendan Eich
5a8cb06838 Kind of an Array initialiser tour-de-force for bug 452878:
1. Split FastNewArray from FastNewObject built-in for greater speed/specialization and further splitting into Array_1str, etc.
2. Add Array_1str, Array_2obj, and Array_3num builtins for benchmarked new Array(...) constructions.
3. Export ARRAY_SET_DENSE_LENGTH and ARRAY_GROWBY via jsarray.h to jstracer.cpp.
4. Tweaked SetArrayElement to make common/best case code be the predicted/prefetched path.
5. js_MakeArraySlow now preserves the pre-slow length in JSSLOT_ARRAY_COUTN as a jsval-tagged int if possible -- this will help the tracer avoid aborting on dense arrays that turned slow but not sparse by addition of a named property.
6. Export js_fun_apply and js_Object from their respective .cpp files, in these cases just to jstracer.cpp via local prototypes (no .h files involved).
7. More INS_CONSTPTR and INS_CONST macrology for better names in trace debug spew.
8. Fix TraceRecorder::test_property_cache to avoid aborting on JSOP_SETNAME that creates a new global, by setting it to undefined so it can be lazily imported. This helps 3d-raytrace.js, which has an unintended global loop control variable in a function.
9. JSTraceableNative loses its premature-deadwood tclasp member (my bad).
10. TraceRecorder::record_JSOP_NEW() handles 'new Object' now along with the 'new Array' variations. I also cut down the copy-paste code from JSOP_CALL's record method to mostly what is needed now.
11. Add KNOWN_NATIVE_DECL macro for concise prototype of library-private js_* native functions, and alphabetized the lists (too long for any other order to be winning).
12. Big honking special case for foo.apply(obj, [str]), which we can generalize as needed. Helps string-tagcloud.js. What's cool is how tracing allows us to rewrite this to foo(str) with this set to obj, eliminating the Function.prototype.apply. This requires some rewriting in JSOP_ENDINIT's record method.
2008-09-01 01:24:58 -07:00
Jesse Ruderman
1b5148d940 Bug 452905 - Make js_RecordTree printfs only appear with TRACEMONKEY=verbose. r=gal 2008-08-30 02:21:00 -07:00
Brendan Eich
c7604aac4c - Support JSOP_CONDSWITCH's JSOP_CASE and extended-jump-offset JSOP_CASEX variants properly.
- Fix sleep-deprived constant conditions due to failure to test flags & CMP_TRY_BRANCH_AFTER_COND!
- Use new TraceRecorder::fuseIf that Andreas added in a few more places where the previous try-branch-after-cond logic was open-coded.
2008-08-30 00:01:59 -07:00
Blake Kaplan
2782b3de85 Fix gmail crash by not tracing switches. r=brendan 2008-08-29 19:01:00 -07:00
Blake Kaplan
219161a0aa Abort (deeply) if we re-enter js_Interpret in the middle of a trace. r=brendan 2008-08-29 18:59:21 -07:00
Andreas Gal
ea15fc19ef Fixed an signed/unsigned comparison warning in an assert in jstracer.cpp. 2008-08-29 17:54:39 -07:00
Andreas Gal
33c4a8e742 Merge. 2008-08-29 17:35:34 -07:00
Andreas Gal
113ad8babe Add builtins for toLowerCase, toUpperCase and replace(str,str) (452885, r=mrbkap). 2008-08-29 17:35:00 -07:00
Brendan Eich
45ea54d2d1 Don't let GC run when recording. 2008-08-29 16:04:54 -07:00
Blake Kaplan
48fb3e7f94 Bug 452875 - Ensure we intern the id for JSOP_IN. r=brendan 2008-08-29 15:59:09 -07:00
David Anderson
7515a0583e Merge. 2008-08-29 15:38:05 -07:00
David Anderson
f720beb914 Fixed double-as-integer check not handling negative zero (bug 452170, r=gal). 2008-08-29 15:37:37 -07:00
Andreas Gal
f29178e950 Track number of breaks we generate loop exits for. 2008-08-29 15:29:55 -07:00
Andreas Gal
1e41ca88af Long-form conditional branches (IFEQX, IFNEX) are never fused, so don't check for them in fuseIf. 2008-08-29 15:20:36 -07:00
Andreas Gal
57a8fae3d1 Merge. 2008-08-29 15:17:20 -07:00
Andreas Gal
9e7246a2b9 Track locations of control-flow merges in cfgMerges during recording (452869). 2008-08-29 15:12:17 -07:00
David Anderson
a2fdc866ff Fixed assumptions that nanojit's insCall() would not clobber the input argument array (bug 452853, r=gal). 2008-08-29 14:22:21 -07:00
David Anderson
f10bd19c8e Abort recording on invalid string indexes for JSOP_GETELEM (bug 452713, r=brendan). 2008-08-29 13:05:41 -07:00
Brendan Eich
f92de94117 Fix bogus JOF_VARPROP test; fix uninitialized id in JSOP_IN recorder, should have caught it when I reviewed danderson's patch. 2008-08-29 00:58:10 -07:00
Brendan Eich
655888f31e Consolidate equal and cmp code harder, trace switch ops, use INS_CONST more (bug to be filed -- bugzilla down atm). 2008-08-28 23:50:48 -07:00
Andreas Gal
1115d0162b Unroll loops we were not able to call once, but only if we don't have a tree available for that loop header. 2008-08-28 23:19:23 -07:00
Andreas Gal
535bdef3ee Merge. 2008-08-28 22:34:14 -07:00
Andreas Gal
c263b7a218 Merge. 2008-08-28 22:33:45 -07:00
David Anderson
951c95658a Fixed trying to record JSOP_IN with some unusuable left-hand values (bug 452724, r=brendan). 2008-08-28 22:33:32 -07:00
Andreas Gal
4fb4d1fdc5 Monitor downward branches only during recording (452709). 2008-08-28 22:33:22 -07:00
Brendan Eich
1f07d79c75 Abort trace if forInLoop values are not stable; currently, not strings (bug 452703). 2008-08-28 21:41:15 -07:00
Brendan Eich
25a591f870 Fixed bogus assertion in test_property_cache (bug 452693, r=dvander). 2008-08-28 21:15:39 -07:00
Andreas Gal
f10a08c384 Cleanup detection of gotos that were emitted as a result of a BREAK statement. 2008-08-28 17:46:25 -07:00
Andreas Gal
65bc53f864 Merge. 2008-08-28 17:01:22 -07:00
Andreas Gal
c0e0852952 Notify the monitor of all branches, not just backwards branches. 2008-08-28 17:00:52 -07:00
Blake Kaplan
977123733e Bug 452338 - Abort on the weird case where we find a global name on the prototype of the scope chain. r=brendan 2008-08-28 16:37:03 -07:00
Andreas Gal
c274daed5c Merge. 2008-08-28 14:51:16 -07:00
David Anderson
1b50da7117 Abort recording on JSOP_INCPROP with an invalid slot (bug 452336, r=brendan). 2008-08-28 14:43:44 -07:00
Andreas Gal
453ea3339f If the inner tree cannot be adjusted to match the call site of the outer tree because it uses an int where the outer tree uses a double, trash the inner tree, not the outer one. In CallTree, return the innermost guard we return from, not the outermost one. Jump over at most 1 loop edge that doesn't go back to our own header, not an arbitrary amount. 2008-08-28 14:24:58 -07:00
David Anderson
48fe80af99 Merge. 2008-08-28 13:15:34 -07:00
David Anderson
eb051d8c73 Better fix for bug 451666 - only track new rval for primitives (r=brendan). 2008-08-28 13:14:59 -07:00
Blake Kaplan
1006bbf99c Bug 452333 - Don't push tagged jsvals on the stack. r=brendan 2008-08-28 12:40:48 -07:00
David Anderson
d7c4af1e0c Merge. 2008-08-28 11:56:45 -07:00
David Anderson
d7b5791be9 Track new rval from JSOP_RETURN when constructing inline frames (same as JSOP_STOP). 2008-08-28 11:55:58 -07:00
Blake Kaplan
2bcc0a39b5 Bug 452573 - The interpreter's JSOP_VOID doesn't push anything, so we shouldn't expect it to. r=brendan 2008-08-28 11:55:27 -07:00
Peter Weilbacher
046dd17991 [OS/2] Bug 452630: Build break in jstracer.cpp (r=gal) 2008-08-28 18:28:52 +03:00
Jesse Ruderman
df0d2c793b Remove extra space in tracing statistics message (bug 452571). r=gal 2008-08-28 00:16:50 -07:00
Brendan Eich
5d132dba83 Record JSOP_IN (452563, r=gal). 2008-08-27 23:00:43 -07:00
Andreas Gal
2316d281a0 Keep unrolling inner loops as long we are not hitting the same inner loop edge twice in a row (452362). 2008-08-27 17:48:15 -07:00
Andreas Gal
4b9cda096c Merge. 2008-08-27 17:26:36 -07:00
Andreas Gal
cff18f06cd Fix trashing of inner trees. Keep track of trees that call to a tree and flush them as well since they directly embed the code address. Since flushing an inner tree might invalidate the tree we are currently compiling, trees are now trashed in the destructor of TraceRecorder. 2008-08-27 17:25:56 -07:00
David Anderson
ccc26331ca Removed INS_CONSTPTR use with JSVAL_TAG to discourage future 64-bit problems. Fixed 32-bit build. 2008-08-27 16:32:11 -07:00
David Anderson
98306ccb74 Merge. 2008-08-27 16:09:17 -07:00
David Anderson
d0d64bbeff Added LIR_qior/pior. Fixed more AMD64 page jumping bugs. Fixed some other AMD64 usage bugs in jstracer. 2008-08-27 16:08:59 -07:00
Andreas Gal
e8fcb3bd37 Merge. 2008-08-27 14:48:59 -07:00
Andreas Gal
3fb237f38c Loops with a single iteration start tracing, but never complete since we immediately walk past the loop edge after the first iteration. At least try to complete the loop around it by walking past such thin inner loops when compiling the outer loop (452362). 2008-08-27 14:46:57 -07:00
Brendan Eich
4842b435c5 Oops, not enough copying... 2008-08-27 13:54:05 -07:00
Brendan Eich
510ec8bdce Fix a bug Jesse reported: insufficient copy/paste from record_JSOP_CALL to record_JSOP_NEW. 2008-08-27 13:52:46 -07:00
Brendan Eich
9cb246a8fc Fix another broken assert (452372). 2008-08-27 01:10:44 -07:00
Andreas Gal
7df899a9f5 Merge. 2008-08-26 21:46:21 -07:00
Andreas Gal
418b15eadd Flag a side exit as loop exit only if the underlying loop condition actually targets the current loop header, otherwise treat it as a branch exit. This is required for inner loops where we unroll the first iteration but the loop condition immediately fails. If we report such exits as loop exits, no branch gets ever attached to them and we keep side-exiting over and over. 2008-08-26 21:43:59 -07:00
Brendan Eich
ae9605be38 Correct (but sadly a bit slower) property cache guarding (452140, r=shaver). 2008-08-26 21:26:10 -07:00
Brendan Eich
e326b78b55 Added knownNative for num_toString (bug 452340, r=dvander). 2008-08-26 20:00:11 -07:00
Andreas Gal
40796f4154 For global code assume that no slots are below the current frame. 2008-08-26 13:25:40 -07:00
Andreas Gal
795f7ae426 Merge. 2008-08-26 01:01:24 -07:00
Andreas Gal
eb0c261390 When extending an outer tree from its nesting guard, the guard we actually exited on determines the typemap for the current frame and all inlined frames, whereas the nesting guard is consulted for all type information frames below the current frame. 2008-08-26 01:00:53 -07:00
Brendan Eich
a7cdb3ddb2 Fix warning. 2008-08-25 23:22:20 -07:00
Andreas Gal
4bb68b852c Rename lr->anchor in AttemptToExtendTree() 2008-08-25 23:19:00 -07:00
Andreas Gal
24b663fd61 Determine the tree we have to grow from the side exit we attach to in AttemptToExtendTree() instead of passing the parameter in. 2008-08-25 23:17:38 -07:00
Brendan Eich
43b25b3c09 Rename gcDontBlock to runningJittedCode, and assert it's false on entry to js_Interpret (for 451657, but not the fix, just prolog). 2008-08-25 23:08:21 -07:00
Andreas Gal
e86ad8730d Merge. 2008-08-25 22:11:23 -07:00
Andreas Gal
d00742c962 Add an assert checking that celldepth is zero upon loop exit side exits and better verbose diagnostic for trace exits. 2008-08-25 22:11:04 -07:00
Andreas Gal
c86c7d09fb Generate an always taken LOOP_EXIT guard when an inner loop encounters a break statement. When returning from such an inner tree, make sure the recorder resumes at the target address of the goto the break was emitted as, otherwise the outer tree confuses the location with a break in its own loop. Disabled outerlining (this patch subsumes it, but we might enable it later since it might handle some cases more efficiently, currently off for debugging through). fasta currently asserts, and fannkuch hits a perf regression. These are probably bugs this change exposed. 2008-08-25 17:24:49 -07:00
Blake Kaplan
48d275806e Bug 451785 - Trace == and != involving booleans. r=gal 2008-08-25 16:58:18 -07:00
Blake Kaplan
298caaa80f Bug 451782 - Trace Math.ceil. r=brendan 2008-08-25 16:54:02 -07:00
David Anderson
e4ef2c3451 Merge. 2008-08-25 16:06:17 -07:00
Brendan Eich
b385e456d9 Fixed cases where argc varied between recording time and execution time (bug 451727). 2008-08-25 16:04:10 -07:00
Andreas Gal
fc5667ef13 Split closeLoop() and compile() and add endLoop(), which omits an always-exit guard (will be used for break statements.) 2008-08-25 15:17:46 -07:00
Brendan Eich
eb8bbd11d2 Cope with sub-optimal JSOP_FORNAME instead of JSOP_FORVAR inside a with, or similar (eval-created locals; 451806). 2008-08-24 08:18:17 -07:00
Andreas Gal
e944751f2e Merge. 2008-08-23 15:13:55 -07:00
Andreas Gal
71b12b53fe Enable outlining. If a loop doesn't connect back to its own header (i.e. break inside the loop), see if the outer loop path can be attached to the inner loop (outerlining). Added test case (failure mode is high number of activated traces in trace-test.js). This test exposes a regression in access-fannkuch. Committing so we can diagnose that separately. 2008-08-23 15:11:38 -07:00
David Anderson
04ab3326c8 Merge. 2008-08-22 17:36:37 -07:00
David Anderson
e88386ec38 Fixed bogus assertion in debug mode. 2008-08-22 17:32:45 -07:00
Andreas Gal
f5462e1c0a Merge. 2008-08-22 17:32:01 -07:00
Andreas Gal
454b252c63 If the outer loop has a value in a float register but the inner tree expects an int, tell the oracle that we want doubles in that slot in the inner tree and trash the inner tree so it gets re-compiled with a matching layout (451673). 2008-08-22 17:31:23 -07:00
Andreas Gal
2fb04231fe Allocate nanojit code cache incrementally (bug 443111). 2008-08-22 16:37:37 -07:00
David Anderson
36ea645fbe Bug 451743 - On x86 processors, only use SSE2 if the processor supports it, otherwise default back to x87 FPU (r=gal, sr=mrbkap) 2008-08-22 12:21:27 -07:00
Andreas Gal
80088cd777 Fix warning about signed/unsigned comparison. 2008-08-21 11:40:56 -07:00
Andreas Gal
ee5f8e441f Merge. 2008-08-21 05:21:37 -07:00
Andreas Gal
8f6bbaaa5f Abort recording when an error occurs. 2008-08-21 05:21:01 -07:00
Brendan Eich
fd148818e1 Add split built-in, also sort knownNatives for my own sanity (should sort builtins.tbl and jsbuiltins.cpp by function while at it, but too tired). 2008-08-21 04:13:07 -07:00
Brendan Eich
147018b013 Merge, plus restore TraceRecorder::activeCallOrGlobalSlot. 2008-08-21 03:51:37 -07:00
Brendan Eich
9cd8e5a539 Upvar, v0.1 (limited to looking up from eval in a function, to the function's args and vars). 2008-08-21 03:47:33 -07:00
shaver@mozilla.org
35915d94ea disable tracing with active call object pending perf fix 2008-08-21 03:19:17 -07:00
Andreas Gal
d9acfb10f0 Remove FastEval, broken by design (r=brendan). 2008-08-21 03:13:31 -07:00
Brendan Eich
324b9c7f4e Remove lambda-replace built-in, it's not safe to record into a nested js_Interpret. 2008-08-21 01:39:16 -07:00
Andreas Gal
2e767b124c Convert undefined to NULL on tree entry if the tree wants an object type. 2008-08-21 01:13:07 -07:00
shaver@mozilla.org
ed7fab1440 trace |new Array|, via the magic of copy and paste 2008-08-21 00:50:20 -07:00
Brendan Eich
321ae383ba Merge. 2008-08-21 00:47:51 -07:00
Andreas Gal
fcd8670fec If we expect a concrete value but see an undefined come into the trace, convert undefined to the concerete value. 2008-08-21 00:43:45 -07:00
Brendan Eich
9b56ca4984 Tidy up globalShape mismatch reporting. 2008-08-21 00:19:04 -07:00
Andreas Gal
e26e3234f4 Merge. 2008-08-20 23:40:24 -07:00
Andreas Gal
12fcdd141f Remove bogus fadd +1 check at the end of the loop. We have long switched over to starting slots as int and hence n++ will be emitted as integer add with i2f, so checking for i2f only is sufficient. 2008-08-20 23:39:57 -07:00
Andreas Gal
ddf445130e Increase HOTEXIT to 1 (from 0). 2008-08-20 23:35:00 -07:00
Andreas Gal
1261e82b42 Eliminate redundant BoxDouble(UnboxDouble) chains. 2008-08-20 23:19:48 -07:00
shaver@mozilla.org
6870d297ef say what we're returning from from EnterFrame 2008-08-20 23:12:28 -07:00
Brendan Eich
9e4119701e Merge. 2008-08-20 22:44:16 -07:00
Brendan Eich
e9b635b38a 1. Add activeCallOrGlobalSlot, used by JSOP_NAME, JSOP_CALLNAME, etc. recorders to cope with Call objects on the scope chain, if they represent still-active frames covered by callDepth.
2. Add builtin for eval, to be optimized further, to handle very short eval'ed programs as found in popular benchmarks.
3. Add common scopeChain TraceRecorder helper, to generate the LIR to load cx->fp->scopeChain.
4. Add ABORT_TRACE to LeaveFrame for clarity.
2008-08-20 22:40:39 -07:00