Hi,

Please pull.

I broke some of the most recent changes to mainline (stack-trace printing),
that I will hopefully get around to fixing soon. For now, I really think
you should pull, simply because I am not able to keep up with tgrabiec and
ahuillet's patches anymore. And almost everything they do requires me to
change their code afterwards, requiring twice the amount of work.

'make test' and 'make regression' still pass, but both the build and the run-
time output has become quite a bit noisier.

I didn't remove jamvm/ or lib/ yet -- we don't really need to do it yet. That
code is not even being compiled for now. I will remove that soon. (So even
though 7.5k lines added looks like a lot, the full jamvm/ is more than 16.5k
in just .c files).

Things to note, code-wise:

 * struct classblock is now struct vm_class, and all vm_class "methods", i.e.
   functions that take a vm_class as the first argument and operates on it
   can be found in include/vm/class.h and vm/class.c and are prefixed with
   "vm_class_". Also, most functions that deal with classes should now pass
   struct vm_class * around directly, instead of passing struct object * and
   doing CB_CLASS() on the struct object *.

 * struct methodblock is now struct vm_method. All vm_method "methods" can be
   found in include/vm/method.h and vm/method.c and have the prefix
   "vm_method_".

 * struct object is now struct vm_object. All vm_object "methods/constructors"
   are found in include/vm/object.h and vm/object.c and have the prefix
   "vm_object_".

Ok. Please review and pull if this looks okay.


Vegard


The following changes since commit 597223c5b1ac19f179f9b7269296feee1f56d193:
  Arthur HUILLET (1):
        regression: add PrintTest test

are available in the git repository at:

  git://github.com/vegard/jato.git master

Pekka Enberg (1):
      regression: Introduce and use VM.exit()

Tomek Grabiec (1):
      scripts: allow file names in tests' OBJS list to have the same name

Vegard Nossum (209):
      cafebabe: initial version
      error: added "unexpected EOF" error message
      constant_pool: parse a few of the constant_pool tags
      field_info: added support for field_info parsing
      main: indicate position in file on error
      added deinit functions to plug memory leaks
      class: fix off-by-one error
      main: dump a bit of class info
      doc: added a simple README
      main: try to output the class declaration
      method: added method parsing
      class: make sure that the whole file is read
      constant_pool: parse the rest of the entry types too
      stream: fix off-by-one error that caused premature eof
      attribute_info: parse attributes
      add license and copyright headers to all files
      build: add cmake recipe for building and installing the library
      build: add "dump" program
      add some more access flag mnemonics
      class: move constant lookup functions
      dump: dump field and method names too
      build: rearrange source code
      doc: added doxygen configuration file
      attribute_info: fixed data type error
      constant_pool: don't allocate entries separately
      doc: fix file version filter command
      doc: some layout changes in generated documentation
      document the structures that are described in the JVM specification
      class: added functions for looking up fields and methods
      class: take const pointers
      dump: fix error in error handling
      java: add the skeleton of a java vm program
      class: return const pointer results
      java: also free the filename
      class: fix parsing of 64-bit constants
      Added a README.cafebabe for info about the project
      build: remove Jam VM .c files from the build
      build: reinclude vm/jato.c in build
      opcodes: generate opcode mnemonics using the JVM specification
      vm: remove old opcode mnemonic definitions
      build: add the cmake_minimum_required() annotation
      stream: add stream_malloc() with graceful error handling
      Use the new stream_malloc() function
      cafebabe: Added cafebabe as a git submodule
      cafebabe: make cafebabe the main 'java' program
      vm: add dummy functions for vm object functions
      vm: move NOT_IMPLEMENTED macro from object.c to Makefile
      jit: replace calls to class-loader interface with dummy calls
      vm: replace calls to class-loader interface with dummy calls
      jato: register native functions
      build: fix typo in NOT_IMPLEMENTED macro
      jato: prepare for method compilation
      class: changed get_field()/get_method() to return index instead of pointer
      attribute_info: introduce new attribute_array type
      stream: add functions for reading from a buffer
      stream: add function for skipping input
      stream: add function for returning a pointer to the current position
      code_attribute: add parser for code attributes
      class: remove old (unused) code
      attributes_array: fix a few errors
      build: include attribute_array and code_attribute
      java: add example code for parsing attribute arrays
      code_attribute: provide deinit function and fix memory leak
      java: deinit 'Code' attribute
      jato: use method index instead of pointer
      doc: updated README.cafebabe with more detailed plan
      vm: add vm_class/vm_method wrapper structures
      compilation_unit: use vm_method instead of methodblock
      Convert many callsites to use the new struct vm_method
      vm: actually execute the compiled bytecode
      vm: added function for parsing type descriptors
      method_info: add access flag definitions
      attribute_array: make lookup function start at a particular offset
      class: add get_method_ref function
      class: add get_name_and_type method
      Make method calls work
      class: reenable native functions
      doc: updated README.cafebabe
      vm: add simple classloader
      vm: when asked to resolve a class, consult the class loader
      jit: reimplement calling static methods (of other classes too)
      doc: update README.cafebabe
      vm: initialise stack usage parameters for native/abstract methods
      vm: fix error in "foreign method" resolution
      jit: make tracing work
      vm: switch from struct object to struct vm_object
      vm: implement class resolution function
      jit: fix convert_new to use the new class resolution function
      doc: updated README.cafebabe
      class: add get_field_ref
      Add getfield/putfield support by introducing struct vm_field
      vm: search superclass if method/field not found in current class
      vm: allocate some space for objects
      vm: copy class names in the classloader
      jit: get rid of stale warning
      vm: remove debug printout in vm_class
      vm: improve signature parsing/argument counting
      jit: convert a few immediate types from the constant pool
      field_info: added access flag definitions
      vm: run class initializers (<clinit> method)
      vm: provide java.lang.VMSystem.arraycopy native prototype
      jit: fixup convert_checkcast
      build: fix missing building of include/vm/opcodes.h
      insn-selector: calculate member offsets using the new structures
      vm: provide static field initializer values
      vm: provide vtable for struct vm_class
      regression: use TestCase.exit() instead of Runtime.halt()
      vm: fix includes in object.h
      vm: static fields contain their value, not a pointer to it
      vm: fix method argument counting
      x86: assert that the stack-frame size is positive
      jit: pass the correct value for the number of arguments
      vm: check the return value of counting arguments
      class: added access flag definitions
      constant_pool: fix utf8 string comparison error
      vm: set up vtables and make invokevirtual work
      vm: removed debug printfs from class loader
      regression: remove jamvm test-cases from the script
      constant_value_attribute: add parser
      vm: compute object sizes and field offsets
      doc: updated README.cafebabe
      regression: add ArrayTest
      jato: make stdout and stderr both unbuffered
      regression: temporary work-around for cafebabe
      vm: add missing error check
      regression: set CLASSPATH
      regression: don't construct new String object in backpatching test
      regression: add test for constant strings
      class: add functions for looking up fields and methods non-recursively by 
name
      vm: keep track of whether a class has been loaded/linked/initialised
      vm: separate loading from initialisation in the classloader
      jit: load utf8 strings and create utf16 String objects
      jato: simplify main-method lookup
      vm: move the string initialisation out of jit code
      vm: implement jato.internal.VM.println() as a native method
      regression: use plain exit() in ArrayTest
      regression: include ArrayTest in default run
      regression: add ObjectArrayTest
      build: use .class instead of .java for the target name
      vm: include utf8 routines
      build: extract GNU classpath to classpath/
      jit: get rid of obsolete functions
      vm: get rid of obsolete function
      vm: make checking functions use the new struct vm_object
      jato: use struct vm_object and get rid of a build warning
      jit: compile out some yet-to-be-implemented array code
      scripts: define NOT_IMPLEMENTED for tests
      test/vm: add missing include
      scripts/build: add cafebabe to includes
      test: replace alloc_compilation_unit() with compilation_unit_alloc()
      test: add vm_class stubs
      test: add vm_object stub
      test: add cafebabe objects to jit test-runner
      test/jit: replace methodblock with vm_method
      test/jit: replace fieldblock with vm_field
      test/vm: implement stub for method lookup
      test/jit: make invoke bypass the constant pool
      test/jit: use uint8_t instead of u8, etc.
      jit: class references should be vm_class, not vm_object
      test/jit: fix tree-printer's handling of classes
      test/jit: temporarily disable some tests for now
      test/arch-x86: add cafebabe headers to include paths
      test/arch-x86: make tests compile
      test/arch-x86: switch from Jam VM structures
      build: ignore arch-x86 tests for now
      vm: add zip/jar support to the class laoder
      doc: updated README.cafebabe
      vm: don't generate opcodes.h
      jato: remove obsolete native function
      vm: remove warning from classloader
      jit: fix convert_anewarray
      Merge commit 'github/penberg/master' into HEAD
      Merge commit 'github/penberg/master'
      vm: add some preliminary support for loading array classes
      jit: support array construction
      jit: resolve class in multianewarray
      vm: implement object locking using pthread mutexes
      vm: implement multianewarray "back end"
      jato: added two missing includes
      vm: fix includes in object.h
      vm: back-end support for java.lang.Object.getClass()
      vm: fix warnings in signal.c
      vm: provide vm_class_is_assignable_from()
      jit: fix exception handler search to use the new class compatibility check
      jit: anewarray/multianewarray should use vm_class, not vm_object
      vm: improve class assignability check somewhat
      vm: add vm_class_is_array_class() test
      vm: fix vm_object_check_array()
      jato: implement rudimentary command line parsing
      cafebabe: prepare for merge in jato
      cafebabe: removed cafebabe submodule
      Merge branch 'cafebabe-merge-preparation' into jato-merge-preparation
      test: fix jit-tests fallout
      cafebabe: switch license to GPLv2 + linking exception
      cafebabe: really remove cafebabe submodule
      doc: updated README.cafebabe
      jato: improve class preloader
      jato: preload fields too
      vm: move declarations of preloaded classes to a header file
      jato: use preloaded fields for jato.internal.VM.println() native function
      vm: use preloaded fields for java.lang.String in vm_object_alloc_string()
      vm: fix includes
      vm: use preloaded java/lang/Object in array construction
      jit: remove NOT_IMPLEMENTED from int/long ldc
      vm: add classpath helper to class loader
      Merge commit 'github/penberg/master'
      test/x86: enable all but instruction selection tests
      vm: replace vm/jato.c with vm/jato-cafebabe.c
      Merge commit 'github/penberg/master'

 Makefile                                           |   74 +-
 README.cafebabe                                    |   88 ++
 arch/ppc/Makefile_32                               |    4 -
 arch/x86/Makefile_32                               |    5 +-
 arch/x86/Makefile_64                               |    4 +-
 arch/x86/emit-code.c                               |   23 +-
 arch/x86/exception.c                               |    8 +-
 arch/x86/include/arch/exception.h                  |    4 +-
 arch/x86/include/arch/stack-frame.h                |    4 +-
 arch/x86/insn-selector_32.brg                      |   78 +-
 arch/x86/stack-frame.c                             |   17 +-
 cafebabe/CMakeLists.txt                            |   34 +
 cafebabe/Doxyfile                                  | 1356 ++++++++++++++++++++
 cafebabe/include/cafebabe/access.h                 |   55 +
 cafebabe/include/cafebabe/attribute_array.h        |   46 +
 cafebabe/include/cafebabe/attribute_info.h         |   52 +
 cafebabe/include/cafebabe/class.h                  |  101 ++
 cafebabe/include/cafebabe/code_attribute.h         |   67 +
 cafebabe/include/cafebabe/constant_pool.h          |  131 ++
 .../include/cafebabe/constant_value_attribute.h    |   54 +
 cafebabe/include/cafebabe/error.h                  |   46 +
 cafebabe/include/cafebabe/field_info.h             |   64 +
 cafebabe/include/cafebabe/method_info.h            |   66 +
 cafebabe/include/cafebabe/stream.h                 |   72 +
 cafebabe/src/cafebabe/attribute_array.c            |   54 +
 cafebabe/src/cafebabe/attribute_info.c             |   65 +
 cafebabe/src/cafebabe/class.c                      |  368 ++++++
 cafebabe/src/cafebabe/code_attribute.c             |  120 ++
 cafebabe/src/cafebabe/constant_pool.c              |  370 ++++++
 cafebabe/src/cafebabe/constant_value_attribute.c   |   56 +
 cafebabe/src/cafebabe/error.c                      |   45 +
 cafebabe/src/cafebabe/field_info.c                 |   82 ++
 cafebabe/src/cafebabe/method_info.c                |   82 ++
 cafebabe/src/cafebabe/stream.c                     |  226 ++++
 cafebabe/src/dump.c                                |  167 +++
 cafebabe/src/java.c                                |  140 ++
 include/jit/bc-offset-mapping.h                    |    3 +-
 include/jit/compilation-unit.h                     |    5 +-
 include/jit/compiler.h                             |   14 +-
 include/jit/emit-code.h                            |    9 +-
 include/jit/exception.h                            |   30 +-
 include/jit/expression.h                           |   43 +-
 include/jit/statement.h                            |    2 +-
 include/vm/class.h                                 |   80 +-
 include/vm/classloader.h                           |   11 +
 include/vm/field.h                                 |   34 +-
 include/vm/java_lang.h                             |   12 +
 include/vm/method.h                                |   82 +-
 include/vm/object.h                                |   48 +
 include/vm/opcodes.h                               |  236 ++++
 include/vm/stack-trace.h                           |   16 +-
 include/vm/thread.h                                |   18 +
 include/vm/types.h                                 |    3 +
 include/vm/utf8.h                                  |    9 +
 include/vm/vm.h                                    |  233 +----
 jit/bc-offset-mapping.c                            |    7 +-
 jit/bytecode-to-ir.c                               |    9 +-
 jit/cfg-analyzer.c                                 |   34 +-
 jit/compilation-unit.c                             |   12 +-
 jit/compiler.c                                     |   24 +-
 jit/emit.c                                         |   10 +-
 jit/exception.c                                    |   56 +-
 jit/expression.c                                   |   21 +-
 jit/invoke-bc.c                                    |   16 +-
 jit/load-store-bc.c                                |   61 +-
 jit/method.c                                       |    7 +-
 jit/object-bc.c                                    |   67 +-
 jit/trace-jit.c                                    |   19 +-
 jit/trampoline.c                                   |   11 +-
 jit/tree-printer.c                                 |   11 +-
 regression/jato/internal/VM.java                   |    1 +
 regression/jvm/ArrayTest.java                      |   42 +
 regression/jvm/ObjectArrayTest.java                |   24 +
 regression/jvm/StringTest.java                     |   16 +
 regression/run-suite.sh                            |   10 +-
 scripts/build/test.mk                              |    5 +-
 scripts/gen-opcodes.pl                             |   68 +
 test/arch-x86/Makefile                             |   25 +-
 test/arch-x86/emit-code-test_32.c                  |    6 +-
 test/arch-x86/insn-selector-test_32.c              |  214 ++--
 test/arch-x86/stack-frame-test_32.c                |    2 +-
 test/jamvm/class-stub.c                            |   50 -
 test/jit/Makefile                                  |   12 +-
 test/jit/arithmetic-bc-test.c                      |   24 +-
 test/jit/basic-block-test.c                        |    8 +-
 test/jit/bc-test-utils.c                           |   30 +-
 test/jit/bc-test-utils.h                           |   14 +-
 test/jit/branch-bc-test.c                          |   33 +-
 test/jit/bytecode-to-ir-test.c                     |   12 +-
 test/jit/cfg-analyzer-test.c                       |   25 +-
 test/jit/compilation-unit-test.c                   |   11 +-
 test/jit/invoke-bc-test.c                          |   65 +-
 test/jit/linear-scan-test.c                        |   10 +-
 test/jit/liveness-test.c                           |    8 +-
 test/jit/load-store-bc-test.c                      |   66 +-
 test/jit/object-bc-test.c                          |  136 ++-
 test/jit/spill-reload-test.c                       |   12 +-
 test/jit/trampoline-stub.c                         |    7 +
 test/jit/tree-printer-test.c                       |   38 +-
 test/jit/typeconv-bc-test.c                        |    6 +-
 test/vm/bytecodes-test.c                           |    2 +
 test/vm/class-stub.c                               |   32 +
 test/vm/classloader-stub.c                         |    6 +
 test/vm/java_lang-stub.c                           |   10 +
 test/vm/object-stub.c                              |   61 +
 vm/class.c                                         |  521 ++++++--
 vm/classloader.c                                   |  457 +++++++
 vm/field.c                                         |   95 ++
 vm/jato.c                                          |  581 ++++-----
 vm/method.c                                        |  129 ++
 vm/object.c                                        |  342 +++++
 vm/resolve.c                                       |    5 +-
 vm/signal.c                                        |    3 +-
 vm/stack-trace.c                                   |  131 +-
 vm/types.c                                         |   96 ++
 vm/utf8.c                                          |   96 ++
 116 files changed, 7557 insertions(+), 1471 deletions(-)
 create mode 100644 README.cafebabe
 create mode 100644 cafebabe/CMakeLists.txt
 create mode 100644 cafebabe/Doxyfile
 create mode 100644 cafebabe/include/cafebabe/access.h
 create mode 100644 cafebabe/include/cafebabe/attribute_array.h
 create mode 100644 cafebabe/include/cafebabe/attribute_info.h
 create mode 100644 cafebabe/include/cafebabe/class.h
 create mode 100644 cafebabe/include/cafebabe/code_attribute.h
 create mode 100644 cafebabe/include/cafebabe/constant_pool.h
 create mode 100644 cafebabe/include/cafebabe/constant_value_attribute.h
 create mode 100644 cafebabe/include/cafebabe/error.h
 create mode 100644 cafebabe/include/cafebabe/field_info.h
 create mode 100644 cafebabe/include/cafebabe/method_info.h
 create mode 100644 cafebabe/include/cafebabe/stream.h
 create mode 100644 cafebabe/src/cafebabe/attribute_array.c
 create mode 100644 cafebabe/src/cafebabe/attribute_info.c
 create mode 100644 cafebabe/src/cafebabe/class.c
 create mode 100644 cafebabe/src/cafebabe/code_attribute.c
 create mode 100644 cafebabe/src/cafebabe/constant_pool.c
 create mode 100644 cafebabe/src/cafebabe/constant_value_attribute.c
 create mode 100644 cafebabe/src/cafebabe/error.c
 create mode 100644 cafebabe/src/cafebabe/field_info.c
 create mode 100644 cafebabe/src/cafebabe/method_info.c
 create mode 100644 cafebabe/src/cafebabe/stream.c
 create mode 100644 cafebabe/src/dump.c
 create mode 100644 cafebabe/src/java.c
 create mode 100644 include/vm/classloader.h
 create mode 100644 include/vm/java_lang.h
 create mode 100644 include/vm/object.h
 create mode 100644 include/vm/opcodes.h
 create mode 100644 include/vm/thread.h
 create mode 100644 include/vm/utf8.h
 create mode 100644 regression/jvm/ArrayTest.java
 create mode 100644 regression/jvm/ObjectArrayTest.java
 create mode 100644 regression/jvm/StringTest.java
 create mode 100644 scripts/gen-opcodes.pl
 create mode 100644 test/jit/trampoline-stub.c
 create mode 100644 test/vm/class-stub.c
 create mode 100644 test/vm/classloader-stub.c
 create mode 100644 test/vm/java_lang-stub.c
 create mode 100644 test/vm/object-stub.c
 create mode 100644 vm/classloader.c
 create mode 100644 vm/field.c
 create mode 100644 vm/method.c
 create mode 100644 vm/object.c
 create mode 100644 vm/utf8.c

------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to