Commit Graph

643 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
Brendan Eich
48181da4e7 Use aobj consistently in test_property_cache (450317). 2008-08-12 17:21:32 -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
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