shaver@mozilla.org
|
f298721bf2
|
update to isInt
|
2008-07-05 09:43:00 -04:00 |
|
shaver@mozilla.org
|
13b4f67ef5
|
merge
|
2008-07-05 09:34:19 -04:00 |
|
shaver@mozilla.org
|
92e9aa44c0
|
[mq]: simple-ops
|
2008-07-05 09:15:33 -04:00 |
|
Andreas Gal
|
2df2214a9e
|
Introduce asInt and asDouble to check for the type of values based on the actual value since some 32-bit integers hide out in doubles.
|
2008-07-04 23:53:29 -07:00 |
|
Andreas Gal
|
cef5e9becc
|
Make trace-code 32-bit clean and extend interpreter state to carry the current context (cx). The recorder still has to record a 31-bit int path through the loop, but the emitted code is able to stay in the tree even if values bump over to 32-bit ints.
|
2008-07-04 16:24:42 -07:00 |
|
Andreas Gal
|
e35d351b28
|
Added support for SET_VAR again. bitwise.js working now.
|
2008-07-04 15:21:56 -07:00 |
|
Andreas Gal
|
ab1dc289ba
|
Fixed some stack handling and trace activation issues. We can run trace.js again.
|
2008-07-04 15:07:05 -07:00 |
|
Andreas Gal
|
5e9ca6ef0e
|
Cleanup of stack handling.
|
2008-07-04 13:23:42 -07:00 |
|
Andreas Gal
|
9b8f5f75a8
|
Added back support for the instructions required to compile trace.js.
|
2008-07-04 03:06:18 -07:00 |
|
Andreas Gal
|
1503932551
|
Properly switch tracer on and off depending on loopEdge and abort signaling from trace recorder recording functions.
|
2008-07-04 01:10:57 -07:00 |
|
Andreas Gal
|
efb72df02a
|
Re-integrate trace recording and trace activation infrastructure. Model more closely after Tamarin.
|
2008-07-04 00:51:30 -07:00 |
|
Andreas Gal
|
731614bfe9
|
Create a stub for each opcode in TraceRecorder and invoke them from the stubs that are pointed to by the recorder dispatch-table.
|
2008-07-03 23:57:57 -07:00 |
|
Andreas Gal
|
62d0c7bbfb
|
Switch back to mozilla-central jsinter.cpp. Lets try a different approach to attach the tracer to the interpreter.
|
2008-07-03 22:08:13 -07:00 |
|
Andreas Gal
|
8f4707fd29
|
Added dmod builtin and flag broken builtins for removal (shaver).
|
2008-07-02 22:05:30 -07:00 |
|
Andreas Gal
|
6eb6314e75
|
Support recording of ValueToECMAInt32, ValueToECMAUint32 and ValueToBoolean.
|
2008-07-02 21:48:42 -07:00 |
|
Andreas Gal
|
2cd7b6993b
|
VOIDs hang out in the BOOLEAN value space, so we have to treat them like a boolean on the trace. For ValuetoECMAInt32 all special boolean values except TRUE produce 0, and TRUE produces 1. Use a conditional move to implement this.
|
2008-07-02 19:11:07 -07:00 |
|
Andreas Gal
|
b137f2da3b
|
Introduce a VMSideExitInfo structure (holds the exit typemap only for now).
|
2008-07-02 18:06:24 -07:00 |
|
Andreas Gal
|
523ba92b3d
|
Use fragmento to track fragments and add proper trace activiation code.
|
2008-07-02 17:19:07 -07:00 |
|
Andreas Gal
|
47c6075eb2
|
Fix unstable trace rejection for optimized build.
|
2008-07-02 15:31:40 -07:00 |
|
Andreas Gal
|
7906238314
|
Fix type stability check.
|
2008-07-02 15:17:53 -07:00 |
|
Andreas Gal
|
6f3af33edf
|
Add type stability check for loop variables. Rename readstack to import.
|
2008-07-02 15:14:43 -07:00 |
|
Andreas Gal
|
e70272bfab
|
Removed attempt to imply ints into doubles on the fly. This can't work. Use proper float loads where needed and add some initial code for builtin functions.
|
2008-07-02 14:38:12 -07:00 |
|
Andreas Gal
|
8907cd354b
|
Flag ints as type INT in the incoming context if its merely a double holding an int that was too large to fit into jsval directly. Along the side exits make sure we can properly box oversized ints (by casting them to doubles). The fetch_int/store_int paths still need fixing to ensure that values are merely passed through (prim_copy) instead of explicit casting or calling to ValueToECMAInt32 etc.
|
2008-07-02 02:53:24 -07:00 |
|
Andreas Gal
|
08bd8d4245
|
Generate proper overflow detection code. Requires a trivial fix in nanojit (included, pending review to be pushed upstream).
|
2008-07-02 00:13:05 -07:00 |
|
Andreas Gal
|
7eba55b32b
|
Merge.
|
2008-07-01 19:44:24 -07:00 |
|
Andreas Gal
|
f3fba20c9c
|
Create type maps during trace entry and in each side exit and store them in the LIR using LIR_skip. Use these type maps during trace entry and exit.
|
2008-07-01 19:43:10 -07:00 |
|
Brendan Eich
|
9d20e12316
|
snprintf takes sizeof buffer.
|
2008-07-01 15:58:47 -07:00 |
|
Andreas Gal
|
39891951f4
|
Merge.
|
2008-07-01 13:36:33 -07:00 |
|
shaver@mozilla.org
|
da72d620b9
|
fix frame offset calculation for args, I think also non-entry frames
|
2008-07-01 08:11:49 -04:00 |
|
shaver@mozilla.org
|
50d599cb99
|
label arg/var/stack/sp/state for easier trace-reading
|
2008-07-01 08:06:02 -04:00 |
|
Andreas Gal
|
d3e7a57a68
|
Fix deallocation bug in the recorder. We will have to lift more code Tamarin's Interpreter to stabilize the recording.
|
2008-07-01 02:37:07 -07:00 |
|
Andreas Gal
|
84274f1b33
|
Save the VM registers into markRegs at opcode entry and restore that state when ending or aborting recording. The same info is pushed into sideexit and used by guards. With this change we can eliminate the hack in MONITOR_BRANCH that had to adjust the stack pointer depending on the opcode type, and it also allows us to trace through the recently added boolean guard opcode fusing. This improves trace code quality, since only the pre-conditional check state is saved. The guard restores into that state, so the trace code doesn't have to emit the value of the conditional evaluation onto the stack, saving a handful ops.
|
2008-06-30 18:31:29 -07:00 |
|
Andreas Gal
|
87396e1870
|
Rework memory management, don't leak memory in the filter pipeline.
|
2008-06-30 18:08:32 -07:00 |
|
Andreas Gal
|
19b4bcdc69
|
Save the side exit state at entry in to the opcode (since we want to restart ops) and enable store filter.
|
2008-06-30 17:12:52 -07:00 |
|
Andreas Gal
|
7511e45275
|
Use #ifdef DEBUG instead of VERBOSE.
|
2008-06-30 11:44:47 -07:00 |
|
Andreas Gal
|
806d0de678
|
Must use (&gc) new otherwise memory doesn't get cleared (found by danderson).
|
2008-06-30 11:39:00 -07:00 |
|
Andreas Gal
|
5d1d997c9d
|
Housekeeping (add comments, removed some dead code.)
|
2008-06-30 09:36:10 -07:00 |
|
Andreas Gal
|
d8d25140f9
|
Mockup of trace execution. Speedup is 10x for a tight loop. Keep in mind that this is a hack and the trace code is not optimized yet.
|
2008-06-29 23:02:22 -07:00 |
|
Andreas Gal
|
b1e24b8c98
|
Execute trace code. Boxing back the side exit state is not handled yet.
|
2008-06-29 20:56:06 -07:00 |
|
Andreas Gal
|
e267cb120c
|
Fix native frame addressing (reported by vlad.)
|
2008-06-29 17:17:39 -07:00 |
|
Andreas Gal
|
253b2572b2
|
Initialize jump table when side-entering the interpreter. Keep track of cx and sp directly in the recorder instead of going through the tracker.
|
2008-06-29 13:53:40 -07:00 |
|
Andreas Gal
|
ef71223de2
|
Remember JSContext instead of trying to keep track of frame pointer.
|
2008-06-28 18:47:12 -07:00 |
|
Andreas Gal
|
628a1f6985
|
Cleanup trace abort/end code.
|
2008-06-28 18:19:21 -07:00 |
|
Andreas Gal
|
6df975a5b5
|
Rewritten frame management. Use cx->fp->regs chain instead of direct passing of those structures.
|
2008-06-28 17:14:06 -07:00 |
|
Andreas Gal
|
552425ee07
|
Hook up pc and sp to the tracer in order to generate proper PC/SP adjustment code.
|
2008-06-28 11:00:18 -07:00 |
|
Andreas Gal
|
1f37ae3e62
|
Small cleanups and licensing blurb housekeeping.
|
2008-06-28 09:58:15 -07:00 |
|
shaver@mozilla.org
|
4fc71515e0
|
Add guards for XML objects, and some tracer bits to accommodate them.
|
2008-06-27 23:58:06 -04:00 |
|
Andreas Gal
|
40f1a90a78
|
Move recorder initialization into TraceRecorder and encapsulate its state.
|
2008-06-27 18:06:50 -07:00 |
|
Andreas Gal
|
2c370239e5
|
Add a way to calculate the current size of the native frame.
|
2008-06-27 16:24:17 -07:00 |
|
Andreas Gal
|
afd5f3b1e3
|
Clarified argument names in guard code and explain better why we guard for overflow the way we do.
|
2008-06-27 07:28:10 -07:00 |
|