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
David Anderson
aef458673b
Fixed codegen bug for amd64 64-bit binary ops.
2008-08-19 11:00:17 -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
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
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
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
Blake Kaplan
40e749ecc6
bug 450765 - Fix aliasing in LIR.h
2008-08-15 09:55:32 -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
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
201341cfc5
Add nestedExit to InterpState and comment its fields.
2008-08-13 17:12:55 -07:00
Andreas Gal
fa09943222
Flexible call stack allocation with proper guarding for call stack overflows.
2008-08-13 13:51:59 -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
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
95c7647b28
Add constvalp and isconstp to LIR instructions (nanojit).
2008-08-12 17:37:38 -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
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
David Anderson
c5a85f7524
Merge.
2008-08-11 16:14:29 -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
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
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
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
Andreas Gal
6bd49e0d49
Make ip in InterpStruct const*.
2008-08-06 15:55:00 -07:00
Andreas Gal
f0c74cce54
Sync with tamarin-tracing/nanojit tip.
2008-07-31 13:28:12 -07:00
Andreas Gal
86aa1f7ff7
If trees are not enabled, don't try to reuse state and param1.
2008-07-30 21:40:21 -07:00
Andreas Gal
afc7936599
Remember number of global slots known at that point in the trace in every side exit (forward-looking change to cope with dynamic collection of interned globals.)
2008-07-30 00:15:07 -07:00
David Anderson
60181b7fd2
Fixed some MSVC whinings, implemented rdtsc on win32
2008-07-29 19:19:51 -05:00
Andreas Gal
5a7ac301e6
Limit tree growth to side exits that expicitly declare that they want to be grown.
2008-07-29 11:13:41 -07:00
Andreas Gal
4710877c9a
Merge.
2008-07-27 16:19:15 -07:00
Andreas Gal
6126f5fa5c
Track the type of guards and react accordingly if we bail out on them. Guards that protect against out-of-memory conditions don't try to grow the tree. Instead we just resume the interpreter.
2008-07-27 16:18:53 -07:00
shaver@mozilla.org
a4af3457f4
do setelem in a builtin, so we don't abort trace every 8 times when growing
2008-07-27 18:34:23 -04:00
Andreas Gal
ecb79b1640
Determine ahead of time whether a side exit is a loop-terminating side exit instead of re-determining this at every side exit.
2008-07-25 01:44:40 -07:00
Andreas Gal
41e0593392
Maintain a separate frame for globals using InterpState->gp.
...
This will allow nested loops to access the globals interned by outer loops while at the same time sharing parts of the stack of the outer loop.
2008-07-23 23:18:02 -07:00
Andreas Gal
1c9c67b6a1
Write all the debug output to stdout (we can't easily make everything go to stderr, so this way at least it all goes into the same place.)
2008-07-18 14:13:31 -07:00
Andreas Gal
f309cf6b64
Try to clean up the memory allocation/deallocation through the avmplus glue code.
2008-07-17 21:31:50 -07:00
Andreas Gal
591262852c
Don't allocate FpRegs if sse2 is enabled.
2008-07-17 15:00:22 -07:00
shaver@mozilla.org
9182a834c4
copy capacity when becoming another list
2008-07-16 23:11:17 -07:00
David Anderson
5dca2ad552
Synced nanojit with TT tip.
2008-07-16 14:21:31 -07:00
Andreas Gal
d9110d8393
Aliasing cleanup for LIR.h. Patch submitted for upstream review.
2008-07-15 16:17:34 -07:00
Andreas Gal
7c24d0f34d
Compilation fixes for gcc 4.2. Ripp out write-barrier code in our avmplus glue layer.
2008-07-15 15:58:43 -07:00
Andreas Gal
42d91c123d
Add missing namespace use (pending upstream for review.)
2008-07-15 13:12:14 -07:00
Andreas Gal
a81b83090e
Sync with TT.
2008-07-15 13:06:05 -07:00
Andreas Gal
9f761173f0
Added a callstack that will track the pc of the call that caused a function call to be inlined. This is necessary to recover from deep side exits inside inline functions. The callstack is subject to store elimination, so unnecessary stores to the stack will go dead automatically during compilation (i.e. if we inline a function that doesn't have side exits.)
2008-07-14 19:12:50 -07:00