Commit Graph

2700 Commits

Author SHA1 Message Date
Joel Dice
3e5a7d9a41 reset immortal fixed objects when heap is disposed
This should ensure that the bootimage is ready to reuse by another
instance of the VM later on.
2011-11-11 17:37:40 -07:00
Joel Dice
7d185dd27d revert heap.cpp part of last commit
That change seems to be causing crashes under certain circumstances,
so I'm reverting it for now while I debug.
2011-11-10 15:27:34 -07:00
Joel Dice
4d0b127989 support multiple sequential VM instances with bootimage build
Until now, the bootimage build hasn't supported using the Java
invocation API to create a VM, destroy it, and create another in the
same process.  Ideally, we would be able to create multiple VMs
simultaneously without any interference between them.  In fact, Avian
is designed to support this for the most part, but there are a few
places we use global, mutable state which prevent this from working.
Most notably, the bootimage is modified in-place at runtime, so the
best we can do without extensive changes is to clean up the bootimage
when the VM is destroyed so it's ready for later instances.  Hence
this commit.

Ultimately, we can move towards a fully reentrant VM by making the
bootimage immutable, but this will require some care to avoid
performance regressions.  Another challenge is our Posix signal
handlers, which currently rely on a global handle to the VM, since you
can't, to my knowledge, pass a context pointer when registering a
signal handler.  Thread local variables won't necessarily help, since
a thread might attatch to more than one VM at a time.
2011-11-10 13:33:36 -07:00
Ben Limmer
f1b0d995a8 Fixed bug where calling Process.destroy() on a PID that no longer exist kills all processes in Pgroup. 2011-11-09 13:18:04 -07:00
Joel Dice
6e86ac39db fix native call marshalling on Apple/ARM
When the fourth argument is a 64-bit value on the Apple ARM ABI, it is
passed half by register and half on the stack, unlike on Linux where
it is passed entirely on the stack.  The logic to handle this in arm.h
was flawed, and this commit fixes it.
2011-11-07 17:14:41 -07:00
Joel Dice
a2c6cc8882 implement ConcurrentLinkedQueue.clear 2011-11-07 15:52:42 -07:00
Joel Dice
bcb62af2a1 fix java-lang.cpp iOS build 2011-11-04 09:37:24 -06:00
Joel Dice
21cc4c6a87 implement AbstractList.indexOf 2011-11-04 08:27:11 -06:00
Joel Dice
4026ad208c update makefile to point to iPhoneOS5.0.sdk 2011-11-04 08:25:26 -06:00
Joel Dice
6153a5c83b Merge remote-tracking branch 'git/master' 2011-11-04 08:11:14 -06:00
JET
2b2a2e9446 Completion of previous fix. 2011-11-03 19:30:44 -06:00
JET
216b9a05ea RandomAccessFile now correctly reports lengths for growing files. 2011-11-03 13:39:24 -06:00
Joshua Warner
90dc552463 implement Process.destroy 2011-11-03 12:30:51 -06:00
Joshua Warner
76f57fc931 Merge branch 'master' of ssh://git.ecovate.com/avian 2011-11-03 09:43:34 -06:00
JET
3b1c769d2b Fixed RandomAccessFile to update position after reads. 2011-10-24 09:01:17 -06:00
JET
39bee886e3 ByteBuffer and InputStream now better match the standard. 2011-10-20 13:45:47 -06:00
Joel Dice
8501ce8711 avoid using runtime-generated thunks for bootimage native methods 2011-10-03 08:05:49 -06:00
Joel Dice
5c39819cf0 fix uninitialized value warnings in bootimage.cpp 2011-10-03 08:05:25 -06:00
Joel Dice
248ff26581 fix thinko in machine.cpp 2011-10-03 08:04:58 -06:00
Joel Dice
db9f9a300d Revert "remove distinction between thunks and bootThunks in compile.cpp"
This reverts commit 88d614eb25.

It turns out we still need separate sets of thunks for AOT-compiled
and JIT-compiled code to ensure we can always generate efficient jumps
and calls to thunks on architectures such as ARM and PowerPC, whose
relative jumps and calls have limited ranges.
2011-10-01 18:11:02 -06:00
Joel Dice
043e466921 change bool field types to uint8_t in Fixie class
The bool type is 32 bits on Darwin/PowerPC, unlike other platforms.
To make bootimage creation consistent, we now use an explicit 8-bit
type.
2011-09-30 18:46:54 -06:00
Joel Dice
d89a96ae6d use absolute path for test-executable in makefile
This is necessary to avoid crashes on OS X due to
CFBundleGetMainBundle and friends not behaving well otherwise.
2011-09-30 18:46:54 -06:00
Joel Dice
ad22de6d73 fix uninitialized variable in bootimage.cpp 2011-09-30 18:46:53 -06:00
Joel Dice
ed6945dec7 fix offset calculations in arm.cpp and powerpc.cpp 2011-09-30 18:46:53 -06:00
Joel Dice
5f05110f33 fix type of TargetPointerMask 2011-09-30 17:00:45 -06:00
Joel Dice
df4626c260 fix Windows cross build 2011-09-30 15:21:12 -06:00
Joshua Warner
21c1ea53ae Merge branch 'master' of ssh://git.ecovate.com/avian 2011-09-30 14:56:01 -06:00
Joel Dice
b063f10ad5 fix Windows build 2011-09-30 14:44:25 -06:00
Joel Dice
88d614eb25 remove distinction between thunks and bootThunks in compile.cpp
Now that the AOT-compiled code image is position-independent, there is
no further need for this distinction.  In fact, it was harmful,
because we were still using runtime-generated thunks when we should
have been using the ones in the code image.  This resulted in
EXC_BAD_ACCESS errors on non-jailbroken iOS devices.
2011-09-30 13:17:28 -06:00
Joel Dice
b862f5f90a add bare-bones UUID implementation 2011-09-29 18:27:34 -06:00
Joel Dice
296cb74847 add bare-bones ConcurrentLinkedQueue implementation 2011-09-29 18:26:50 -06:00
Joel Dice
a8bb0d074b implement first() and last() in TreeSet 2011-09-29 18:25:41 -06:00
Joel Dice
84bcbbcaa3 implement asReadOnlyBuffer and getShort(int) in ByteBuffer 2011-09-29 18:25:03 -06:00
Joel Dice
61457dca70 add workaround for buffer overflow on iOS Simulator
It seems that the Apple iOS Simulator's stat implementation writes
beyond the end of the struct stat we pass it, which can clobber
unrelated parts of the stack.  Perhaps this is due to some kind of
header/library mismatch, but I've been unable to track it down so far.
The workaround is to give it 8 words more than it should need, where 8
is a number I just made up and seems to work.
2011-09-29 18:23:15 -06:00
Joel Dice
4e4d109787 fix regression in static field offset calculation
One of the changes in commit 5b4f179 broke this calculation.
2011-09-28 11:12:21 -06:00
Joel Dice
0372d999d3 use TargetBytesPerWord instead of BytesPerWord where appropriate 2011-09-23 23:25:52 -06:00
Joel Dice
3fa4a7001d fix x86->powerpc boot image cross build
This fixes the remaining cross-endian translation issues needed to
build powerpc boot images on x86.
2011-09-23 22:31:24 -06:00
Joel Dice
e6c780e4e8 whitespace tweak for usage message in bootimage.cpp 2011-09-23 22:31:24 -06:00
Joel Dice
21d1a6c883 add __attribute__ ((used)) to EXPORT macro definition
This ensures that exported functions are not stripped when using the
-dead_strip option to the Apple linker.
2011-09-22 16:57:44 -06:00
Joel Dice
70c65c7053 update bootimage instructions in readme.txt 2011-09-20 20:03:16 -06:00
Joel Dice
559af69269 various ARM fixes 2011-09-20 19:50:38 -06:00
Joel Dice
c537dcfd34 generate read-only code image in bootimage build
This avoids the requirement of putting the code image in a
section/segment which is both writable and executable, which is good
for security and avoids trouble with systems like iOS which disallow
such things.

The implementation relies on relative addressing such that the offset
of the desired address is fixed as a compile-time constant relative to
the start of the memory area of interest (e.g. the code image, heap
image, or thunk table).  At runtime, the base pointer to the memory
area is retrieved from the thread structure and added to the offset to
compute the final address.  Using the thread pointer allows us to
generate read-only, position-independent code while avoiding the use
of IP-relative addressing, which is not available on all
architectures.
2011-09-20 16:30:30 -06:00
Joel Dice
349d381d95 progress towards cross-endian bootimage builds
This fixes a number of bugs concerning cross-architecture bootimage
builds involving diffent endianesses.  There will be more work to do
before it works.
2011-09-16 20:53:08 -06:00
Joel Dice
178dd7af34 Merge remote branch 'origin/master' into ios 2011-09-16 20:46:03 -06:00
Joel Dice
d342c9b8c5 fix 64-bit Windows openjdk-src build 2011-09-16 19:01:14 -06:00
Joel Dice
029a9ca507 fix MinGW (non-w64) build
Commit a2dca0dc fixed the MinGW-w64 openjdk-src build but broke the
traditional MinGW build.  This should ensure that both work.
2011-09-16 18:42:18 -06:00
Joel Dice
9ac8117d04 Merge remote branch 'origin/release_6.3.35' 2011-09-15 11:26:47 -06:00
Joel Dice
17a376c966 only generate crash dumps for access violations and divides-by-zero
Some apps and libraries may generate recoverable SEH exceptions on
Windows, in which cases we don't want to waste time and disk space
generating memory dumps.
2011-09-15 11:26:09 -06:00
Joel Dice
916c96c2b9 fix access violation introduced in last commit 2011-09-14 13:27:17 -06:00
Brian Haar
446c09dd33 Fix for File.length() integer overflow on 32-bit Windows.
The File.length() method was returning a signed 32-bit value
on 32-bit Windows systems.  This was causing an integer overflow
on file sizes greater than 2 GB.  This appears to be caused by
the way Windows handles the STAT() function.  This patch checks
whether the current platform is Windows then uses the Windows API
to get the correct file size and return it as a jlong.
2011-09-14 13:18:20 -06:00