Commit Graph

255 Commits

Author SHA1 Message Date
Joel Dice
2343483d8e Merge branch 'master' of oss:/var/local/git/avian into powerpc 2008-07-13 12:47:49 -06:00
Joel Dice
e31f795661 include Thread::backupHeapIndex in heap footprint calculation 2008-07-11 19:21:53 -06:00
Joel Dice
23043d140f snapshot 2008-07-05 14:21:13 -06:00
Joel Dice
61e65098df use virtual dispatch when calling Thread.run from VM 2008-06-25 10:28:11 -06:00
Eric Scharff
2bfe6f0d13 Ensure we align the stack before any time we might enter a C function from
generated code
2008-06-16 10:55:29 -06:00
Joel Dice
7dcd109567 assert thread is in exclusive or exit state in removeMonitor 2008-05-05 07:07:59 -06:00
Joel Dice
ebb498587f enter exclusive state in collect function instead of requiring caller to enter that state before calling 2008-05-05 07:04:53 -06:00
Joel Dice
d072b71c39 nth attempt to clean up MyStackWalker 2008-04-23 10:33:31 -06:00
Joel Dice
df5258d1d8 various bugfixes concerning Thread.getStackTrace 2008-04-21 16:36:13 -06:00
Joel Dice
0d3e6b7793 simplify memory allocation interfaces 2008-04-13 12:15:04 -06:00
Joel Dice
04c3abc967 fix broken thread tree traversal in machine.cpp 2008-04-11 16:48:05 -06:00
Joel Dice
2d6eebf4d1 more progress on general stack tracing 2008-04-09 13:08:13 -06:00
Joel Dice
3915371897 Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-02 06:58:19 -06:00
Joel Dice
6379f50d35 fix thinko in stringChars 2008-04-02 06:57:25 -06:00
Joel Dice
0aebe334b3 Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-01 17:25:18 -06:00
Joel Dice
08b401f337 implement GetStringLength, GetStringChars, and ReleaseStringChars 2008-04-01 17:24:43 -06:00
Joel Dice
1c49b3bc1b Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-01 11:38:15 -06:00
Joel Dice
907382bcee fix broken field alignment in parseFieldTable which caused longs to overlap other fields on 32-bit systems in certain cases 2008-03-31 18:34:57 -06:00
Joel Dice
74295bb707 interpret avian.bootstrap property as a complete file name 2008-03-31 12:57:49 -06:00
Joel Dice
357bd29460 support building Avian as a self-contained dynamic library 2008-03-30 21:43:43 -06:00
Joel Dice
9cb21a29a6 fix handling of interface vtables for abstract classes 2008-03-21 17:42:36 -06:00
Joel Dice
56389dd2e1 don't populate interface vtables for abstract classes 2008-03-20 18:37:21 -06:00
Joel Dice
2edaa82801 prepend copyright notice and license to all source files; add license.txt and readme.txt 2008-02-19 11:06:52 -07:00
Joel Dice
d693393293 remove Machine::lastLibrary and rename firstLibrary to libraries 2008-01-29 08:19:15 -07:00
Joel Dice
008ac07079 refactor native method resolution to be simpler and more robust 2008-01-28 10:27:02 -07:00
Joel Dice
de6a1ded92 ensure that we populate the interface vtables of a class which does not declare any new virtual methods but does implement new interfaces relative to its superclass 2008-01-28 08:12:06 -07:00
Joel Dice
e403a625d1 second try to fix library symbol lookup 2008-01-25 16:38:26 -07:00
Joel Dice
35ada0ea65 search libraries for symbols in the order they are loaded 2008-01-25 16:25:30 -07:00
Joel Dice
73ba3fcef7 fix build breakage in stress mode 2008-01-23 09:55:29 -07:00
Joel Dice
125fe3440e allow java.lang.Object with no virtual methods, which may occur due to code shrinking 2008-01-21 16:42:12 -07:00
Joel Dice
ee60d48cfe fix subtle bug in hashMapInsert which caused us to update the old array previously associated with the hash map, whereas a GC causes the table to be resized when a weak reference is removed and thus a new array used 2008-01-19 13:12:16 -07:00
Joel Dice
d97fab6036 comment out some debugging log messages 2008-01-18 18:49:30 -07:00
Joel Dice
35160e46d8 don't include embedded boot classpath in libvm.a, only the executable 2008-01-18 17:54:36 -07:00
Joel Dice
e2fc8a62c7 permit state transitions from idle to exclusive 2008-01-17 18:47:32 -07:00
Joel Dice
9ad00d0ea3 remove unused function and add some thread state assertions 2008-01-17 18:27:44 -07:00
Joel Dice
f5f7b01689 remove extern "C" modifier from vmPrintTrace definition 2008-01-16 10:48:14 -07:00
Joel Dice
4571e75f7a add vmPrintTrace function which can print a Java stack trace without allocating memory 2008-01-16 10:30:12 -07:00
Joel Dice
2f83468b80 remove context argument from Allocator::tryAllocate and Allocator::allocate, since we aren't using it after all 2008-01-14 16:37:24 -07:00
Joel Dice
0298865efa refactor memory allocation to allow better detection and handling of low-memory conditions 2008-01-13 15:05:08 -07:00
Joel Dice
8e5ce11047 refactor memory management code
We now support immortal objects, which the GC will scan for references
but not consider for collection.  On x86_64, we allocate JIT code memory
via mmap, which lets us map memory into the bottom 2GB of the address
space, ensuring that 32-bit relative jumps and calls work.
2008-01-09 18:20:36 -07:00
Joel Dice
e4fbadd051 JIT-related GC safety fixes 2007-12-16 15:41:07 -07:00
Joel Dice
12e10b57f5 JIT bugfixes and new instructions; exception propagation and stack traces are functional but not yet entirely correct 2007-12-14 11:27:56 -07:00
Joel Dice
fdeafe46fd 2+2 test now works with new JIT code 2007-12-11 14:26:59 -07:00
Joel Dice
d8374a76e2 check again for entry in monitorMap after entering the exclusive state in objectMonitor() in case another thread beat us to creating a monitor for the object 2007-11-29 08:03:45 -07:00
Joel Dice
5b6a63cbca avoid uninitialized value warnings 2007-11-27 16:04:15 -07:00
Joel Dice
5fa7b074b4 various threading bugfixes 2007-11-27 15:23:00 -07:00
Joel Dice
0bbe9489a7 flesh out call tracing in new JIT code 2007-11-26 16:15:53 -07:00
Joel Dice
49ed41daa0 refactor stack walking interface in processor.h and sketch stack walking implementation in compile2.cpp 2007-11-25 16:00:55 -07:00
Joel Dice
a017dab73a handle weak maps properly in hashMapResize, hashMapRemove, etc.; move Processor::parameterFootprint() into machine.h/machine.cpp 2007-11-20 15:24:02 -07:00
Joel Dice
313816ee34 minor tweaks to reduce memory usage 2007-11-06 08:29:05 -07:00
Joel Dice
fe0e542afe finish support for inline vtables in class objects; convert constant pools from arrays to singletons to reduce memory footprint 2007-11-05 14:40:17 -07:00
Joel Dice
f1bc2be9f9 if we can't resolve a bootstrap class in isAssignableFrom(), we swallow the exception and return false 2007-11-05 09:08:08 -07:00
Joel Dice
16ea75f91c preserve vm flags of bootstrap class (except for BootstrapFlag) in updateBootstrapClass() 2007-11-05 08:39:48 -07:00
Joel Dice
19d36cc463 implement impdep1 instruction for lazily loading bootstrap classes 2007-11-05 08:29:43 -07:00
Joel Dice
6c0e0c37e2 snapshot 2007-11-05 07:28:46 -07:00
Joel Dice
514be2dc87 snapshot 2007-11-04 16:10:33 -07:00
Joel Dice
94e9bd0fd2 clean up bootstrap type generation to eliminate redundancy (broken) 2007-11-04 14:15:28 -07:00
Joel Dice
7dfbd87a40 bugfixes 2007-11-02 15:42:19 -06:00
Joel Dice
e820b6a8a4 sketch of singleton support 2007-11-02 15:08:14 -06:00
Joel Dice
80775f6cf8 initial sketch of singleton support 2007-11-02 08:15:06 -06:00
Joel Dice
7f1837fecd move fixed object (mark and sweep) support into heap.cpp and refine algorithms for determining when and how much to GC 2007-10-28 13:14:53 -06:00
Joel Dice
60072b9fdc implement fixed object support 2007-10-27 19:54:30 -06:00
Joel Dice
fcc50f4da6 abort if vsnprintf() overflows in makeByteArray 2007-10-26 18:03:28 -06:00
Eric Scharff
6342fc7ccb Read 2- and 3-byte UTF8 constants gracefully (but not correctly) 2007-10-25 17:58:53 -06:00
Joel Dice
20cc788fa4 support classloading from jar files compiled into the executable 2007-10-25 16:06:05 -06:00
Joel Dice
d4656e8a52 handle ConstantValue attributes for static fields 2007-10-25 13:20:39 -06:00
Joel Dice
b12b779c7f add support for passing properties to the VM via JNI; use vm.builtins property to specify builtin libraries 2007-10-25 12:33:43 -06:00
Joel Dice
1c90ea5fd6 rewrite main.cpp to use jni.h interface for creating the VM and invoking the main method of the specified class 2007-10-25 09:04:13 -06:00
Joel Dice
92d61c1ba2 superficial tweak 2007-10-24 17:05:14 -06:00
Joel Dice
2c2718fdb5 primitive parseUtf8() implementation to ensure we handle null characters correctly, at least 2007-10-24 15:05:15 -06:00
Joel Dice
ac4b28ffe6 refactor build system to support cross-compiling 2007-10-22 14:56:27 -06:00
Joel Dice
3e84d4438a revise signatures of mark() and set() to take a target object and offset instead of a target object reference, paving the way for immovable objects 2007-10-22 11:22:30 -06:00
Joel Dice
29b5e81aed align fields naturally in parseFieldTable 2007-10-16 19:20:36 -06:00
Joel Dice
5f6258045e implement various floating point instructions; fix Floats.java to actually test something 2007-10-15 13:12:38 -06:00
Joel Dice
659555b6ce fix use of uninitialized values at root thread creation time when running in stress mode; allocate Thread::defaultHeap on the heap instead of as part of the Thread structure 2007-10-13 19:18:25 -06:00
Joel Dice
96c3b2b6a7 superficial code cleanup 2007-10-12 18:22:52 -06:00
Eric Scharff
05321e97f9 If you pass 0 to printTrace, it will print the stack trace of a null
pointer exception.  This dramatically simplifies debugging in GDB:

p vm::printTrace(t, 0)
2007-10-12 14:54:37 -06:00
Joel Dice
349fe47c8d JIT GC progress; fix interface method lookup bug 2007-10-12 11:56:43 -06:00
Joel Dice
d5a8193614 lots of work on stack mapping, plus a couple of bugfixes 2007-10-11 16:43:03 -06:00
Joel Dice
feeaecbfd8 more work on JIT unwinding 2007-10-04 16:41:19 -06:00
Joel Dice
404d996c1e snapshot 2007-10-03 18:41:54 -06:00
Joel Dice
45dc118ab9 invoke native methods using a common routine, instead of compiling code specific to each method 2007-10-01 09:19:15 -06:00
Joel Dice
7ecb5b9c30 fixes for various recent regressions 2007-09-30 10:32:17 -06:00
Joel Dice
8ae36c05b7 lots of new instructions and bugfixes 2007-09-29 20:48:27 -06:00
Joel Dice
569cfa9e07 implement more instructions; various bugfixes 2007-09-29 14:24:14 -06:00
Joel Dice
79603e284d sketch of Compiler.compileNative() and ifnull instruction implementation 2007-09-28 17:41:03 -06:00
Joel Dice
d1681c0918 add a few more instructions to compile.cpp and fix bugs in others; invokespecial and invokevirtual are working 2007-09-27 16:20:54 -06:00
Joel Dice
2f3f97d550 clean up compile.cpp and support both x86_64 and i386; further refactoring to support JIT 2007-09-26 17:23:03 -06:00
Joel Dice
e7c8fb645a JIT works for Instructions.java 2007-09-25 17:53:11 -06:00
Joel Dice
1c90708abf bugfixes for recent refactoring effort 2007-09-24 07:46:48 -06:00
Joel Dice
8d983c8a39 refactoring effort to pave the way for JIT compilation 2007-09-23 19:39:03 -06:00
Joel Dice
cd990969cd fix allocation of large objects in allocate2(); remove references to jscheme and SWT in makefile and test directory 2007-09-19 08:16:49 -06:00
Joel Dice
49a3c08cc9 use dlopen()/dlsym() to resolve builtin JNI methods 2007-09-18 17:30:09 -06:00
Joel Dice
b88438d2fd sketch of JAR support in Finder 2007-09-16 18:13:36 -06:00
Joel Dice
aec0c29084 fix math bug in parseFieldTable which lead to incorrect objectMasks 2007-09-15 11:22:22 -06:00
Joel Dice
b0926e71fb fix math errors when walking object map in collect()::Client::walk() 2007-09-13 16:45:09 -06:00
Joel Dice
542888a1d3 bugfixes 2007-09-12 21:15:16 -06:00
Joel Dice
7cb3a30a91 sketch of Runtime.exec() and Calendar; misc bugfixes 2007-09-12 18:21:37 -06:00
Joel Dice
e5987f2a22 JNIEnv and JavaVM method implementations 2007-09-10 17:33:58 -06:00
Joel Dice
a9f9755221 more JNIEnvVTable entries 2007-09-07 17:20:21 -06:00
Joel Dice
bd4d9fdeb2 several things: change object typedef to Object* instead of void* to improve type safety; add JNICALL attributes to JNI functions; implement additional JavaVM methods 2007-09-06 18:21:52 -06:00
Joel Dice
c6e1644281 fix bug in calculating GC footprint in new heap pool code 2007-08-22 20:24:25 -06:00
Joel Dice
00c611fcf9 Merge branch 'master' of dice:git/vm 2007-08-22 08:50:34 -06:00
Joel Dice
f148fd0668 add Machine::heapPool, allowing threads to acquire replacement heaps up to a point before forcing a GC 2007-08-22 08:50:29 -06:00
Joel Dice
a1caf06955 properly handle classes with no interface table in isAssignableFrom() 2007-08-21 22:03:03 -06:00
Joel Dice
e2f3e80bdf heap o' bugfixes 2007-08-19 20:57:32 -06:00
Joel Dice
59638543c7 various performance tweaks and bugfixes 2007-08-19 13:45:51 -06:00
Joel Dice
215a52ba54 simplify heap.cpp by allocating segments pessimistically 2007-08-18 15:24:29 -06:00
Joel Dice
aa5e751e69 clean up Array.get(), Array.set(), and Method.invoke() implementations 2007-08-18 11:53:30 -06:00
Joel Dice
71c7013808 more bugfixes 2007-08-14 07:27:10 -06:00
Joel Dice
587dbeb163 bugfixes 2007-08-13 20:35:49 -06:00
Joel Dice
d0e519d992 bugfixes 2007-08-13 19:44:47 -06:00
Joel Dice
ab3ca38580 various bugfixes 2007-08-13 18:37:00 -06:00
Joel Dice
d3931b4853 flesh out resource URL scheme implementation 2007-08-10 17:45:47 -06:00
Joel Dice
1997ea6b8c acquire class lock before running static initializer; wrap exceptions thrown from static initializers in ExceptionInInitializerError instances 2007-08-01 17:48:36 -06:00
Joel Dice
b56eed68be implement Thread.[get|set]ContextClassloader() 2007-07-31 18:08:20 -06:00
Joel Dice
38d4ee6e07 flesh out ClassLoader, etc. 2007-07-30 17:19:05 -06:00
Joel Dice
a2bd7d0668 GC stress fixes and other bugfixes; classpath progress 2007-07-29 17:32:23 -06:00
Joel Dice
d5a00c4556 break native hashMap type into hashMap and weakHashMap; start investgating GC stress failures related to or uncovered by new string interning support 2007-07-29 12:52:08 -06:00
Joel Dice
c96a4a5b39 implement String.intern() 2007-07-28 18:02:32 -06:00
Joel Dice
0e373727a2 implement Thread.interrupt() 2007-07-28 15:28:25 -06:00
Joel Dice
abd9c2bc8d fix primitive class resolution to avoid mistaking normal classes with names like 'B' for primitive classes 2007-07-28 10:55:24 -06:00
Joel Dice
41bee5829e misc. bugfixes and tweaks 2007-07-28 10:10:13 -06:00
Joel Dice
7212ba1c30 java/io bugfixes and coverage; jni bugfixes; minor refactoring 2007-07-26 18:06:05 -06:00
Joel Dice
9ab88ef619 a static jni method takes the jclass for that method as its second argument; simplify pad() and divide(), and rename divide() to ceiling(); sketch FileInputStream.cpp and FileOutputStream.cpp 2007-07-25 18:48:28 -06:00
Joel Dice
6b0792c881 exception handling and parseMethodTable() bugfixes 2007-07-24 19:56:05 -06:00
Joel Dice
ab47fa7884 fix member/parameter confusion in Thread::Thread() 2007-07-23 21:35:03 -06:00
Joel Dice
527f46d53d bugfixes; add NullPointerException.java 2007-07-23 21:31:28 -06:00
Joel Dice
823d764998 working reflection 2007-07-23 21:16:59 -06:00
Joel Dice
5f3bf175e0 start work on reflection; bugfixes 2007-07-23 19:44:20 -06:00
Joel Dice
fd770fd884 sketch a few more classpath classes 2007-07-21 14:44:39 -06:00
Joel Dice
48226f988c add a bunch of classes to classpath and flesh out a few existing ones 2007-07-21 11:50:26 -06:00
Joel Dice
de9213ce30 finish java/lang/ref/* support; add wrapper classes for primitives 2007-07-19 21:18:25 -06:00
Joel Dice
faf9b63798 more work on java/lang/ref/* support 2007-07-19 19:07:30 -06:00
Joel Dice
32dff71994 GC stress fixes 2007-07-19 17:45:44 -06:00
Joel Dice
65c876b5f7 more GC stress fixes 2007-07-17 19:33:00 -06:00
Joel Dice
b848c09a34 more GC stress fixes 2007-07-17 07:22:29 -06:00
Joel Dice
e3e9981031 more GC stress fixes 2007-07-16 19:55:49 -06:00
Joel Dice
6bac351874 more GC stress fixes 2007-07-16 18:23:23 -06:00
Joel Dice
6dec1cbd42 fix various bugs uncovered in GC stress test 2007-07-16 17:58:37 -06:00
Joel Dice
4670055b03 implement primitive testing framework and provide for GC stress testing 2007-07-15 19:03:02 -06:00
Joel Dice
3121002ffd implement Throwable.resolveTrace(); bugfixes 2007-07-14 12:37:04 -06:00
Joel Dice
2df8a60a78 support object arrays of various element types and dimensions; clean up weak hash map support 2007-07-14 11:31:01 -06:00
Joel Dice
0099aa396b make builtin class type a bootstrap version of java/lang/Class 2007-07-12 17:46:08 -06:00
Joel Dice
9a2dbe6596 fix handling of newly-tenured finalizers and weak references in postVisit() 2007-07-11 07:35:28 -06:00
Joel Dice
01d858e1bc more bugfixes, mainly monitor-related 2007-07-10 22:19:26 -06:00
Joel Dice
93748f2df9 heap o' bugfixes 2007-07-10 19:38:06 -06:00
Joel Dice
eba6a42700 replace Debug constant in machine.h with DebugMonitors 2007-07-10 17:34:53 -06:00
Joel Dice
3bffa44824 fix ordering bug in postVisit() and remove debug logging 2007-07-10 08:21:22 -06:00
Joel Dice
4decde57e6 more weak reference work, plus debug logging 2007-07-09 21:04:49 -06:00