Eric Scharff
398f861768
Support 64-bit Mac builds
2009-12-01 14:24:33 -07:00
Joel Dice
4ae4741c41
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian
2009-12-01 11:15:04 -07:00
Joel Dice
f216fe37ff
fix regression which led to register exhaustion
2009-12-01 11:14:57 -07:00
jent
1f98cc633d
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian
2009-12-01 09:55:19 -07:00
jent
f39469e71c
Changes for better memory managment
2009-12-01 09:54:36 -07:00
Joel Dice
98275e175e
powerpc bugfixes
2009-12-01 09:21:33 -07:00
Joel Dice
9ba71cf508
fix Darwin build
2009-12-01 08:23:11 -07:00
Joel Dice
0bdf1d8e82
use thunks for floating point ops if SSE is not available
2009-11-30 22:02:26 -07:00
Joel Dice
175cb8e89b
more floating point bugfixes
2009-12-01 02:06:01 +00:00
Joel Dice
7fa10909f4
more bugfixes for handling 64-bit floats on 32-bit systems
2009-11-30 22:08:59 +00:00
Joel Dice
851187f0ce
refine memory barrier implementation and usage
2009-11-30 15:38:16 +00:00
Joel Dice
04454960ec
various bugfixes for handling 64-bit floating point values on 32-bit systems
2009-11-30 15:10:34 +00:00
Joel Dice
d9de4c607c
allow source operand of any type for move operations
2009-11-30 15:09:43 +00:00
Joel Dice
ec701b9994
whitespace tweaks
2009-11-30 15:08:45 +00:00
Joel Dice
79d281f7fa
encourage loads from memory directly into SSE registers where appropriate
2009-11-30 02:17:08 +00:00
Joel Dice
1c61c1f421
fix x86 memoryBarrier implementation
2009-11-29 16:53:46 -07:00
Joel Dice
0b09c6aa30
avoid busy wait when entering "exclusive" state
2009-11-29 16:53:05 -07:00
Joel Dice
6d9e1270ca
fix race conditions in atomic operations
2009-11-29 09:08:07 -07:00
Joel Dice
1558b85acf
second attempt to fix "idle to active" fast path
...
If another thread succeeds in entering the "exclusive" state while we
use the fast path to transition the current thread to "active", we
must switch back to "idle" temporarily to allow the exclusive thread a
chance to continue, and then retry the transition to "active" via the
slow path.
2009-11-28 15:35:15 -07:00
Joel Dice
3418a8bcbe
fix race condition introduced in previous commit
2009-11-28 15:24:02 -07:00
Joel Dice
75934c8342
provide fast paths for common thread state transitions
...
These paths reduce contention among threads by using atomic operations
and memory barriers instead of mutexes where possible. This is
especially important for JNI calls, since each such call involves two
state transitions: from "active" to "idle" and back.
2009-11-28 15:01:54 -07:00
Joel Dice
f5490b800a
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian
2009-11-28 11:18:13 -07:00
Joel Dice
c615db31fb
refine move cost calculation to avoid indirect moves (e.g. memory to memory)
2009-11-28 18:17:17 +00:00
Joel Dice
5ead8fab17
refactor code responsible for moving data in the compiler
...
This is partially to address incorrect code generation for 64-bit
floating-point values on x86_32 and partially to reduce unnecessary
moves.
2009-11-27 21:15:12 -07:00
Joel Dice
bd72745ff9
fix off-by-one error in intrinsic()
2009-11-27 21:01:27 -07:00
Joel Dice
f6a52e260b
specify CONTEXT::ContextFlags before calling GetThreadContext
...
Previously, we assumed that the "context" parameter to
GetThreadContext was only an output parameter, but it actually uses at
the value of CONTEXT::ContextFlags on entry to decide what parts of
the structure to fill in. We were getting lucking most of the time,
because whatever garbage was on the stack at that location had the
necessary bits set. When we weren't so lucky, we got all zeros for
the register values which sometimes lead to a crash depending on the
state of the thread being examined.
2009-11-24 19:16:22 -07:00
Joel Dice
9f14d63592
initialize MyProcessor::getStackTrace::Visitor::trace in case visit is never called
2009-11-24 19:15:27 -07:00
Stan
728a6ba706
use MapViewOfFile instead of mmap on Windows
2009-11-24 08:24:37 -07:00
Joel Dice
a0d763d871
use cmpxchgq for 64-bit operands in atomicCompareAndSwap
2009-11-20 15:17:35 -07:00
Joel Dice
2276eece0e
support atomicCompareAndSwap on powerpc for GCC versions prior to 4.1
2009-11-20 15:14:27 -07:00
Joel Dice
f75868b394
don't specify -march=i486 on Darwin because a later generation is assumed by default
2009-11-20 11:40:55 -07:00
Joel Dice
b83314e884
fix powerpc build
2009-11-20 10:42:02 -07:00
Joel Dice
15eada93ed
implement atomicCompareAndSwap on x86_32 for GCC versions prior to 4.1 and for MSVC
2009-11-20 10:40:01 -07:00
Joel Dice
e91157a390
avoid acquiring a mutex recursively in markDirty
2009-11-19 19:41:49 -07:00
Joel Dice
5f5cc57d12
only use atomic operations if the compiler supports them
2009-11-19 19:32:54 -07:00
Joel Dice
07f40a07e1
specify -march=i486 for x86_32 to support __sync_bool_compare_and_swap
2009-11-19 18:51:43 -07:00
Joel Dice
fdde34694c
use atomic operations in MyHeap::mark to avoid need for mutex
2009-11-19 18:13:00 -07:00
Joel Dice
6475beda83
don't null out array in HashMap when size drops to zero
...
As in ArrayList, we want to avoid thrashing in cases where the map is frequently emptied and refilled.
2009-11-19 12:55:53 -07:00
Joel Dice
adcac443e4
don't null out array in ArrayList when size goes to zero
...
This avoids thrashing in the case of a list which is frequently
emptied and refilled with a small number of elements.
2009-11-19 11:43:11 -07:00
Joel Dice
c711ac5701
return null from NewString[UTF] if the char* parameter is null
2009-11-18 11:01:47 -07:00
Joel Dice
3862128a3a
tolerate EINTR in ServerSocketChannel.accept implementation
...
On POSIX systems, Avian sends a special signal to a thread to
implement Thread.getStackTrace() when called from a different thread.
If the target thread is blocked on a call to accept when this happens,
it will return -1, with errno set to EINTR. Instead of treating this
as an error, we now just loop and call accept again.
2009-11-16 17:23:09 -07:00
Joel Dice
5b8a7ca566
temporarily disable use of SSE on 32-bit systems until a bug involving memory<->SSE-register moves is fixed
2009-11-04 15:16:06 +00:00
Joel Dice
fb5796b740
don't use SSE for long-to-double conversion on 32-bit systems
2009-11-04 00:02:38 +00:00
Joel Dice
ef9c1ee32c
specify -arch explicitly to compiler and liner on OS X
...
On 10.6 the compiler generates x86_64 code by default, even though uname -m reports "i386", so we have to be explicit
2009-11-03 16:07:13 -07:00
Joel Dice
d56713dc13
refer to ProGuard 4.4 instead of 4.3 in readme.txt
2009-11-03 15:10:30 -07:00
Joel Dice
82d2be8e71
implement JavaVM::AttachCurrentThreadAsDaemon
2009-11-03 14:52:14 -07:00
Joel Dice
4566e7a7dd
avoid infinite loop in deadWord
2009-11-03 14:14:27 -07:00
Joel Dice
ed4206b06d
fix order-of-operations bug in compile loop
...
The code was capturing branch snapshots too early - before the call to
populateSources which might perform further moves.
2009-11-02 21:11:39 -07:00
Joel Dice
ef00ff80ef
avoid EAGAIN or EWOULDBLOCK errors due to SocketSelector.wakup being called many times between calls to select
2009-10-30 08:55:55 -06:00
Joel Dice
e825da60aa
update continuation constants to reflect new field offsets
2009-10-30 00:45:46 +00:00