Commit Graph

2771 Commits

Author SHA1 Message Date
Timofey Lagutin
97734af72d classpath-openjdk: Fix getZipFileEntry()
'addSlash' argument was incorrectly understood: it is supposed to add slash only on retry (see ZIP_GetEntry2() zip_util.c in OpenJDK).
2015-01-11 21:44:41 +03:00
Joel Dice
80ce92a999 fix iOS ARM64 build 2014-12-30 17:03:58 -07:00
Joel Dice
c9026a6053 add continuations support for ARM64
Also, replace some preprocessor conditionals with C++ conditionals and
add some todo comments and sample code for future work towards better
ABI compatibility in the JIT compiled code.
2014-12-30 15:31:52 -07:00
Joel Dice
e3ea60fc31 fix ARM64 tails=true build 2014-12-30 09:37:26 -07:00
Joel Dice
76bfcaa8c0 fix ARM64 bootimage=true build
This fixes a problem with atomically updating JIT-compiled static
calls to AOT-compiled code.  It turns out there was also a problem
with the 32-bit ARM code as well, but we never hit it because it is
extremely unlikely that a code address can be loaded with a single
immediate load instruction on 32-bit ARM since it can only handle
numbers with 8 significant bits.  I've fixed that as well.
2014-12-29 18:17:24 -07:00
Joel Dice
8c277e2af8 conditionally compile ARM operations based on TARGET_BYTES_PER_WORD
This fixes the codegen-targets=all build regression.
2014-12-29 14:47:31 -07:00
Joel Dice
d8b32f2c67 update CMakeLists.txt to fix CMake build 2014-12-29 12:25:56 -07:00
Joel Dice
ea0a108cd2 add todo comment regarding integer division 2014-12-29 12:16:55 -07:00
Joel Dice
cdcf173601 format recent changes using clang-format 2014-12-29 12:09:53 -07:00
Joel Dice
e3f50e6d67 fix ARM64 OffsetPromise::value
I must have done a search-and-replace from 4 to TargetBytesPerWord
earlier, but in this case it should have been the instruction size
(4), not the word size.
2014-12-29 11:07:26 -07:00
Joel Dice
98a1fefefc fix offset encoding for strhi instruction 2014-12-29 10:02:30 -07:00
Joel Dice
3e2545e5a7 more ARM64 bugfixes 2014-12-29 08:02:37 -07:00
Joel Dice
67f5461d82 more ARM64 bugfixes 2014-12-24 10:05:20 -07:00
Joel Dice
85fcbb82b3 more ARM64 bugfixes 2014-12-24 08:12:36 -07:00
Joel Dice
78735b35a8 more ARM64 bugfixes, more passing tests 2014-12-23 21:09:43 -07:00
Joel Dice
cbea966d1d various ARM64 JIT bugfixes
Three of the tests now pass.  Yay!
2014-12-23 16:59:04 -07:00
Joel Dice
9158ee39c0 remove 64-bit code from compile-arm.S since it's moved to compile-arm64.S 2014-12-23 16:57:40 -07:00
Joel Dice
b519e245e2 finish implementing operations64.cpp for ARM64 support
This is totally untested so far.
2014-12-22 12:59:27 -07:00
Joshua Warner
a6e88a8faa fix some merge-introduced problems 2014-12-22 12:59:27 -07:00
Joel Dice
123570515f snapshot of ARM64 instruction encoding work
Still not building, but more progress.
2014-12-22 12:59:26 -07:00
Joshua Warner
b3bd58aeff work in progress towards 64-bit ARM JIT support
This won't build, it's just a snapshot of what I have so far.

Conflicts:
	include/avian/codegen/architecture.h
	include/avian/codegen/registers.h
	src/codegen/compiler.cpp
	src/codegen/compiler/event.cpp
	src/codegen/compiler/site.cpp
	src/codegen/compiler/site.h
	src/codegen/registers.cpp
	src/codegen/target/arm/assembler.cpp
	src/codegen/target/arm/registers.h
2014-12-22 12:59:26 -07:00
Joshua Warner
5ce8c2ed54 fix compile-arm64.S when using the apple toolchain 2014-12-10 15:22:02 -07:00
Joshua Warner
a200d4d529 pull in initial version of compile-arm64.S, to fix arm64 build (untested)
Initial implementation courtesy Joel Dice (@dicej)
2014-12-10 15:14:47 -07:00
Joshua Warner
f8b9fcf198 split asm files by architecture (x86 -> i386,x86_64 ; arm -> arm,arm64) 2014-12-10 15:14:18 -07:00
Joshua Warner
8be7b6aeb3 correct THREAD_STATE_THREAD register for arm64 on darwin 2014-12-09 16:34:46 -07:00
Joshua Warner
46e445017e make sure binary-to-object doesn't generate empty objects for invalid format/architecture combinations 2014-12-09 14:56:59 -07:00
Joshua Warner
5e0f7590d9 fix process=interpret build for 'arch=arm64 platform=ios' 2014-12-09 14:56:59 -07:00
Joshua Warner
01de3d9d5c remove lingering 32-count limits on registers, refactor iteration, improve constants, ... 2014-12-09 11:18:00 -07:00
Joshua Warner
a749ba7adc replace (int8_t)Register cast with Register::index() 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
d4045629d7 Remove unnecessary (int8_t) casts in arm backend 2014-12-09 08:19:44 -07:00
Joshua Warner
08f524a106 add convenience (1 << lir::Operand::Type::*) shortcuts (lir::Operand::*Mask) 2014-12-09 08:19:44 -07:00
Joshua Warner
a3ccc94cf5 make BoundedRegisterMask a subclass of RegisterMask 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
6b889b1d78 get rid of implicit Register casts 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
7c24701d37 transition x86 registers to Register instances 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
3bad154602 add back NoRegister and remove some implicit int->Register casts 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
998a5168b7 make Register a class 2014-12-09 08:19:44 -07:00
joshuawarner32@gmail.com
02d1a83ad9 rename lir::Register to lir::RegisterPair 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
10442dc7d6 finish renaming lir:: types (fixup arm) 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
2939480a65 begin renaming lir:: types 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
94761711c9 make RegisterMask a class 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
87465e890b typedef Register and RegisterMask in arm 2014-12-09 08:19:43 -07:00
joshuawarner32@gmail.com
61e79d4f3b typdef Register 2014-12-09 08:19:43 -07:00
Joshua Warner
45cc85829a remove old 32-bit registerMask stuff 2014-12-09 08:19:43 -07:00
Joshua Warner
76197e1f1d typedef RegisterMask 2014-12-09 08:19:43 -07:00
Joshua Warner
a509575a86 remove unused arm utilities / constants 2014-12-09 08:19:43 -07:00
Joshua Warner
f187361889 rename RegisterMask to BoundedRegisterMask 2014-12-09 08:19:43 -07:00
Joshua Warner
1110d3ff50 begin converting to setLowHighRegisterMasks 2014-12-09 08:19:43 -07:00
Joshua Warner
ac72aa8b91 split low/high register mask in OperandMask 2014-12-09 08:19:42 -07:00
Joel Dice
d52d0f6d96 add process=interpret support for Linux/ARM64
This makes all the tests pass for the platform=linux arch=arm64
process=interpret build.  Next step: process=compile support.
2014-11-25 20:02:59 -07:00
Joshua Warner
0b89357968 Merge pull request #368 from dicej/printf-formats
use inttypes.h macros to determine printf format symbols if possible
2014-11-12 10:28:59 -07:00
Joel Dice
1b19dc2c4f use inttypes.h macros to determine printf format symbols if possible
This addresses a recent regression where different versions of
MinGW(-w64) had different opinions about whether to use e.g. %I64d or
%lld to print 64-bit integers on 32-bit platforms.
2014-11-11 14:13:26 -07:00
Timofey Lagutin
fd2cdafed3 builtin.cpp: Remove native Class.getDeclaringClass()
It's implemented in pure Java and is not used.
2014-11-07 14:40:31 +03:00
Joel Dice
adcaeb513c Merge pull request #363 from lostdj/patch-4
interpret.invokeNative(): call native function with a right signature
2014-10-31 07:16:04 -06:00
lostdj
b7abaf7a78 interpret.invokeNative(): call native function with a right signature 2014-10-31 12:22:13 +03:00
Joel Dice
347a56824a fix MSYS/MinGW build
MinGW defines __STRICT_ANSI__ when -std=c++0x is specified, which we
have to override in order to get e.g. strdup.  Also, we need to
specify -D_WIN32_WINNT=0x0500 to get post-Windows-2000 functions like
GetModuleHandleEx.  Finally, it seems that GCC 4.8.1 wants us to use
%I64d instead of %lld on Windows.
2014-10-27 09:39:53 -06:00
Joel Dice
82952b29d9 Merge pull request #360 from xranby/master
Implement JVM_FindClassFromCaller OpenJDK: 8015256: Better class accessibility
2014-10-27 08:48:42 -06:00
Xerxes Rånby
2e5990a6b0 OpenJDK: Implement JVM_FindClassFromCaller
8015256: Better class accessibility
Summary: Improve protection domain check in forName()

Signed-off-by: Xerxes Rånby <xerxes@gudinna.com>
2014-10-26 21:46:09 +01:00
Timofey Lagutin
d8f66a84ea jnienv.h: deleted redefinition of BOOTCLASSPATH_APPEND_OPTION 2014-10-25 17:43:46 +04:00
Joel Dice
d930fbcda2 ensure Object.notify is available for Android classpath build and reduce duplication 2014-10-10 07:38:41 -06:00
Joel Dice
1575b901d4 implement Class.getEnclosingClass 2014-10-09 08:01:42 -06:00
Joel Dice
fbcdfd6dec Merge remote-tracking branch 'dicej/android-upgrade' 2014-10-08 13:41:50 -06:00
Joshua Warner
03c1f43304 make x86 backend build on arm 2014-10-06 11:01:48 -06:00
Joel Dice
ffb0f9b345 provide slightly more complete Thread.nativeGetStatus implementation
This fixes SimpleFramework (which depends on Thread.getState returning
Thread.State.NEW for unstarted threads) when using the Android class
library.
2014-09-29 11:08:41 -06:00
Joel Dice
b406e9c2ed Merge remote-tracking branch 'origin/master' into android-upgrade 2014-09-24 10:59:39 -06:00
Joel Dice
f347414675 abort if JIT triggered when AVIAN_AOT_ONLY is defined
If AVIAN_AOT_ONLY is defined and the VM is asked to compile a method
anyway, we should abort immediately rather than let it crash later
(e.g. due to an access violation on a non-jailbroken iPhone).  This
makes debugging such issues a bit easier since the failure will come
earlier and with a more obvious cause.
2014-09-22 16:35:53 -06:00
Joel Dice
69d9ab004a implement JVM_isNaN
This method was previously unimplemented and untested.  However, the
JMH benchmark suite requires it, so now it's time to implement it.
2014-09-21 17:31:45 -06:00
Joel Dice
ce91905b33 fix segfault in BuiltinElement::dispose
If a BuiltinElement is never used (i.e. we never try to load anything
from it), its init method will never be called, and thus its backing
library will never be loaded.  In that case, we should not try to call
library->disposeAll() in the destructor.
2014-09-15 09:03:02 -06:00
Joel Dice
1ca3e9a549 add Avian_java_lang_Thread_nativeSetName stub 2014-09-15 08:57:30 -06:00
Joel Dice
6e209e2925 a couple of tweaks to get Mac/Android tests passing 2014-09-02 10:14:04 -06:00
Joel Dice
831c529a98 make Class.getMethod (and getConstructor) more strict about parameter types
This matches the JDK behavior.
2014-08-28 17:00:33 -06:00
Joel Dice
58cbf5face fix Android thread enumeration 2014-08-22 16:07:44 -06:00
Joel Dice
7f4c0b3118 fix SSL stack and Android JAR resource loading 2014-08-22 07:20:19 -06:00
Joel Dice
b96cc3c575 update to more recent version of Android class library
Lots has changed since we forked Android's libcore, so merging the
latest upstream code has required extensive changes to the
Avian/Android port.

One big change is that we now use Avian's versions of
java.lang.Object, java.lang.Class, java.lang.ClassLoader, some
java.lang.reflect.* classes, etc. instead of the Android versions.
The main reason is that the Android versions have become very
Dex/Dalvik-specific, and since Avian is based on Java class files, not
dex archives, that code doesn't make sense here.  This has the side
benefit that we can share more native code with classpath-avian.cpp
and reduce the amount of Java/C++ code duplication.
2014-08-21 13:42:49 -06:00
Joel Dice
32aefaf421 ensure Thread::flags is always updated atomically
Since this field is sometimes updated from other threads, it is
essential that we always update it atomically.
2014-08-20 09:49:00 -06:00
Joel Dice
8b83de8985 add avian.Machine.tryNative
This function allows you to call native code such that any
SIGSEGV/SIGBUS/SIGFPE/EXC_ACCESS_VIOLATION/etc. raised by that code is
transformed into a Java exception and thrown by tryNative.  Note that
this effectively results in a longjmp out of whatever function raised
the exception, so any C++ destructors or other cleanup code will not
be run.
2014-08-19 14:03:46 -06:00
Joshua Warner
0c464f3f84 Merge pull request #328 from dicej/windows
Windows
2014-08-19 12:53:59 -06:00
Joel Dice
42ae8cbe39 fix openjdk-src Windows build regression 2014-08-19 11:49:18 -06:00
Joshua Warner
62983ebd7a Merge pull request #326 from dicej/gc-jvmfillinstacktrace
fix GC safety bug in jvmFillInStackTrace
2014-08-19 11:06:31 -06:00
Joel Dice
f94157aa38 fix GC safety bug in jvmFillInStackTrace
This fixes spurious Trace test failures with openjdk-src build.
2014-08-19 10:14:07 -06:00
Joshua Warner
5210cbaa54 use prototype for __clear_cache across all linux-arm systems, not just android 2014-08-19 08:53:21 -06:00
Joel Dice
5b618982b5 explicitly override UNUSED definition
Recent versions of jni.h such as the one provided by Debian Jessie's
OpenJDK define UNUSED in a way that conflicts with our definition and
usage, so we need to explicitly undefine it before redefining it to
avoid compiler noise.
2014-08-17 15:34:44 -06:00
Joel Dice
1fb297775c fix clang "always true" warning in lzma/main.cpp 2014-08-11 08:40:08 -06:00
Joel Dice
8c1e7d48ad fix bootimage lzma build
We were using the length of the uncompressed boot image when
generating the object file, whereas we should have been using the
compressed length.
2014-08-04 17:21:23 -06:00
Joel Dice
60ea4b2cc2 Merge pull request #317 from joshuawarner32/cmake-vs
Get cmake build working with visual studio 2013
2014-07-31 08:16:48 -06:00
Joshua Warner
e92230c89c use c++11-conformant _WIN32 test macro 2014-07-30 16:05:30 -06:00
Joshua Warner
ce1a5f5c28 fix macosx arch=i386 process=interpret build 2014-07-30 14:15:22 -06:00
Joshua Warner
d8e0f5cc06 fix zlib headers / linking for windows 2014-07-30 14:15:22 -06:00
Joshua Warner
ef3f77695c use inline asm for sse detection 2014-07-30 14:15:22 -06:00
Joshua Warner
51b510cbea first pass at cmake + visual studio support 2014-07-30 14:15:15 -06:00
Joel Dice
9f182d4613 Merge pull request #316 from bigfatbrowncat/fixing-windows-build
Fixed Android build on Windows
2014-07-29 08:43:39 -06:00
Vasily Litvinov
d668c6a259 Fixed Android build on Windows 2014-07-29 13:01:51 +04:00
Joshua Warner
857c155980 Merge pull request #313 from dicej/lzma-bootimage
fix LZMA/bootimage build
2014-07-28 09:49:08 -06:00
Joel Dice
a1e9315fa2 fix LZMA/bootimage build
This includes some tweaks to README.md and makefile to ensure the
directions in the former for building a bootimage actually work.
2014-07-28 09:19:39 -06:00
Joel Dice
b811ca60c1 Merge pull request #291 from joshuawarner32/cpp11
Begin using c++11 features
2014-07-24 13:13:30 -06:00
Joel Dice
bcbce54b9e fix iOS build when using recent versions of OpenJDK 7
This is based on recent feedback on the Avian group.  I've tested it
using both OpenJDK 7u40 and 7u60.
2014-07-24 11:20:17 -06:00
Joshua Warner
31de9a48c9 reformat 2014-07-24 10:09:29 -06:00
Joshua Warner
1ad1fe9048 use enum class in ir 2014-07-24 10:09:29 -06:00
Joshua Warner
060b5c8f13 use c++11 variadic templates in Compiler::call 2014-07-24 10:09:29 -06:00
Joshua Warner
d8ddc95315 use c++11 enhanced-for and auto in type-generator 2014-07-24 10:09:29 -06:00
Joshua Warner
d48093b777 fix unused variable warning when building with cmake 2014-07-24 09:42:44 -06:00