Commit Graph

87 Commits

Author SHA1 Message Date
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
Vladimir Vukicevic
420e72ed85 b=449526, TM: fix up ARM code generation / softfloat 2008-09-02 22:29:23 -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
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
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
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
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
Brendan Eich
5d132dba83 Record JSOP_IN (452563, r=gal). 2008-08-27 23:00:43 -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
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
Blake Kaplan
298caaa80f Bug 451782 - Trace Math.ceil. r=brendan 2008-08-25 16:54:02 -07:00
Blake Kaplan
26c3cd4ea9 Fixed js_String_p_split passing in an undersized array. 2008-08-21 15:17:47 -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
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
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
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
shaver@mozilla.org
ed7fab1440 trace |new Array|, via the magic of copy and paste 2008-08-21 00:50:20 -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
David Anderson
738ce385fa Merge. 2008-08-20 09:50:41 -07:00
Brendan Eich
deca6a9d50 Add str + obj concatenation for 3d-raytrace.js. 2008-08-20 02:35:17 -07: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
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
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
Blake Kaplan
7bbee60c81 Don't just undepend the string, canonicalize it as well. 2008-08-14 17:31:39 -07:00
Vladimir Vukicevic
61a89af8e6 b=450176; trace parseInt and parseFloat; r=gal 2008-08-14 15:13:39 -07:00
David Anderson
87d9c2089d Merge. 2008-08-13 17:45:50 -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
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
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
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
shaver@mozilla.org
cfc93a30d9 cmp over number and (string or bool or undefined) 2008-08-12 01:05:33 -04:00
Brendan Eich
d004346b52 Object.prototype.{hasOwnProperty,propertyIsEnumerable}. 2008-08-11 17:47:05 -07:00
Andreas Gal
b6bc18350b Support non-flat strings in Any_getelem and Any_setelem. 2008-08-11 16:12:52 -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
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
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
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
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
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
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