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