Commit Graph

1982 Commits

Author SHA1 Message Date
Joel Dice
cfd9dc6656 fix bug which failed to preserve source site during multi-word move
The compiler was failing to freeze the source site containing the
value of the second word in a multi-word move, leading to mis-compiled
code in some cases.
2012-06-26 08:39:23 -06:00
Joel Dice
ac16a1a2ad Merge remote branch 'oss/armvfp' 2012-06-20 08:35:09 -06:00
Joel Dice
65e7a911b5 fix incorrect 32-bit TargetThreadThunkTable value 2012-06-18 19:25:01 -06:00
Joel Dice
886dd184aa fix incorrect stack unwinding for asynchronous stack traces
Our Thread.getStackTrace implementation is tricky because it might be
invoked on a thread executing arbitrary native or Java code, and there
are numerous edge cases to consider.  Unsurprisingly, there were a few
lingering, non-fatal bugs revealed by Valgrind recently, one involving
the brief interval just before and after returning from invokeNative,
and the other involving an off-by-one error in x86.cpp's nextFrame
implementation.  This commit fixes both.
2012-06-18 14:27:18 +00:00
Joel Dice
4512a9a38e implement NewObjectA, Get<type>MethodA, and GetStatic<type>MethodA 2012-06-15 17:41:40 -06:00
Joel Dice
c00f811a2f initialize count_ from starting point in MyStackWalker(MyStackWalker*)
When we're initializing a stack walker based on an existing instance,
we should initialize all the fields from that instance, including
count_.
2012-06-14 09:58:20 -06:00
Joel Dice
5a5a6a7795 fix C++11 errors and aliasing warning 2012-06-13 19:10:28 -06:00
JET
f0c4762ded ARM VFP support: Almost finished.
All but one test (and just one line therein) are passing.  Several
quirks and optimizations must also be addressed.
2012-06-12 17:00:45 -06:00
Joel Dice
7bfb5a6287 fix native method name ambiguity
sun.misc.Unsafe now has two native getByte methods: one which takes a
long and another which takes an Object and a long.  Thus, we need to
decorate each version with its parameter signature so we don't
accidentally call the wrong one at runtime.
2012-06-12 16:33:31 -06:00
Joel Dice
9dd3d04324 fix unused parameter warning in interpret.cpp 2012-06-12 16:32:53 -06:00
Joel Dice
06f7746dfd fix mode=debug build for recent OpenJDK versions 2012-06-12 16:32:27 -06:00
Joel Dice
fa8ba2afc8 fix build for recent versions of OpenJDK 7
As of the latest code from the jdk7u-dev Mercurial repository,
java.lang.String no longer has offset or length fields.  Instead, the
content fits exactly into the backing char array, so offset is
implicitly zero and length is the length of the array.  The VM
previously relied on those fields being present, whereas this commit
handles the case where they are not.

In addition, I've made some changes to openjdk-src.mk to ensure that
we can build against both a stock OpenJDK 7 and an IcedTea-patched
version.
2012-06-11 23:30:22 +00:00
Joel Dice
165986841e fix endianess bug in LZMA decoding 2012-06-06 12:58:24 -06:00
Joel Dice
ba6ca031bb fix handling of no-argument options in bootimage.cpp 2012-06-05 13:53:13 -06:00
Joel Dice
f6299fdfe6 fix bootimage build regression 2012-06-05 13:33:29 -06:00
JET
11d750af70 single-precision hardfloat emission working
anything involving doubles (including conversions and thunking from
singles) is still broken
2012-06-04 12:39:53 -06:00
JET
714aebfec1 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into armvfp 2012-06-04 12:39:45 -06:00
Joel Dice
d61501453f add support for LZMA on Windows 2012-06-02 15:43:42 -06:00
Joel Dice
5d9f7b2bc3 add optional LZMA support for compressing embedded JARs, boot images, and shared objects 2012-06-02 09:06:22 -06:00
Joel Dice
bd7ef24734 pass -std=c++11 to Clang for C++ code 2012-06-01 17:57:42 -06:00
Joel Dice
879df617df add use-clang option for building with LLVM Clang instead of GCC
This also fixes several errors and warnings emitted by Clang.
2012-06-01 17:43:42 -06:00
Joel Dice
b78c772ffb fix C++11 narrowing conversion errors 2012-06-01 11:46:56 -06:00
JET
22abdd6e19 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into armvfp 2012-05-29 17:15:01 -06:00
Joshua Warner
5d6899a867 fix warning in disassembler code
Apple's GCC is more picky about undefined ordering (and rightfully so)...
2012-05-24 08:36:21 -06:00
Joshua Warner
7bd3ea1892 add simple disassembler for debugging 2012-05-22 13:58:53 -06:00
JET
2d20173224 added immediate to bkpt instruction 2012-05-17 18:39:40 -06:00
JET
b96fc05a61 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into armvfp
Conflicts:
	src/arm.cpp
2012-05-17 12:22:18 -06:00
Joel Dice
0addd8c814 update copyright years 2012-05-11 17:43:27 -06:00
Joel Dice
f0152f1d33 Merge branch 'jdk7' 2012-05-11 16:41:18 -06:00
Joel Dice
90fae940a7 throw IncompatibleClassChangeError on unexpected static status
If a class references a field or method as static and we find it's
actually non-static -- or vice-versa -- we ought to throw an error
rather than abort.
2012-05-11 13:19:55 -06:00
Joshua Warner
362d6594a8 fix minor memory leak with default bootimage symbols 2012-05-11 09:06:51 -06:00
Joshua Warner
3dcf886bbe allow passing bootimage / codeimage start and end symbol names to the bootimage-generator
The usage statement for the bootimage-generator now looks like this:
build/linux-x86_64-bootimage/bootimage-generator \
  -cp <classpath> \
  -bootimage <bootimage file> \
  -codeimage <codeimage file> \
  [-entry <class name>[.<method name>[<method spec>]]] \
  [-bootimage-symbols <start symbol name>:<end symbol name>] \
  [-codeimage-symbols <start symbol name>:<end symbol name>]
2012-05-10 14:49:59 -06:00
Joshua Warner
fa9814b86d remove lots of unnecessary sizeof computations with a convenient 'operator new' overload 2012-05-08 16:14:54 -06:00
Joshua Warner
64b9407420 Merge branch 'master' into jdk7 2012-05-07 15:05:56 -06:00
Joshua Warner
fde7a3e7a1 give virtualThunks names based on index, to avoid conflicts 2012-05-07 15:05:40 -06:00
Joshua Warner
7c38ea75e4 give thunks symbol names in the bootimage build, use Heap::allocate instead of malloc 2012-05-07 10:00:59 -06:00
Joel Dice
4a4b82d959 Merge remote branch 'oss/master' into jdk7 2012-05-04 20:24:27 -06:00
Joel Dice
797b4c25cc fix OpenJDK bootimage build regression 2012-05-04 20:13:26 -06:00
Joel Dice
189340954a fix build regression due to last merge 2012-05-04 18:59:15 -06:00
Joel Dice
5ef5158bc1 Merge remote branch 'oss/master' into jdk7 2012-05-04 18:54:31 -06:00
Joel Dice
ea4e0a2f5d fix a couple of subtle Thread.getStackTrace bugs
The first problem was that, on x86, we failed to properly keep track
of whether to expect the return address to be on the stack or not when
unwinding through a frame.  We were relying on a "stackLimit" pointer
to tell us whether we were looking at the most recently-called frame
by comparing it with the stack pointer for that frame.  That was
inaccurate in the case of a thread executing at the beginning of a
method before a new frame is allocated, in which case the most recent
two frames share a stack pointer, confusing the unwinder.  The
solution involves keeping track of how many frames we've looked at
while walking the stack.

The other problem was that compareIpToMethodBounds assumed every
method was followed by at least one byte of padding before the next
method started.  That assumption was usually valid because we were
storing the size following method code prior to the code itself.
However, the last method of an AOT-compiled code image is not followed
by any such method header and may instead be followed directly by
native code with no intervening padding.  In that case, we risk
interpreting that native code as part of the preceding method, with
potentially bizarre results.

The reason for the compareIpToMethodBounds assumption was that methods
which throw exceptions as their last instruction generate a
non-returning call, which nonetheless push a return address on the
stack which points past the end of the method, and the unwinder needs
to know that return address belongs to that method.  A better solution
is to add an extra trap instruction to the end of such methods, which
is what this patch does.
2012-05-04 18:51:58 -06:00
Joel Dice
19de383aae Merge branch 'master' into jdk7
Conflicts:
	makefile
2012-05-04 11:33:16 -06:00
Joel Dice
58691a7fdb fix native Windows build
For some reason, Cygwin's MinGW-W64 compilers end up pulling in our
version of process.h from unistd.h.  That doesn't really make sense --
it should use the one from the sysroot, but we can work around it by
just not including unistd.h, since it's not needed on Windows anyway.
2012-05-03 14:55:51 -06:00
Joshua Warner
8c0ef382f8 write out bootimage directly from the bootimage-generator, eliminating one of the steps in a custom bootimage build 2012-05-03 12:04:34 -06:00
Joshua Warner
9cbd67ec61 darwin doesn't have <malloc.h>, apparently 2012-05-03 10:13:56 -06:00
Joshua Warner
53225edbfe remove debug logging 2012-05-03 10:13:56 -06:00
Joshua Warner
5724baad41 free symbol names after writing codeimage 2012-05-03 10:13:56 -06:00
Joshua Warner
a09736e749 write java symbols to bootimage 2012-05-03 10:13:56 -06:00
Joshua Warner
b742c58055 directly emit codeimage as a object (binaryToObject is statically linked in), as a stepping stone to including extra symbols in said codeimage 2012-05-03 10:13:55 -06:00
Joshua Warner
99bc9b1d55 prettify SymbolInfo array 2012-05-03 10:13:55 -06:00