Commit Graph

2782 Commits

Author SHA1 Message Date
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