Commit Graph

3709 Commits

Author SHA1 Message Date
Brendan Eich
d518e5c6a7 Missing guard for CallGetter builtin (453580, r=gal). 2008-09-03 22:42:41 -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
Jason Orendorff
e3c32c3566 Bug 442086 - XPConnect creates doubles without checking for the INT_FITS_IN_JSVAL case (r=jst,sr=brendan) 2008-09-03 15:38:45 -05:00
Jason Orendorff
4dda6aa8e5 Bug 453383 - Confusing comment, bogus indentation in jsobj.cpp (r=mrbkap) 2008-09-03 15:30:13 -05:00
Jason Orendorff
445f7292b2 Bug 453105 - Error: setting a property that has only a getter on cars.com (r+sr=bzbarsky) 2008-09-03 15:28:13 -05:00
Taras Glek
8e0c84faf7 bug 453476: Some files didn't get compiled with -fno-exceptions. r=shaver 2008-09-03 10:53:36 -07:00
Benjamin Smedberg
89e10926d5 Bug 453341 - Allow stack checking to be suppressed per-function, r=dmandelin sr=jst 2008-09-03 13:00:12 -04: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
Andreas Gal
78b5b7fc05 Merge. 2008-09-02 23:11:51 -07:00
Andreas Gal
59b5581857 Add V8 benchmark suite. 2008-09-02 23:11:15 -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
628b27d198 Indentation sanity fixes; no code changes. 2008-09-02 22:29:23 -07:00
Vladimir Vukicevic
2a520bab9f Split NativeThumb.cpp into NativeThumb.cpp and NativeARM.cpp; no code changes. 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
Taras Glek
b9b82a2bc3 bug 443286: avoid hidden return in CHECK_AND_SET_JUMP_OFFSET. r=igor 2008-09-02 20:50:19 -07:00
Brendan Eich
48926ba363 Fix bool FASTCALL vs. Nanojit calling convention bug, also some non-bool whoppers caught in the process (453361, r=mrbkap). 2008-09-02 15:37:22 -07:00
Brendan Eich
743793bc50 Fix warning pulled over from m-c (mrbkap will track down). 2008-09-02 15:30:42 -07:00
David Anderson
be89898254 Merge with mozilla-central. 2008-09-02 14:17:19 -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
Taras Glek
c8962c44c2 bug 441362: Avoid an invisible return. r=igor 2008-09-02 13:32:27 -07:00
David Anderson
0af468fa80 Fixed accidental debugging change I pushed with changeset de2d26b3c902. 2008-09-02 12:36:23 -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
David Anderson
ceb2e8139c Build fixes for MSVC 7.1 and mingw (bug 451881, patch from neil@parkwaycc.co.uk). 2008-09-02 10:28:14 -07:00
David Anderson
b6b115b496 Fix for building on FreeBSD (bug 452315, patch from Jeremy Lea). 2008-09-02 10:21:41 -07:00
David Anderson
1be49b5c2e Use mmap() instead of valloc() in nanojit, abort on mprotect() failure (bug 451946, patch+r from Asko Tontti). 2008-09-02 10:15:26 -07:00
Andreas Gal
1d525db0e4 New attempt at fixing 453235. If building without JIT (like PPC/MacOSX), don't include the deep abort calls in jsinterp.cpp 2008-09-01 18:40:45 -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
Robert Sayre
7cca7713be Add tests containing switch statements 2008-08-30 19:35:38 -04:00
Robert Sayre
52a7fb0b98 Add test for more bitwise ops 2008-08-30 19:20:54 -04: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
ee86ee3cf1 Bug 452329 - Fix a bad assumption. r=brendan 2008-08-29 16:03:18 -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
Robert Sayre
f35adba372 Add tests covering division. 2008-08-29 13:04:08 -04:00
Robert Sayre
5d1f73ba74 Add tests for continue statement. 2008-08-29 11:01:56 -04: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
18d5749230 Fix upvar decompilation for eval-from-fun case (452441, r=igor). 2008-08-29 00:24:11 -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
Jesse Ruderman
5663d9166a Turn NANO_DIE macro into NanoAssertFail function so that it shows up in stack traces. Having it appear in stack traces makes it clear the exit was due to an assertion failure rather than a real crash. Followup to bug 452674. 2008-08-28 19:07:49 -07:00
Andreas Gal
aaf46f467e Merge. 2008-08-28 17:47:11 -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
David Anderson
6ab07e371a Merge. 2008-08-28 17:28:36 -07:00
David Anderson
d5e48e84d7 Added descriptive messages to always-taken assertions in Nativei386.cpp. 2008-08-28 17:27:29 -07:00
Jesse Ruderman
db3a854298 Fix NanoAssertMsgf in non-debug builds. Regression from my patch in bug 452674. 2008-08-28 17:15:51 -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
Jesse Ruderman
67955c4c42 Add a message to a NanoAssert(0) to make it possible to match against. r=gal 2008-08-28 17:00:52 -07:00
Jesse Ruderman
12aa1d345a Bug 452674: change NanoAssert* macros to make it easier to check for nanojit assertions in automated testing. r=danderson. 2008-08-28 16:57:49 -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
Igor Bukanov
228d70e09b backing out bug 446386 due to unit test failures 2008-09-02 09:27:10 +02:00
Simon Bünzli
0b40c8a49f Bug 450633 - "script stack space quota is exhausted" exception in JSON.jsm when calling SessionStore API for sessions with a large amount of data. r=sayrer, sr=brendan 2008-09-02 08:36:15 +02:00
Igor Bukanov
9022efe160 bug 449494 - uniform handling of bytecodes with variable stack uses. r=mrbkap,brendan 2008-09-02 08:25:15 +02:00
Igor Bukanov
4509b7601e bug 446386 - removal of the compiler pseud-frames. r=brendan,mrbkap 2008-09-02 08:10:26 +02:00
Leon Sha
621a72d75c Bug 429105 [Solaris] Failed to build mozilla-central on solaris in js module. brendan: review+ 2008-09-02 10:03:18 +08:00
Boris Zbarsky
33c006bc1b Fix orange caused by bug 407216 2008-09-01 13:40:16 -04:00
Igor Bukanov
8cc1d392ca bug 452786 - optimizing JS date access. r=mrbkap 2008-09-01 10:30:41 +02:00
Jason Orendorff
d8e1964581 Fix for build breakage on Windows due to bad dom_quickstubs.depends file.
The bad file contains a backslash, which causes GNU make to choke.
This fix causes the file to be generated correctly, but the file on
the Windows build machines is still there and still contains backslashes;
a clobber should fix this.

The Try Server didn't catch this because every Try build is a clobber.
2008-08-31 09:51:52 -05: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
Jesse Ruderman
2530465041 Bug 452570 - NanoAssert doesn't end the message with a line break 2008-08-28 00:15:34 -07:00
Brendan Eich
5d132dba83 Record JSOP_IN (452563, r=gal). 2008-08-27 23:00:43 -07:00
David Anderson
d3cb344df7 Fixed asserting on valid LIR in AMD64 LIR_qcmov (bug 452545, patch from Makoto Kato). 2008-08-27 19:49:26 -07:00
Blake Kaplan
b9bf10f53c Merge again 2008-08-27 17:48:56 -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
f166d24a5c Merge. 2008-08-27 16:54:17 -07:00
David Anderson
bc995a482b Fixed AMD64 loop branch patching for >32-bit offstes. 2008-08-27 16:52:28 -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
Blake Kaplan
6a60ec5ab8 Re-merge to pick up changeset 6464982e3c7f 2008-08-27 16:27:49 -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
Ben Turner
e13eae15fb Bug 451732 - Always do LAST_FRAME_CHECKS, even if the compile failed (since that sets a pending exception). r=mrbkap 2008-08-27 15:45:13 -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
fc0f763f3c Fix upvar decompilation for eval-from-fun case (451884, r=mrbkap). 2008-08-27 14:35:41 -07:00
Blake Kaplan
ccbbafd88d Merge mozilla-central -> tracemonkey 2008-08-27 14:28:27 -07:00
Blake Kaplan
eba28651d8 bug 418051 - Don't allow shorthand object initializer through destructuring assignment. r=brendan 2008-08-27 13:56:43 -07:00
Blake Kaplan
0a3ec02bb5 Bug 452295 - Deal with embeddings that don't use principals. r=brendan 2008-08-27 13:56:34 -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
Blake Kaplan
f27c2b3c5f Bug 452346 - Fix latent bug in rv_alloc. r=crowder 2008-08-27 11:43:35 -07:00
Bob Clary
f0a3cfed35 JavaScript Tests - match a[1] ~ a['1'], bug 452369 2008-08-27 10:25:40 -07:00
Brian Crowder
4670191ed2 Merge initial patches for bug 97954: autoconf build environment for spidermonkey 2008-08-27 10:16:56 -07:00
Brendan Eich
4de45a4139 Fix upvar decompilation for eval-from-fun case. 2008-08-27 02:21:04 -07:00
Brendan Eich
fb2a1431d7 Fix another broken assert (452372). 2008-08-27 01:11:06 -07:00
Brendan Eich
9cb246a8fc Fix another broken assert (452372). 2008-08-27 01:10:44 -07:00
Brendan Eich
df16afe946 Correct (but sadly a bit slower) property cache guarding (452140, r=shaver). 2008-08-27 00:44:37 -07:00
Brendan Eich
cbb33d1a83 Remove bogus assertion (452178). 2008-08-27 00:41:57 -07:00
Brendan Eich
6c59f88abd Merge. 2008-08-27 00:36:57 -07:00
Brendan Eich
722ff40a11 Remove bogus assertion (452178). 2008-08-27 00:34:53 -07:00
David Anderson
d7c7f1645b Improved AMD64 out-of-range jumping, some cases are still broken though. Fixed i386 build. 2008-08-26 23:14:13 -07:00
David Anderson
d030e910fb Merge. 2008-08-26 21:51:12 -07:00
David Anderson
8464bf22ba Merge. 2008-08-26 21:47:10 -07:00
Andreas Gal
7df899a9f5 Merge. 2008-08-26 21:46:21 -07:00
Andreas Gal
4f51cac33e Add test case for decaying inner loops that sometimes are not executed at all since the condition fails pre-entry. 2008-08-26 21:45:53 -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
a596a75f05 Why wasn't this hunk in the .rej file, or else merged properly? 2008-08-26 21:05:17 -07:00
Brendan Eich
ff1b59a197 Bug 452340 - knownNative for num_toString (r=danderson). 2008-08-26 20:55:52 -07:00
David Anderson
357f1d4e64 Test case for bug 452340. 2008-08-26 20:02:59 -07:00
Brendan Eich
e326b78b55 Added knownNative for num_toString (bug 452340, r=dvander). 2008-08-26 20:00:11 -07:00
Robert Sayre
4bd48080dc Add some tests for loops that should exit trace. 2008-08-26 18:46:50 -04:00
David Anderson
2a4faa131c Fixed crashing with the incremental allocation changes. Very long jumps are still a problem but at least now we assert. 2008-08-26 15:15:15 -07:00
Jim Blandy
7633d7d0d6 Place these libraries in EXTRA_LIBS, not LDFLAGS, so we can easily
capture them in the js-config script later.
2008-08-26 14:34:36 -07:00
Jim Blandy
468980d37c There is no 'pathsubst' function in GNU make. This assignment has
been around forever, and it's never done anything, so it should be
safe to delete.
2008-08-26 14:34:36 -07:00
Andreas Gal
c4af944fe9 Merge. 2008-08-26 13:26:05 -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
Brendan Eich
7adb43eaa6 Align test order with mozilla-central to avoid merge conflicts (I hope). 2008-08-26 12:50:01 -07:00
Brendan Eich
b764cdd7da Fix TM assert on wikipedia (451806, r=mrbkap). 2008-08-26 12:49:10 -07:00
Brendan Eich
772be6e2bf Fixed cases where argc varied between recording time and execution time (bug 451727; also warning fix fe54f7fb89d1 from tracemonkey). 2008-08-26 12:28:26 -07:00
Boris Zbarsky
21251ac0c5 Bug 449233. Assert when decrementing the jsdhash/pldhash recursion level past 0. r=dbaron,brendan, sr=dbaron 2008-08-26 13:02:04 -04:00
Igor Bukanov
5202ccb583 bug 450392 - fixing -Wstrict-aliasing=2 warnings 2008-08-26 10:46:34 +02: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
Ted Mielczarek
8a69f6fb57 bug 436495 - build DumpJSStack in release builds. r=shaver 2008-08-25 20:25:19 -04:00
Blake Kaplan
63f33e654d Bug 451483 - Array.splice() should return an empty array. r=brendan 2008-08-25 17:12:30 -07:00
Brendan Eich
70173fadfb Merge. 2008-08-25 16:38:38 -07:00
Brendan Eich
9d19499490 Oops, forgot to make Print set *vp to undefined when I made it a FastNative. 2008-08-25 16:36:57 -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
Neil Rashbrook
0cf05ab4dc Bug 452061 Clobbering TraceMonkey shouldn't be needed 2008-08-25 23:51:30 +01:00
Andreas Gal
99505fce2e Merge. 2008-08-25 15:18:12 -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
Robert Sayre
7fd9b9c91b Merge 2008-08-25 17:38:42 -04:00
Andreas Gal
8a6d79d6b6 Annotate gotos that are emitted for break statements with SRC_BREAK (452122, r=mrbkap). 2008-08-25 14:34:26 -07:00
Robert Sayre
8ce085e0c6 Add test of (attempted) trace recording with an active call object 2008-08-25 17:12:41 -04:00
Brendan Eich
73d280798c Bug 451906 - Regression: Array index has different results (r=shaver). 2008-08-25 12:38:12 -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
Brendan Eich
d28554f3cc Remove over-eager gvar optimization for JSOP_DEFFUN (451678, r=shaver). 2008-08-22 18:07:32 -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
David Anderson
f0606ee551 Fixed x86_64 build issue (accidentally trying to build 32-bit nanojit). 2008-08-21 18:07:26 -07:00
Andreas Gal
1b29fd53e4 Merge. 2008-08-21 16:50:57 -07:00
Andreas Gal
666aeff29e Fix builtins that were accidentally flagged as CSE/FOLD but really aren't (Math.random i.e.) 2008-08-21 16:49:51 -07:00
Andreas Gal
7da39648cf Cleanup spacing in builtins.tbl 2008-08-21 16:35:05 -07:00
Blake Kaplan
26c3cd4ea9 Fixed js_String_p_split passing in an undersized array. 2008-08-21 15:17:47 -07:00
Andreas Gal
2563d2bd3d Merge. 2008-08-21 11:42:03 -07:00
Andreas Gal
80088cd777 Fix warning about signed/unsigned comparison. 2008-08-21 11:40:56 -07:00
Robert Sayre
c6a7088bae Bug 451580, fix string split assertions and return values. Tests fail with JIT on for other reasons, it seems. r=shaver 2008-08-21 14:06:42 -04: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
d62ee36613 Fix script->owner maintenance; also fix warning. 2008-08-21 05:04:20 -07:00
Brendan Eich
b1e05f4fc9 JSThread is not zeroed when allocated, grrr. 2008-08-21 04:51:46 -07:00
Brendan Eich
e4a3506856 Fix typo. 2008-08-21 04:22:48 -07:00
Brendan Eich
7ebaf5bf1c Merge. 2008-08-21 04:17:49 -07:00
Andreas Gal
a49e15bd85 Remove FastEval builtin. 2008-08-21 04:17:17 -07:00
Brendan Eich
791221dfae Followup upvar fix, easy assertbotch avoidance. 2008-08-21 04:16:50 -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
f2c2859267 Merge. 2008-08-21 03:13:57 -07:00
Andreas Gal
d9acfb10f0 Remove FastEval, broken by design (r=brendan). 2008-08-21 03:13:31 -07:00
David Anderson
f34f92698f Fixed code generation bug in AMD64 port. Enabled AMD64 JIT now. 2008-08-21 02:53:53 -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
Brendan Eich
2c4e22add3 Fix CHECK_RECORDER macro to use XOR to evaluate both terms. 2008-08-21 01:38:50 -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
5a8f2bff2b Merge. 2008-08-21 00:45:44 -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
a7b0f45c3f Export js_NaN. 2008-08-21 00:13:40 -07:00
Brendan Eich
e5f489dcbb Merge. 2008-08-20 23:47:47 -07:00
Brendan Eich
b9d10512b7 Use JS_FRIEND_API for new JS_ArrayToJSUint8Buffer, etc., and use it on prototypes and definitions (fixes some platform builds). 2008-08-20 23:46:31 -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
Andreas Gal
8468ac7444 Support multiple returns from called trees by continueing the outer tree with a new nested guard. 2008-08-20 22:37:00 -07:00
Andreas Gal
36ddb45efb Restore state.sp and state.rp before the nested guard exit point so we can have a sequence of them and still have rp/sp adjusted correctly. 2008-08-20 22:23:17 -07:00
Brendan Eich
4a25cf5a32 Defer eval'ed script destruction to next GC; expose js_obj_eval for tracing. 2008-08-20 22:18:42 -07:00
Andreas Gal
e9f3ccf839 Push actual guard that failed in a nested call, not the expected. 2008-08-20 20:12:19 -07:00
Andreas Gal
87295d3d95 Merge. 2008-08-20 19:25:26 -07:00
Andreas Gal
1b99fe0e1e Don't emit a guard at the end of CALLNAME and friends since the values CALLNAME puts on the stack (callee, this) are not seen by the interpreter yet, and thus get store killed. Instead, emit the guard in CALL, at which point the values are properly stacked. 2008-08-20 19:24:57 -07:00
shaver@mozilla.org
9817a0cd97 fix js_IsLoopExit to better handle for-in exits, r=mrbkap 2008-08-20 18:50:49 -07:00
Andreas Gal
49f0b4f6cb Add a switch to disable the oracle, in which case we never demote any slots. 2008-08-20 16:10:56 -07:00
Andreas Gal
fdb661bd5e Clear the oracle on every GC. 2008-08-20 16:01:56 -07:00
Andreas Gal
3a2b40e4c4 Merge. 2008-08-20 15:43:57 -07:00
Andreas Gal
3e55729492 If at loop entry we expect a double, but at the loop tail we store an int because we suck the i2f into the side exit, we have to explicitly cast back up to double using i2f otherwise we won't be able to make sense of the value when we load it at the top of the next iteration. 2008-08-20 15:43:26 -07:00
shaver@mozilla.org
913b472c52 disable vprof building so that we can build on XP 2008-08-20 15:23:44 -07:00
Andreas Gal
98f67af6d0 Add a way to clear the oracle. 2008-08-20 15:18:43 -07:00
Andreas Gal
0954618ab1 Merge. 2008-08-20 15:04:22 -07:00
Andreas Gal
ccfca5d79f Clear global slots and global type map when clearing the code cache. 2008-08-20 15:03:51 -07:00
Andreas Gal
f3972bfb84 Backed out changeset be63a51a0a3b. Breaks tofte if run from ./time.sh. 2008-08-20 14:57:49 -07:00
Vladimir Vukicevic
9a3d208ae4 b=451242, add fast-paths for dense array to uint/int/double buffer conversion; r=bent/mrbkap 2008-08-20 14:47:01 -07:00
Brendan Eich
6bc330ef33 Don't disable property caching in eval (this requires GC'ing eval scripts). Do tolerate active Call object at head of scope chain in record_JSOP_CALLNAME, and go straight to the stack slots. 2008-08-20 14:04:37 -07:00
Andreas Gal
1859be808c Stub the getter and setter on class prototypes and constructor (bz, r=brendan, bug 451154). 2008-08-20 12:58:07 -07:00
Andreas Gal
8df2fc18c8 When adjusting integers to doubles in tree calls start with the current stack frame only. 2008-08-20 12:47:39 -07:00
David Anderson
d6aef7cf26 Fixed some valgrind whinings (not actual bug fixes). 2008-08-20 12:17:31 -07:00
Vladimir Vukicevic
1bbc109274 wrong condition check in nanojit with qjoin(qlo,qhi) 2008-08-20 11:32:22 -07:00
David Anderson
54cfb5e424 Fixed typo that broke the tree. Sorry! 2008-08-20 10:38:50 -07:00
shaver@mozilla.org
d1f7543e1b default to non-verbose for DEBUG, set TRACEMONKEY=verbose in env to go verbose 2008-08-20 10:15:42 -07:00
David Anderson
d84ad33955 Another portability fix. math-spectral-norm is crashing in the test harness so keeping 64-bit JIT off (everything else works). 2008-08-20 09:59:23 -07:00
David Anderson
738ce385fa Merge. 2008-08-20 09:50:41 -07:00
shaver@mozilla.org
5d3ad68bbe merge from mozilla-central 2008-08-20 08:17:17 -07:00
Brendan Eich
deca6a9d50 Add str + obj concatenation for 3d-raytrace.js. 2008-08-20 02:35:17 -07:00
Dave Camp
fd49970e20 Backed out changeset af00b3f27c64 (Bug 418051) 2008-08-20 01:15:25 -07:00
Andreas Gal
3a4d105a0f If the outer tree has a slot in an integer register, but the inner tree expects a double, make sure to promote the value before calling the tree, otherwise the inner tree will read the value from the stack incorrectly. 2008-08-20 00:51:56 -07:00
Andreas Gal
fb3cf056d9 Correctly calculate tree call stack adjustment, even if we don't have any arguments in the current frame and hand pick some cleanups from the backed-out changeset. 2008-08-19 23:31:33 -07:00
Blake Kaplan
62fcdc68d4 bug 418051 - Don't allow shorthand object initializer through destructuring assignment. r=brendan 2008-08-19 23:31:21 -07:00
Andreas Gal
39d9d53d83 Back out multi-trees. There is absolutely no way this will be debugged in time for tomorrow. Need a bit more gdb man-power. 2008-08-19 23:28:13 -07:00
Andreas Gal
55c1e3d15d Always blacklist the first fragment in the peer list, and blacklist if we see a loop that is not type-stable. 2008-08-19 23:10:28 -07:00
Andreas Gal
25bf562fe6 Don't build trees inside tree calls if no suitable tree can be found (for now.) 2008-08-19 23:00:19 -07:00
Andreas Gal
4ee5ead209 Improved debug output. 2008-08-19 22:59:08 -07:00
David Anderson
69c4638355 Merge. 2008-08-19 22:33:43 -07:00
Andreas Gal
8569359e49 Add debugging facilities for typemaps and fix sp_adj calculation for tree calls. 2008-08-19 22:29:02 -07:00
David Anderson
9fa5be54af Merge. 2008-08-19 21:32:22 -07:00
David Anderson
20e464b4f9 More AMD64 fixes (release build works now, and fixed verbosity bug). 2008-08-19 21:31:23 -07:00
Andreas Gal
454c89d72b Support multiple fragments with different entry maps per PC location. 2008-08-19 20:30:16 -07:00
Jason Orendorff
f9365c3994 Backing out changeset cf6c811e1272 (bug 407216) due to debug assertions. 2008-08-19 22:28:26 -05:00
Jason Orendorff
4b74677d5e Bug 407216 - DOM quick stubs - faster paths for top N DOM methods (r+sr=jst, security r=mrbkap, build r=bsmedberg)
* * *
* * *
* * *
2008-08-19 21:38:24 -05:00
Jason Orendorff
b94820fbeb Bug 451571 - Delete SetExceptionWasThrown (r=dbradley, sr=jst) 2008-08-30 18:58:36 -05:00
Igor Bukanov
bafd289e60 bug 445705 - eliminate Namespace and QName GC things. r=brendan 2008-08-29 10:10:34 +02:00
Igor Bukanov
91905c13d0 bug 452586 - fastcall attribute should only be used on i386. r=shaver 2008-08-29 09:51:00 +02:00
Brendan Eich
1b762e34e4 Fix upvar decompilation for eval-from-fun case (452441, r=igor). 2008-08-28 17:17:55 -07:00
Daniel Holbert
bfcab9f023 Backed out changeset 9ecf699d4047 to see if it fixes linux mochitest failures 2008-08-28 15:04:18 -07:00
Brendan Eich
4300c6ec35 Fix upvar decompilation for eval-from-fun case (452441, r=igor). 2008-08-28 11:01:39 -07:00
Peter Weilbacher
a39ac3faf1 [OS/2] Bug 451686: fix build break and fastcall warnings in js/src, r=shaver 2008-08-22 11:53:26 +03:00
Brendan Eich
bea371d215 Record JSOP_IN (452563, r=gal). 2008-08-28 00:18:05 -07:00
Jason Orendorff
fe99024391 Bug 407216 - DOM quick stubs - faster paths for top N DOM methods (r+sr=jst, security r=mrbkap, build r=bsmedberg)
* * *
* * *
2008-08-19 21:38:24 -05:00
David Anderson
9a5b3b4307 AMD64 trace-tests.js passes now (hacked in LIR_qcmov opcode, corrected builtin return types). 2008-08-19 17:19:19 -07:00
Neil Rashbrook
f48015a1f0 Bug 450651 Use host outoption for host binaries r=mrbkap 2008-08-20 00:02:44 +01:00
Andreas Gal
b3efe4fbeb Clear out the list of global slots when the shape changes. 2008-08-19 13:34:20 -07:00
Andreas Gal
1ee261ca2e Emit the tree call stack setup code before executing the inner tree, otherwise we might see stale references to instructions prior to the call that no longer guarantee certain types (since the inner tree overwrite them.) 2008-08-19 13:11:18 -07:00
Andreas Gal
1ded8ec0ad Merge. 2008-08-19 11:32:52 -07:00
Andreas Gal
e79f9ed689 Intern globals per-context, not per tree, which allows transitioning between trees that use globals. The type of all global slots compiled code uses is expected to remain stable, otherwise the entire code cache has to be flushed. Changes to the shape of the global object also flush the code cache. Working for trace-tests.js, but fails math-partial-sum.js 2008-08-19 11:32:36 -07:00
David Anderson
b279c87417 Disabled 64-bit JIT for now, failing 3 test cases. 2008-08-19 11:19:56 -07:00
David Anderson
ee4a887045 Merge. 2008-08-19 11:02:57 -07:00
David Anderson
aef458673b Fixed codegen bug for amd64 64-bit binary ops. 2008-08-19 11:00:17 -07:00
Brendan Eich
c2229dbd5e Back out changeset 1d0574db8320 (for 450997), it was based on a bum steer. 2008-08-18 22:18:33 -07:00
Andreas Gal
dfb94ccec1 Add a global type map to the monitor and rename slotList to globalSlots. 2008-08-18 21:08:35 -07:00
Brendan Eich
76380c598b Add a final js_ReconstructStackDepth assert after setting fp->regs->sp in js_ExecuteTree's bail-out epilog. 2008-08-18 19:26:47 -07:00
Brendan Eich
87a6e416ef 1. Fix json2.js (it crashes later, another bug) to restore a non-empty stack for a call with missing args after a nested bail-out. This involves changing js_SynthesizeFrame to return the number of stack slots it reconstructed that map to native slots. It also means not counting the missing args in the spdist uint16 pushed onto the state.rp stack (this was the root of all over-counting evil, for this bug).
2. Use if (C) { do {...} while (C); } instead of if (C) { while (C) {...} } and other style fixage.
2008-08-18 18:36:05 -07:00
David Anderson
e503629dbe Fixed AMD64 accidentally treating the shape as a 64-bit integer. 2008-08-18 17:36:24 -07:00
David Anderson
908183cf6f Merge. 2008-08-18 16:38:32 -07:00
David Anderson
0f46c5d568 Fixed some bugs in the AMD64 port, still crash in 5 sunspider tests. 2008-08-18 16:23:37 -07:00
Brendan Eich
21b6e353e2 Cosmetic cleanup. 2008-08-18 15:32:17 -07:00
Andreas Gal
f1b353f1c2 Add a place to store the current shape of the global object as we add slots it the global slot list. 2008-08-18 13:14:19 -07:00
Andreas Gal
ad4bfa3b5b Add a global slot list to the trace monitor. 2008-08-18 13:12:19 -07:00
David Anderson
938044313a Added AMD64 JIT building to the makefile. 2008-08-18 12:57:35 -07:00
Andreas Gal
199891edab Merge. 2008-08-18 12:55:09 -07:00
David Anderson
751ef6d2af Improved AMD64 nanojit compatibility. 2008-08-18 12:54:04 -07:00
Andreas Gal
afc782cbe2 Make sure to trasm the vmprivate of dependent trees as well. 2008-08-18 12:53:38 -07:00
David Anderson
d584e27cb8 Fixed compiling on AMD64. 2008-08-18 12:41:55 -07:00
David Anderson
b39fadd1f3 Updated nanojit for the AMD64 patch. 2008-08-18 12:32:14 -07:00
Andreas Gal
f7aac4002e Tighter fencepost in getTop, don't overshoot the stack (450997). 2008-08-18 10:09:24 -07:00
Andreas Gal
202a9de38b Doh. Deep bailots are pretty rare and js_SynthesizeFrame already uses the fairly slow js_ReconstructStackDepth helper internally, so anotherone to avoid counting stack slots via spbase can't hurt. 2008-08-18 10:04:03 -07:00
Andreas Gal
e7645176d5 Merge. 2008-08-18 08:03:51 -07:00
Andreas Gal
535584eecb Add a method to type map that captures missing slots (which have been lazily added to the slot list since the type map was created.) 2008-08-18 07:32:42 -07:00
Brendan Eich
4d8c1fda9b Fix missing paren in comment; also s/scope/frame/ in same comment. 2008-08-17 12:04:33 -07:00
Andreas Gal
9f71dd226f Extend the globalTypeMap import(), not in the caller, since we missed extending it in case of re-reading registers after a tree call. 2008-08-17 11:38:49 -07:00
Andreas Gal
f08e18fc14 If RecordTree is triggered, create a new peer fragment (or recycle and unused one) if we already have a tree for this location. 2008-08-17 00:49:59 -07:00
Andreas Gal
2d983bcee2 Try to execute the tree first, and if that fails worry about counting and triggering compilation. This speeds up trace activiation by a tiny bit, but makes code that we can't trace a little bit slower. We use a micro optimization to bypass the call to js_ExecuteTree when its clear that it wouldn't find a tree to executed to reduce this overhead. This change is necessary for multiple trees per bytecode location. 2008-08-17 00:30:36 -07:00
Andreas Gal
ef8a6041cc Give root fragments a treeInfo decorator only if the trace was successfully compiled. Otherwise just keep a reference in the recorder and delete it when the recorder is destroyed. Review welcome. The involved state machine is a bit complex. Added lots of asserts as safety net. 2008-08-16 23:43:49 -07:00
Andreas Gal
26fc76213a Only capture the shape of the global object in a tree once that tree tries to access a global, and only check the stored global shape in trees against the current global shape if the tree actually uses globals (which also doesn't trash trees when global variables are added if that tree doesn't actually use globals.) This is approx. a 1% win for sunspider. 2008-08-16 21:05:03 -07:00
Andreas Gal
efd76e5daf Change interface of js_ExecuteTree to indicate which of the peer fragments it really executed (since we soon will have more than one tree that could be activated for that particular bytecode location). 2008-08-16 15:45:48 -07:00
Andreas Gal
c7f1119cef Add a ->first pointer to all fragments that points to the first fragment in the peer list. This is the fragment we do JIT throttling/blacklisting on. 2008-08-16 15:41:21 -07:00
Andreas Gal
af92aac55a Append peer fragments at the end of the list (so f->blacklist() always counts against the same fragment). 2008-08-16 11:42:38 -07:00
Andreas Gal
dcb470b104 Add a simple script that calculates an aggregate score over all tests running with the jit in t/*. 2008-08-15 20:26:45 -07:00
Andreas Gal
b9e946d830 Merge. 2008-08-15 20:16:46 -07:00
Andreas Gal
7b954b5cd7 Add the concept of peer fragments to nanojit. Each loop fragment can have a number of peer fragments, which we can use to have several different specialized variants of a loop (i.e. for different types). The makefile doesn't pick up the change to Fragmento.h, so make sure you clobber by hand or you will end up wasting an hour of your life in gdb (like me.) 2008-08-15 20:15:47 -07:00
Brendan Eich
ede29d299e Merge. 2008-08-15 18:02:30 -07:00
Brendan Eich
bfc9f75d14 Update stale comment. 2008-08-15 18:01:26 -07:00
Andreas Gal
10a24ff80c Don't allow inner trees to lazily pick up any globals since we currently can't handle that. We already ensure that we don't inline trees that have globals. This patch merely makes sure they don't get some additional globals on the fly. 2008-08-15 18:00:22 -07:00
Andreas Gal
dea1843401 Similarly to attaching new branches to a side exit, we might end up with a partial type map when exiting from a trace during tree execution, so make sure to merge in missing types from the tree's entry map in this case as well. 2008-08-15 17:11:57 -07:00
Andreas Gal
1d0582a6ec Add test case for type map merging (450535). 2008-08-15 16:04:44 -07:00
Andreas Gal
d51fdd4130 If we extend a tree along a side exit that knew about fewer global slots that we have now in the tree, merge in the types for those additional slots from the entry map (450535). 2008-08-15 16:00:24 -07:00
Andreas Gal
d356a10871 Funnel all write-backs to the stack and the global frame through TraceRecorder::writeBack() so we can intercept and manipulate them in one central location. 2008-08-15 14:47:49 -07:00
Andreas Gal
8938c62c44 Enable nested trees by default. This is going to be exciting. 2008-08-15 10:21:07 -07:00
Andreas Gal
432ca408ef I honestly to god don't know why this change is necessary but with this nesting works now for SunSpider and all of my test cases. The stack layout calculation needs some reviewing, seriously. 2008-08-15 10:19:24 -07:00
Andreas Gal
c42833b03c Merge. 2008-08-15 10:12:47 -07:00
Andreas Gal
91a71447a9 Change sp_adj in guards to always reflect the current stack depth, so if we enter a trace/loop with something on the stack, sp_adj will reflect always at least that minimum amount. InterpState->sp now always runs in parallel with regs->sp of the current frame. This breaks nesting badly. I really need help with the stack layout logic. 2008-08-15 10:09:36 -07:00
Blake Kaplan
40e749ecc6 bug 450765 - Fix aliasing in LIR.h 2008-08-15 09:55:32 -07:00
Blake Kaplan
a6f7e7c0f7 Merge 2008-08-15 09:35:16 -07:00
Blake Kaplan
5aa5360905 bug 450529 - pass pc to String.prototype.match so we can avoid unnecessary object creation when tracing. r=brendan 2008-08-15 09:29:03 -07:00
Robert O'Callahan
5c0b889677 Backing out changeset 043ea4ef249c to try to fix failed mochitests on Windows and Linux 2008-08-26 01:06:15 +12:00
Ginn Chen
2b4f50f46f Bug 451504 js/src/jslock.cpp failed to compile on Solaris x86 r=igor 2008-08-25 19:01:30 +08:00
Igor Bukanov
7d91e81268 bug 450392 - fixing -Wstrict-aliasing warnings, r=crowder 2008-08-25 12:33:23 +02:00
Ted Mielczarek
69f1723ed2 bug 451678 - TM: mochi chrome tests fail under TM. xpcshell unit test. r=brendan 2008-08-23 18:12:42 -04:00
Brendan Eich
eddb7e1614 Remove over-eager gvar optimization for JSOP_DEFFUN (451678, r=shaver). 2008-08-22 18:11:47 -07:00
Andreas Gal
9474c22bf7 Merge. 2008-08-14 23:23:15 -07:00
Andreas Gal
07cb6236c0 Add callee onto the stack to make sure our native frame layout matches the interpreter during calls. 2008-08-14 23:22:51 -07:00
Brendan Eich
bb1e475a4d Fix gc hazard just introduced in fix for bug 450538. 2008-08-14 23:20:24 -07:00
Andreas Gal
1274eac1f3 Merge. I love hg. 2008-08-14 17:52:37 -07:00
Andreas Gal
6ba62a6fa7 Cleanup stack adjustment during tree calling. 2008-08-14 17:52:11 -07:00
Blake Kaplan
7bbee60c81 Don't just undepend the string, canonicalize it as well. 2008-08-14 17:31:39 -07:00
David Anderson
238cf072dd Merge. 2008-08-14 17:28:32 -07:00
David Anderson
a41cb6c005 Fixed js_ValueToNumber overwriting values on the stack as different types, causing the exit type map to assert. The breaking conversion was JSVAL_VOID becoming a NaN. (bug 450538) 2008-08-14 17:27:45 -07:00
Brendan Eich
af7353e4e9 Consolidate tracing-out-of-js_Interpret abort code at bottom of js_Interpret. 2008-08-14 17:00:03 -07:00
Andreas Gal
801923081c Make sure sp points to the native stack base of the inner tree when calling a nested tree. 2008-08-14 16:22:01 -07:00
Andreas Gal
13a4a98604 Merge. 2008-08-14 16:04:14 -07:00
Andreas Gal
1edbe7e6bf Don't over-compensate sp_adj (exclude the callee). 2008-08-14 16:02:33 -07:00
David Anderson
f2223e2048 Merge. 2008-08-14 15:29:25 -07:00
David Anderson
2c45d81524 Fixed recorder not aborting when leaving js_Execute (bug 450532). 2008-08-14 15:29:04 -07:00
Blake Kaplan
8440f739f0 Avoid the malloc altogether if we're going to use a unit string. 2008-08-14 15:19:57 -07:00
Vladimir Vukicevic
61a89af8e6 b=450176; trace parseInt and parseFloat; r=gal 2008-08-14 15:13:39 -07:00
Blake Kaplan
e0872c3629 bug 450641 - Add missing JS_free call. 2008-08-14 15:03:08 -07:00
David Anderson
9f7d261303 Fixed the known native arg handler from accidentally using 'continue' to break out of a loop one level higher. This was causing crashes when the arg didn't match the expected types (bug 450530). 2008-08-14 11:48:43 -07:00
Andreas Gal
d0056d1820 Assert on the recording table only if we have enabled the tracer (446551). 2008-08-14 09:04:22 -07:00
Andreas Gal
bfcf6a784d Write back outer tree frames, but exclude the current frame (which the next tree will do). This still crashes the trace-tests.js test case with nesting enabled and for the life of me I can't figure out why (try with TRACEMONKEY=nesting). 2008-08-14 01:44:32 -07:00
Andreas Gal
fa52d00c5a Backed out changeset 089406b2b0aa 2008-08-14 00:45:39 -07:00
Andreas Gal
55bc4df432 Add an explicit start frame parameter to the FORALL macros, which allows FlushNativeStackFrame to be used for other frames than just the topmost N ones. 2008-08-13 23:20:44 -07:00
Andreas Gal
a5e83b133c Fix outrageously incorrect comment. 2008-08-13 22:54:23 -07:00
Andreas Gal
d6e6e333e2 Added bitsinbyte-ish testcase to trace-test.js. This currently still crashes the VM in nested mode. 2008-08-13 21:44:01 -07:00
Andreas Gal
2f533e6051 Merge. I miss CVS. 2008-08-13 21:37:33 -07:00
Andreas Gal
0530506440 Restore state of the outer frames in case of a nested exit. Should be feature complete but needs more debugging. 2008-08-13 21:34:41 -07:00
Brendan Eich
bb2a177553 LOL ANDR3AS SUX0RZ!!! 2008-08-13 19:24:40 -07:00
Brendan Eich
a0bf39bbaa MERGE LOL HG SUX0rz! 2008-08-13 19:23:56 -07:00
Andreas Gal
8d4c97dbef FlushNativeStackFrame currently only handles the innermost nested trees writeback, so at least make it use the proper adjusted stack base for that. 2008-08-13 19:23:28 -07:00
Brendan Eich
8efccf4d7d Abort recording if unwinding from js_Interpret to js_Invoke and still recording (this can happen via fun.call/.apply). Also assert in threaded interpreter BEGIN_CASE and DO_OP (from END_CASE) that we either have no recorder or are using the recordingJumpTable. 2008-08-13 19:22:07 -07:00
Andreas Gal
01efe3882f Update inlineCallCount with the total call stack height, which is the sum of rp_adj and any adjustments nested trees added. Also make sure to read all stack adjustment information from the tree we exit on, not the tree we entered (might be different in case of nesting.) 2008-08-13 19:09:05 -07:00
Andreas Gal
30b82dbcbd Print relative stack instead of absolute stack address upon side exit (debug mode). 2008-08-13 18:28:43 -07:00
Andreas Gal
c0e640829a Added test case for nested exits. 2008-08-13 18:13:22 -07:00
Andreas Gal
9350282579 Implement nested side exits. 2008-08-13 18:10:19 -07:00
Andreas Gal
222e746fe7 Merge. If I had a cent for every merge. Sigh. 2008-08-13 17:48:04 -07:00
Andreas Gal
f1d87d6234 Reshuffle code lines in the side-exit return path (do asserts closer to the GlobalFrame writeback.) 2008-08-13 17:47:18 -07:00
David Anderson
4d25c18771 Merge. 2008-08-13 17:46:58 -07:00
David Anderson
87d9c2089d Merge. 2008-08-13 17:45:50 -07:00
Brendan Eich
fc782418ee Set rval_ins with initializing=true because nothing will get the callee, so the tracker won't have tracked it yet if it's in virgin stack. 2008-08-13 17:45:49 -07:00
David Anderson
3652f7c126 Fix from brendan for propertyIsEnumerable having an inconsistent return type. 2008-08-13 17:44:26 -07:00
Brendan Eich
880030b373 Forgot to string-tag before going from atom to jsid in two builtins. 2008-08-13 17:20:16 -07:00
Andreas Gal
eac5c3ed47 Merge. Lame. 2008-08-13 17:13:53 -07:00
Andreas Gal
201341cfc5 Add nestedExit to InterpState and comment its fields. 2008-08-13 17:12:55 -07:00
David Anderson
a9922db939 Merge. 2008-08-13 17:12:08 -07:00
David Anderson
4c7aaa248b Merge. 2008-08-13 17:11:22 -07:00
Brendan Eich
ca1e2a283a Fix prototype hit case in prop to advance obj and obj_ins up the proto chain. 2008-08-13 17:10:18 -07:00
David Anderson
fe66e966ca Fixed from brendan for counting disparity between nativeStackSlots and FORALL_SLOTS_IN_PENDING_FRAMES.
Added debug code to catch future disparities.
2008-08-13 17:09:16 -07:00
Andreas Gal
ee55743358 Don't print LeaveFrame debug info when falling out of the global frame. 2008-08-13 16:57:14 -07:00
Andreas Gal
9c95a20382 Merge. 2008-08-13 16:43:46 -07:00
Andreas Gal
e702dc5ac4 When re-importing register values after a tree call, make sure to use the inner tree's nativeStackBase, since we also use the inner tree's sp. 2008-08-13 16:29:59 -07:00
Brendan Eich
7fc14c40cf Fix bogus varval assert. 2008-08-13 16:14:22 -07:00
Andreas Gal
27c128f706 Merge. 2008-08-13 15:50:40 -07:00
Andreas Gal
e68f9ee859 Read back registers used by inner tree relative to inner_sp (the adjusted sp value). Print frames we enter into and return to in Enter/LeaveFrame. 2008-08-13 15:50:11 -07:00
Brendan Eich
3d21588b2c Major and winning overhaul to for-in codegen (mad props to Andreas for advice). 2008-08-13 14:02:35 -07:00
Andreas Gal
892137794b Don't call inner trees if they use global slots since we don't support those in inner trees yet. 2008-08-13 14:00:37 -07:00
Andreas Gal
1d809d7adf Merge. 2008-08-13 13:52:21 -07:00
Andreas Gal
fa09943222 Flexible call stack allocation with proper guarding for call stack overflows. 2008-08-13 13:51:59 -07:00
David Anderson
ff9bb9ea9d Fixed ifop predicting NaNs as true when they should be false. 2008-08-13 12:25:50 -07:00
Andreas Gal
76a2288dcc Assert on bogus always-exit guards. 2008-08-13 12:01:06 -07:00
David Anderson
b070351870 Fixed ExprFilter emitting corrupt LIR when reducing guards. 2008-08-13 11:11:37 -07:00
Andreas Gal
fa3085ca3d Merge. Nothing to see here. Move along. 2008-08-13 03:55:24 -07:00
Andreas Gal
5d7914a698 Blacklist a trace if we hit a global shape mismatch. This makes us suck less on date-format-tofte until we find a way to fix the property cache misses. 2008-08-13 03:54:54 -07:00
Andreas Gal
2a60d7a27b Only trash the tree, not the entire cash, on global shape mismatch. 2008-08-13 03:50:53 -07:00
Brendan Eich
ed5f8343a2 Fix deep for-in loop bug (450334). 2008-08-13 00:41:13 -07:00
Brendan Eich
9226769821 Add missingArgTest2 to cover the nativeStackOffset bug fixed recently. 2008-08-12 23:58:50 -07:00
Andreas Gal
335fb1edd8 Merge. 2008-08-12 23:31:12 -07:00
Andreas Gal
91e81a361d Don't cache loads in import into the nativeFrameTracker, since when coming back from a nested tree we re-load the frame state into registers using import() based on the called tree's state, which pushes loads into the nativeFrameTracker that are relative to the inner tree's call depth. Only cache on writes now, which should be always safe. 2008-08-12 23:30:49 -07:00
Brendan Eich
17a4dd5c46 Remove bogus assertion. 2008-08-12 23:30:38 -07:00
Andreas Gal
8af146d25b Merge. 2008-08-12 23:25:40 -07:00
Andreas Gal
a271a0ee0e When re-importing registers after a tree call, make sure to use the inner trees calldepth at its side exit, not the call depths of the calling tree. 2008-08-12 23:25:17 -07:00
Brendan Eich
452bea0c69 Fix missing argument stack offset computation (in both places: FORALL_FRAME_SLOTS and nativeStackOffset). Clear missing args in nativeFrameTracker. 2008-08-12 23:21:52 -07:00
Andreas Gal
58cd4dc419 Introduce a large fixed-size native frame stack and store its ceiling in state->eos. 2008-08-12 21:39:44 -07:00
Andreas Gal
3fd013cd9b Merge. 2008-08-12 20:19:05 -07:00
Andreas Gal
ed3125b915 Hands down the hardest bug I had to debug in TM so far. Make sure to read back any registers an inner tree might have changed before writing out the typemap for the nested_exit guard, otherwise we might be pointing to old stale pre-(inner-)loop state and pick an incorrect (in this case too narrow) type. fannkuch=2.8x with this. 2008-08-12 20:18:29 -07:00
Brendan Eich
967ec56341 - Add String match and three replace overloadings, and allow known native matching to continue in search of exact match (not best, and not abort on first mismatch).
- Add CallGetter built-in and use it for regexp class-getter-implemented prototype properties.
- Add BUILTIN5 support (this should be "it" ;-).
2008-08-12 18:52:28 -07:00
Andreas Gal
4ebf8a417d Merge. 2008-08-12 17:40:56 -07:00
Andreas Gal
95c7647b28 Add constvalp and isconstp to LIR instructions (nanojit). 2008-08-12 17:37:38 -07:00
Brendan Eich
48181da4e7 Use aobj consistently in test_property_cache (450317). 2008-08-12 17:21:32 -07:00
Andreas Gal
9ea4e8a477 Merge. 2008-08-12 16:57:55 -07:00
Andreas Gal
d56662f293 Enumerate missing argument slots on the caller's stack and initialize them to undefined (450304). 2008-08-12 16:51:55 -07:00
Brendan Eich
a4111eea56 Fix shapelessUnknownCalleeHelper. 2008-08-12 16:36:32 -07:00
Brendan Eich
0ceb399b55 Merge. 2008-08-12 16:35:11 -07:00
David Anderson
a8821cdfc6 Added NaN test case that fails when jitting; currently looking into why. 2008-08-12 15:45:06 -07:00
Brendan Eich
25fc093756 Fix annoying warnings, finally. 2008-08-12 14:50:42 -07:00
Andreas Gal
4b6c770288 Merge. 2008-08-12 14:29:09 -07:00
Andreas Gal
1819586877 js_obj_hasOwnProperty is supposed to return a boolean but was incorrectly generating code to return a number, resulting on a failure in the boolean comparison due to an unexpected i2f (450304). 2008-08-12 14:28:15 -07:00
David Anderson
f4b6e09a98 Merge. 2008-08-12 11:53:24 -07:00
David Anderson
c340cb93c0 Only use fastcall on x86. 2008-08-12 11:46:57 -07:00
Brendan Eich
64fa74acf5 More guard argument formatting. 2008-08-12 11:36:52 -07:00
David Anderson
5e75ec729a Merge. 2008-08-12 10:47:50 -07:00
David Anderson
40213894ff Fixed nanojit using a variable before it got set (verbosity mode only it seems). 2008-08-12 10:45:24 -07:00
shaver@mozilla.org
3e4452be3c fix !JS_TRACER build 2008-08-12 13:16:47 -04:00
shaver@mozilla.org
3f2af7e42d add way to explicitly disable tracer for easier testing 2008-08-12 13:16:30 -04:00
Brendan Eich
827b341985 Consolidate common name (global slot) addressing code. 2008-08-12 09:42:29 -07:00
Brendan Eich
26c7507913 Put trailing args on their own lines when they otherwise would seem to associate with a nested call in a previous arg position. 2008-08-12 09:27:54 -07:00
Brendan Eich
74c6d3ffe3 Merge, plus ((void)0) parens. 2008-08-12 09:23:38 -07:00
Brendan Eich
fd08308ba0 Fix goto over init whinage. 2008-08-12 09:18:19 -07:00
shaver@mozilla.org
41a6158c57 fix build for !JS_TRACER, both threaded and switch interps 2008-08-12 12:09:59 -04:00
shaver@mozilla.org
9d4a33a8c6 guard all of jstracer.h against non-tracer builds 2008-08-12 11:36:29 -04:00
shaver@mozilla.org
1813fb2fa7 NAMEINC, INCNAME, NAMEDEC, DECNAME 2008-08-12 11:33:40 -04:00
Andreas Gal
b94f5433e5 Merge. 2008-08-12 03:40:16 -07:00
Andreas Gal
b4f7639e6e Don't read type from typemap if we already have it in a local variable. 2008-08-12 02:00:05 -07:00
Andreas Gal
7e95e972d8 Don't re-record traces over and over in case of excessive type mismatches. Instead, blacklist the fragment and slowly back away from recording it. 2008-08-12 01:31:28 -07:00
Brendan Eich
8d77aad49c JSOP_FORNAME. 2008-08-12 01:06:02 -07:00
Brendan Eich
d2e6e9e641 Factor forInOp from JSOP_FORLOCAL, use it from JSOP_FORARG's recorder too; tighten up JSOP_SETNAME. 2008-08-12 00:34:43 -07:00
Brendan Eich
d491ed65d3 Fix some comments and tighten up assertions about block scope (mrbkap please look). 2008-08-11 23:45:40 -07:00
Brendan Eich
e90731a3b6 Comments for JSOP_{,STRICT}{EQ,NE} about the layering and constraints on evolution of the non-strict equality ops' recorders. 2008-08-11 23:44:43 -07:00
shaver@mozilla.org
cfc93a30d9 cmp over number and (string or bool or undefined) 2008-08-12 01:05:33 -04:00
shaver@mozilla.org
2553ace88f mistaken relanding, didn't track merges well enough 2008-08-12 00:41:23 -04:00
shaver@mozilla.org
2b16f54740 reland eb01b1d55d9b after the mismerge 2008-08-12 00:37:16 -04:00
shaver@mozilla.org
ba5a56aa89 reland 3ea1e1317707 after the mismerge 2008-08-12 00:36:25 -04:00
Brendan Eich
2cbfd79ea0 Restore lost shaver rev 0e50c89c476b -- how did that get lost? 2008-08-11 20:27:47 -07:00
Brendan Eich
daba5ef959 Dependent string test. 2008-08-11 20:26:04 -07:00
Brendan Eich
a63e9a65ba Merge, sigh. 2008-08-11 19:21:42 -07:00
Brendan Eich
bba0ea3906 Rename js_DestroyJIT to js_FinishJIT to match Init/Finish vs. New/Destroy naming scheme used elsewhere; use same #if conditions around #include jstracer.h as around code depending on it. 2008-08-11 19:17:30 -07:00
shaver@mozilla.org
16a7af3ef4 JSOP_EQ/NE for objects 2008-08-11 22:11:31 -04:00
Brendan Eich
0ab33d4bfd Argh, I hate hg. 2008-08-11 19:10:24 -07:00
Brendan Eich
9dd296d70a Merge, in the name of all that which does not suck\! 2008-08-11 18:53:21 -07:00
David Anderson
9ce9cb42b5 Merge. 2008-08-11 18:49:34 -07:00
David Anderson
9c0315ccf7 Fragmento lifetime is now associated with the thread/runtime instead of the context. 2008-08-11 18:47:22 -07:00
Brendan Eich
7fbc9732fd JSOP_LENGTH handles dependent strings now. 2008-08-11 18:41:06 -07:00
shaver@mozilla.org
6a35d8134e implement JSOP_ADD(str, num) 2008-08-11 21:32:26 -04:00
David Anderson
c0b377bb8b Fixed some explicit deallocation bugs that cropped up running in the browser. 2008-08-11 18:20:10 -07:00
Andreas Gal
ade8388ef5 Merge. 2008-08-11 18:03:31 -07:00
Andreas Gal
20318a6ce0 Trash tree if we see an obsolete treeinfo object on record. 2008-08-11 18:03:13 -07:00
Brendan Eich
5137a68ca5 Merge. 2008-08-11 17:54:59 -07:00
Andreas Gal
1f5ce03d99 Don't try to delete names if we are not building a DEBUG build. 2008-08-11 17:49:56 -07:00
Brendan Eich
d004346b52 Object.prototype.{hasOwnProperty,propertyIsEnumerable}. 2008-08-11 17:47:05 -07:00
Brendan Eich
9849ef7434 Handle multi-level property cache hits; put BRANCH_EXIT on its own line so it stands out as the third param to guard in ifop. 2008-08-11 17:40:26 -07:00
Brendan Eich
20ef6499d6 Make Print a fast native. 2008-08-11 16:19:55 -07:00
David Anderson
8e63b13307 Merge. 2008-08-11 16:15:01 -07:00
David Anderson
c5a85f7524 Merge. 2008-08-11 16:14:29 -07:00
Andreas Gal
b6bc18350b Support non-flat strings in Any_getelem and Any_setelem. 2008-08-11 16:12:52 -07:00
David Anderson
1b623f7d25 Added explicit deallocation (bug 443500, r=gal) 2008-08-11 16:01:21 -07:00
Andreas Gal
80ab94547d Remove obsolete Tests.cpp file. 2008-08-11 15:59:11 -07:00
Andreas Gal
020e68ab1e Remove default parameter for guard, specify MISMATCH_EXIT explicitly. 2008-08-11 15:40:04 -07:00
Andreas Gal
00e5631b45 Remove dead code, add a debug printf. 2008-08-11 15:23:37 -07:00
Andreas Gal
7bcf550b11 If we get a series of tree type mismatches, trash the tree (and all dependent trees in case of nesting.) 2008-08-11 15:16:34 -07:00
Brendan Eich
391f5513d4 Fix FastNewObject built-in to create dense array instance with its own map. 2008-08-11 15:03:32 -07:00
Brendan Eich
0280e606df Beware macro argument multiple expansion... 2008-08-11 14:44:22 -07:00
Brendan Eich
a2af1922f6 Merge. 2008-08-11 13:07:00 -07:00
Brendan Eich
40050a1e4d Try fixing LOAD_INTERRUPT_HANDLER based on Andreas's patch. 2008-08-11 13:05:28 -07:00
Brendan Eich
7e793185ea Match JSOP_NULLTHIS up to JSOP_NULL special cases in the decompiler. 2008-08-11 13:03:47 -07:00
Andreas Gal
120117749e Don't try to access the name of arguments beyond nargs (r=brendan). 2008-08-11 12:47:18 -07:00
Andreas Gal
285acf8b9c Merge. 2008-08-11 11:43:59 -07:00
Andreas Gal
a8e0893484 Avoid goto across initialization of sprop2 (446508). 2008-08-11 11:43:40 -07:00
Andreas Gal
ca11b2e069 Don't use asprintf (446508). 2008-08-11 11:37:35 -07:00
Brendan Eich
13cfac8f97 Rework GCF_DONT_BLOCK to be cx->gcDontBlock, assert it's set, set before entering trace and clear on exit. 2008-08-11 11:18:16 -07:00
Brendan Eich
a56862bdff Make js_ConcatStrings JS_FASTCALL and use directly as a built-in; remove gcflag param from it and from js_NewString. 2008-08-11 11:03:54 -07:00
Brendan Eich
40573b479e Unregress FastNewObject builtin to handle user-defined constructors (note to self: run tests before coffee...). 2008-08-11 10:41:08 -07:00
Brendan Eich
7967defc01 Fix ASSERT_VALID_PROPERTY_CACHE_HIT pcoff argument (my bad from 887fc4facdeb). 2008-08-11 10:40:24 -07:00
Brendan Eich
56fac8fe90 Back out extra gcflag param change (859b9a23adbf), I set bad precedent and will back out previous such shortly. Want cx->gcflags instead. 2008-08-11 10:33:23 -07:00
Brendan Eich
fced00a77b - Trace JSOP_NEWINIT/INITPROP/INITELEM/ENDINIT, which required extending the FastNewObject builtin to create a dense Array or a new Object (easy to discriminate on the constructor function's u.n.clasp member).
- Fix record_JSOP_SETELEM to avoid storing if a JSOP_POP that will be skipped follows.
2008-08-11 10:24:47 -07:00
shaver@mozilla.org
ee67ea9db4 extend js_NewObjectWithGivenProto to permit specifying additional new-thing flags (such as GCX_DONT_BLOCK) 2008-08-10 22:56:10 -04:00
Brendan Eich
0d83651633 - Skip dense array object, try prototype, in all JSOP_GET*PROP variants, interpreter and tracer.
- Test entry instead of retesting aobj->map->ops->getProperty == js_GetProperty in JSOP_CALLPROP.
- Handle object and null types as well as booleans in record_JSOP_NOT.
- Trivially implement JSOP_STRICT{EQ,NE} recording by forwarding to the non-strict record methods. This works so long as the latter trace only same-type operands and do no conversions.
2008-08-11 00:05:39 -07:00
Brendan Eich
43649cd01e Record JSOP_LOOKUPSWITCH. 2008-08-10 23:20:24 -07:00
Brendan Eich
207e579fe9 Use true and false for js_EqualString return values now that its return type is bool. 2008-08-10 23:17:28 -07:00
Brendan Eich
64fc3b0367 - Fix shapeless callee guarding to guard on function object value.
- Add JSOP_NULLTHIS to help the tracer guard shapeless callees (see trace-tests.js)
- Culled bogus record_JSOP_CALLGVAR left-over forwarding to record_JSOP_GETGVAR.
- Better shapeless callee tests.
2008-08-10 22:36:48 -07:00
Brendan Eich
a67dad8f4d Reoptimize call and new based on shape guards and branded method-ful scopes -- no need to emit function-is-interpreted guards. 2008-08-10 15:26:39 -07:00
Brendan Eich
622dce0a42 joinTest. 2008-08-10 15:21:14 -07:00
Brendan Eich
0099753ff4 Add Array (generic) join builtin, plus (not yet used) optional this-class guarding for builtins. 2008-08-10 14:50:31 -07:00
Brendan Eich
5bbc609a8b Implement JSOP_OBJECT. 2008-08-10 12:01:03 -07:00
Brendan Eich
e5b0039eaa Match native map guard specializations in tracer to interpreter, particularly to skip up the proto chain from a dense array in JSOP_CALLPROP (json2.js showed an abort here, pointing to the tracer/interpreter discrepancy). 2008-08-10 11:54:27 -07:00
Brendan Eich
18248a701c Fix JSOP_FORLOCAL to push false when guarded conditions are false while recording (449961). 2008-08-10 10:42:21 -07:00
Brendan Eich
2991c66416 - Avoid unnecessary FASTCALL builtin wrappers for existing js_* library-private or friend functions, which could be (and now are) fastcall (JS_FASTCALL). A couple of builtins avoid name collisions by using js_Fast instead of just js_ as their name prefix.
- Use GCF_DONT_BLOCK from fastcall builtins that call into the GC allocator (mostly; a few places need help still, or better: need to avoid allocation).
- Cope with C clients of jscntxt.h and its include files (these hacks should go away).
- Naming convention and function definition line-break style nit-picks.
2008-08-10 00:39:18 -07:00
Brendan Eich
f2b84e6ea0 - Test JSVAL_BOOLEAN tag in TraceRecorder::record_JSOP_TYPEOF, assert no holes or other pseudo-booleans, to unify false/true/undefined testing.
- JS_NOT_REACHED("...") not JS_ASSERT(0 && "...").
-
2008-08-09 22:27:58 -07:00
Brendan Eich
9a1bab4473 Restore C compilation support to jscntxt.h, used by liveconnect (only one file now: jsj_JavaClass.c had no need to include jscntxt.h). 2008-08-09 22:25:54 -07:00
Brendan Eich
8d0b5ebbdc camelCaps test names restored (NewTest => newTest, etc.). 2008-08-09 22:24:49 -07:00
shaver@mozilla.org
bd5846e102 JSOP_ANONFUNOBJ 2008-08-09 23:12:32 -04:00
shaver@mozilla.org
a937f98d5b JSOP_TYPEOF and JSOP_TYPEOFEXPR 2008-08-09 22:54:01 -04:00
shaver@mozilla.org
c4ca6755bf Builtin for String.prototype.concat (single int-arg version) 2008-08-09 22:15:21 -04:00
shaver@mozilla.org
3341bf1c11 Implement cmp for string-on-string.
Add < and > tests for strings.
Condition the top-level truthies test on a synthetic test name, so it can be
excluded.
2008-08-09 21:50:52 -04:00
Robert Sayre
c8dd484645 Bug 449978 – TM: trace some more builtins for string-validate-input 2008-08-09 21:47:52 -04:00
Robert Sayre
b31572b1d5 Bug 449972 – TM: give xpcshell a JIT switch 2008-08-09 18:36:17 -04:00
Robert Sayre
2ac505035a Bug 449666 – TM: Assertion failure: JSSTRING_IS_FLAT during trace recording. r=brendan 2008-08-09 18:20:18 -04:00
Brendan Eich
337988cd85 Fix obj2 typo, meant obj (obvious use-before-set, sorry about that). 2008-08-09 13:30:49 -07:00
shaver@mozilla.org
33b067062b restore preference for getarg+length over getargprop 2008-08-09 15:48:38 -04:00
shaver@mozilla.org
d431dd547d improve naming of anonymous functions and excess args 2008-08-09 15:05:34 -04:00
Brendan Eich
c90cc76482 Prettier spacing knownNatives table. 2008-08-08 22:43:31 -07:00
Andreas Gal
36eb8da275 Merge. 2008-08-08 19:24:50 -07:00
Andreas Gal
66dd6aab15 Add an assert to protect against nested exits (not implemented yet.) 2008-08-08 19:23:28 -07:00
Brendan Eich
eaf4254c15 Merge from mozilla-central. 2008-08-08 18:58:04 -07:00
Andreas Gal
8244eafaff Support calling of nested tree from within inlined frames. When we call a tree that tree expects to be the top-level tree, which means it assumes callDepth=0. If the call of the tree is within an inlined frame, thats not true (callDepth > 0). We adjust the native stack pointer accordingly before calling the tree, and then restore the value of the stack pointer after the call. Fancy stuff. 2008-08-08 18:52:08 -07:00
Andreas Gal
3f90159e8b Remove ip from InterpState. Calculate the new pc after a trace side exit relative to lr->from->root->ip, which also works if we side exit on a different tree than we entered (which can happen in case of nested trees.) 2008-08-08 18:20:20 -07:00
Brendan Eich
f028f26f52 Merge. 2008-08-08 16:40:45 -07:00
Brendan Eich
072c7b59a5 Guard against shapeless callees, with tests (more to do here, can't break the unknown callee case yet, but it should be breakable). 2008-08-08 16:37:01 -07:00
Andreas Gal
c7be42f2f3 Add very preliminary nesting for trees. This is disabled by default. To enable set TRACEMONKEY=nesting in the environment. 2008-08-08 15:26:31 -07:00
Brendan Eich
de40e589da Merge. 2008-08-08 14:45:27 -07:00
Brendan Eich
153e03bb32 Get operator new on interpreted functions working, along with JSOP_SETPROP on an unmutated object, or one of the right shape but where the setprop is adding the next property, and it's not in the object yet. 2008-08-08 14:38:44 -07:00
Brendan Eich
f644a96ebb Better idea for avoiding level-1 property cache collisions. 2008-08-08 14:28:10 -07:00
Brendan Eich
4e0e30452f Improve first-level property cache hash function to avoid collisions in linear sequence of setprops. 2008-08-08 14:12:55 -07:00
Ben Turner
184d478d40 Bug 447711 - "FindInJSObjectScope calls JS from within a request and a lock". r+sr=jst. 2008-08-08 13:13:41 -07:00
Ben Turner
b21229606c Bug 443871 - "Protect against null objects in a title's scope/map". r=brendan. 2008-08-08 12:17:42 -07:00
Igor Bukanov
b16852c1cd bug 412296 - removal of minarg support for fast native 2008-08-08 18:02:50 +02:00
Andreas Gal
c1ce126b85 Don't activate a tree if it has globals, since we can't handle that yet. 2008-08-07 19:59:21 -07:00
Andreas Gal
f2972efa5c Remove tracking of outer trees and merging of globals since globals will be maintained centrally soon, not attached to trees. 2008-08-07 19:40:41 -07:00
Brendan Eich
43f60608f4 Fix bug 449627. 2008-08-07 18:12:31 -07:00
Bob Clary
969199e57d JavaScript Tests - regression test for bug 448595, by Oliver Hunt 2008-08-07 18:00:38 -07:00
Andreas Gal
f77dcbe3f6 We don't deallocate JIT-related data structures when the JIT is shut down. Add a TODO for this. 2008-08-07 17:52:48 -07:00
Andreas Gal
2d0c9c41ab Hand the script in when updating the oracle regarding global variable slots even if we don't use it right now. This will be useful for caching information across runtimes. 2008-08-07 17:43:13 -07:00
Andreas Gal
3ac96b066b Use a typedef SlotList instead of Queue<uint16>. 2008-08-07 17:22:21 -07:00
Andreas Gal
a21818bc72 Teach typemaps how to capture the types of all slots in a slot list. 2008-08-07 17:20:49 -07:00
Andreas Gal
d9159ecfb2 When merging globals from inner trees to outer trees, make sure to push the expected type upstream as well. 2008-08-07 17:08:27 -07:00
Andreas Gal
afda8f7095 When we trash a tree, we have to trash all outer trees that call it as well. 2008-08-07 17:01:00 -07:00
Andreas Gal
d988d3523a Recognize loop edges that hit a nested tree. 2008-08-07 16:41:20 -07:00
Andreas Gal
bbe7acfbaf Fix typo (missing memcmp in statement). 2008-08-07 16:27:26 -07:00
Andreas Gal
600b9c3e14 Remove type-map hash code. A direct memcmp seems to be faster (probably some SSE magic behind it in gcc/glibc). 2008-08-07 16:26:56 -07:00
Andreas Gal
27e8ef817a Factor out the code to capture the current stack type map and move around the type map method implementations to make sure they can see the FORALL macros. 2008-08-07 16:23:50 -07:00
Andreas Gal
01e3af1f79 We expect no interned globals in a new tree. Assert on that. 2008-08-07 15:44:11 -07:00
Andreas Gal
7351e39b63 Merge. 2008-08-07 15:41:50 -07:00
Andreas Gal
00b12bbaca Always trash TreeInfo when we recompile. This avoids the much dreaded JS_ASSERT(insInt32) errors and we can do this now because the demotion information is provided by the oracle and no longer stored in the typemap directly. 2008-08-07 15:38:54 -07:00
Andreas Gal
95f5262e4f Use an oracle to predict when slots are demotable. This allows trashing the TreeInfo* object in the root fragment more aggressively. Rebuild the stack type map at every compile to avert type map mismatches. Purge all global slot info when we re-record a tree. 2008-08-07 15:28:43 -07:00
Brendan Eich
e04a6b22c4 Don't fail to flush cx->thread's JIT cache if JS_THREADSAFE. 2008-08-06 23:38:57 -07:00
Andreas Gal
e09041e2a5 If we run into an error during compilation, blacklist that fragment. If we run out of memory, flush the cache. 2008-08-06 22:26:20 -07:00
Andreas Gal
0fe0cf9a98 Flush JIT cache for all contexts. Clear nanojit error state when we start compiling. 2008-08-06 22:18:33 -07:00
Andreas Gal
e9733ceed9 Remove dead code. 2008-08-06 22:10:30 -07:00
Andreas Gal
9385e7842c Add a helper to flush the JIT code cache (and the fragment lookup quick cache). On a global shape mismatch trash the entire cache (might be a bit overly aggressive). Similary, during GC flush the code cache. 2008-08-06 21:56:25 -07:00
Andreas Gal
cd8d6cd3da Merge. 2008-08-06 19:31:52 -07:00
Andreas Gal
d1a1a76121 Tracker outer trees for every tree and merge globals of inner trees into all outer trees as we register inner trees with outer trees. 2008-08-06 19:25:24 -07:00
shaver@mozilla.org
7c89606155 add tests for missing and excess arity for trace-entry function context 2008-08-06 22:24:39 -04:00
Andreas Gal
6bb6800be5 Add a contains method to Queue. 2008-08-06 19:06:37 -07:00
Andreas Gal
3785f2a5af Fix misleading debug text. 2008-08-06 19:04:41 -07:00
Andreas Gal
ff22344594 Fix tracing of code inside methods that were called with arity mismatch. 2008-08-06 18:51:26 -07:00
Brendan Eich
f23efc77b2 Replace bogus assertion with runtime test for correct abort test (getter or setter, given sprop hit from propcache). 2008-08-06 17:54:36 -07:00
Andreas Gal
c8df243f32 Fix nonEmptyStack1 test. 2008-08-06 17:44:39 -07:00
Graydon Hoare
aaf41f8ee5 Bug 447713, remove the import/export functionality from spidermonkey, r=brendan 2008-08-06 17:34:58 -07:00
Bob Clary
8977765520 JavaScript Tests - regression test for bug 443569, by Jesse Ruderman 2008-08-07 05:18:54 -07:00
Bob Clary
93b3246f1a JavaScript Tests - regression test for bug 442333 2008-08-07 05:00:42 -07:00
Bob Clary
8447a6217c JavaScript Tests - regression test for bug 442242, by Igor Bukanov 2008-08-07 04:47:33 -07:00
Bob Clary
80a4237137 JavaScript Tests - regression test for bug 441477, by Jason Orendorff 2008-08-07 03:23:36 -07:00
Bob Clary
628a0aabbe JavaScript Tests - regression test for bug 440558, by Ben Turner 2008-08-07 02:54:46 -07:00
Bob Clary
c02b8f58c9 JavaScript Tests - regression tests for bug 435345, by Cyrus Omar 2008-08-06 21:58:03 -07:00
Bob Clary
2569db84d4 JavaScript Tests - regression tests for bug 434837, by Cyrus Omar 2008-08-06 21:48:28 -07:00
Bob Clary
aefe5a062e JavaScript Tests - regression tests for bug 446169, by romaxa, Igor Bukanov 2008-08-06 19:59:24 -07:00
Bob Clary
7c449116ff JavaScript Test - binary operator evaluation order, bug 433672 2008-08-06 19:15:12 -07:00
Gavin Sharp
348213c998 Bug 449503: fix --enable-dtrace, r=igor 2008-08-06 17:51:38 -07:00
Andreas Gal
d41941073e Disable outerlining, to be replaced with nesting. 2008-08-06 17:34:06 -07:00
Andreas Gal
1bf2697257 Add a helper to emit a tree-call into the currently recording trace. 2008-08-06 16:24:29 -07:00
Andreas Gal
1b8f21c8f3 Add CallTree builtin. 2008-08-06 15:56:31 -07:00
Andreas Gal
6bd49e0d49 Make ip in InterpStruct const*. 2008-08-06 15:55:00 -07:00
Andreas Gal
bc93ceb9d5 Merge. 2008-08-06 15:04:18 -07:00
Andreas Gal
27de48d1f9 Cleanup stack offset calculation and eliminate the stack offset fiddling that was necessary for nanojit prior to adding the getTop hook. 2008-08-06 15:04:02 -07:00
Brendan Eich
5331ec8967 Add first non-empty stack testcase, which now passes (yay). 2008-08-06 13:53:34 -07:00
Brendan Eich
0f1f29e9a4 Merge again, I lost to Andreas\! 2008-08-06 13:44:07 -07:00
Andreas Gal
2acb2afdec Always trashing the tree on a type mismatch can't work since the first iteration comes in as undefined for loop-outputs and then kills the main tree that deals with the proper stable types. Have to find a different way to deal with this. 2008-08-06 13:41:04 -07:00
Brendan Eich
586464070d Merge. 2008-08-06 13:37:45 -07:00
Andreas Gal
fcaab6d007 Pull recompile flag out of the state and pass in as argument. Trash the tree if a secondary trace can't be connected to the loop header. This is very aggressive and might need more tinkering. Trashing the tree on every mismatch doesn't seem to work well, so thats currently disabled. 2008-08-06 13:37:29 -07:00
Brendan Eich
6e215765df - Add builtins to support for-in loops, both iterating and getting/setter properties by name using o[i] instead of o.p where i is 'p'.
- Record JSOP_ITER and JSOP_ENDITER, which must be handled since tracing could start in between them (and always will, until we nest or unless we outerline).
- Add a null state guard in JSOP_FORVAR's recorder method.
- Pick include order, indentation, and trailing space nits.
2008-08-06 13:36:29 -07:00
Andreas Gal
d1d2895356 Merge. 2008-08-06 13:23:55 -07:00
Andreas Gal
a253b66a09 If we stop recording, immediately attempt to trigger the tree. 2008-08-06 13:18:30 -07:00
shaver@mozilla.org
9615dbd804 add test for non-empty stack on trace entry (fails currently, but no longer crashes) 2008-08-06 16:12:49 -04:00
Andreas Gal
141f71186c Properly deal with trace entry with non-empty stack. 2008-08-06 12:38:17 -07:00
Bob Clary
f4b3de7f12 JavaScript Tests - regression test for bug 433279, by nanto_vi (TOYAMA Nao), Jesse Ruderman 2008-08-06 10:50:20 -07:00
Igor Bukanov
46b1a8edf2 bug 447762 - merging var and local JS bytecodes. r=brendan 2008-08-06 16:13:22 +02:00
Andreas Gal
0ed65746a7 Split side exit handling from js_ExecuteTree. 2008-08-06 06:34:16 -07:00