./lang/jamvm, Compact Java Virtual Machine

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 1.5.4nb1, Package name: jamvm-1.5.4nb1, Maintainer: pkgsrc-users

JamVM is a new Java Virtual Machine which conforms to the JVM specification
version 2 (blue book). In comparison to most other VM's (free and commercial)
it is extremely small, with a stripped executable on PowerPC of only ~135K,
and Intel 100K. However, unlike other small VMs (e.g. KVM) it is designed to
support the full specification, and includes support for object finalisation,
the Java Native Interface (JNI) and the Reflection API.

Required to run:
[lang/classpath] [devel/libffi]

Required to build:

Master sites:

SHA1: 26863c78d5b0dfcc1a1492d24af58d192831b510
RMD160: 7aa2a3d28c0d953c0d0048a3f8c48dc274ae10a0
Filesize: 640.901 KB

Version history: (Expand)

CVS history: (Expand)

   2020-03-20 12:58:37 by Nia Alarie | Files touched by this commit (640)
Log message:
*: Convert broken sourceforge HOMEPAGEs back to http
   2020-03-08 17:42:31 by Benny Siegert | Files touched by this commit (67)
Log message:
Revbump packages depending on libffi after .so version change.

Requested by Matthias Ferdinand and Oskar on pkgsrc-users.
   2020-01-19 00:36:14 by Roland Illig | Files touched by this commit (3046)
Log message:
all: migrate several HOMEPAGEs to https

pkglint --only "https instead of http" -r -F

With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.

This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
   2015-11-03 23:50:46 by Alistair G. Crooks | Files touched by this commit (194)
Log message:
Add SHA512 digests for distfiles for lang category

Problems found with existing digests:
	Package nhc98 distfile nhc98src-1.22.tar.gz
	a8adc8f22371998ee0657bc0e01058a57d876abc [recorded]
	81975fcb5f1dda5efeaabc30ce8c6dceae55e591 [calculated]

Problems found locating distfiles:
	Package gcc-aux: missing distfile ada-bootstrap.i386.dragonfly.36A.tar.bz2
	Package gcc-aux: missing distfile ada-bootstrap.i386.freebsd.84.tar.bz2
	Package gcc-aux: missing distfile ada-bootstrap.x86_64.dragonfly.36A.tar.bz2
	Package gcc-aux: missing distfile ada-bootstrap.x86_64.freebsd.84.tar.bz2
	Package gcc-aux: missing distfile ada-bootstrap.x86_64.solaris.511.tar.bz2
	Package gcc5-aux: missing distfile ada-bootstrap.i386.dragonfly.36A.tar.bz2
	Package gcc5-aux: missing distfile ada-bootstrap.i386.freebsd.84.tar.bz2
	Package gcc5-aux: missing distfile ada-bootstrap.x86_64.dragonfly.36A.tar.bz2
	Package gcc5-aux: missing distfile ada-bootstrap.x86_64.freebsd.84.tar.bz2
	Package gcc5-aux: missing distfile ada-bootstrap.x86_64.solaris.511.tar.bz2
	Package ghc7: missing distfile ghc-7.6.3-boot-i386-unknown-freebsd.tar.xz
	Package icc11: missing distfile l_cproc_p_11.1.080.tgz
	Package jini: missing distfile jini-1_2_1_001-src.zip
	Package oo2c: missing distfile oo2c_32-2.0.11.tar.bz2
	Package openjdk7: missing distfile \ 
	Package openjdk7: missing distfile \ 
	Package openjdk7: missing distfile \ 
	Package openjdk7: missing distfile \ 
	Package openjdk7: missing distfile \ 
	Package openjdk7: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package openjdk8: missing distfile \ 
	Package oracle-jdk8: missing distfile jdk-8u60-linux-i586.tar.gz
	Package oracle-jdk8: missing distfile jdk-8u60-solaris-x64.tar.gz
	Package oracle-jre8: missing distfile jre-8u60-linux-i586.tar.gz
	Package oracle-jre8: missing distfile jre-8u60-solaris-x64.tar.gz
	Package sun-jdk6: missing distfile jdk-6u45-linux-i586.bin
	Package sun-jdk6: missing distfile jdk-6u45-solaris-i586.sh
	Package sun-jdk7: missing distfile jdk-7u72-linux-i586.tar.gz
	Package sun-jdk7: missing distfile jdk-7u72-solaris-i586.tar.gz
	Package sun-jre6: missing distfile jce_policy-6.zip
	Package sun-jre6: missing distfile jre-6u45-linux-x64.bin
	Package sun-jre6: missing distfile jre-6u45-solaris-x64.sh
	Package sun-jre7: missing distfile jre-7u72-linux-i586.tar.gz
	Package sun-jre7: missing distfile jre-7u72-solaris-i586.tar.gz

Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden).  All existing
SHA1 digests retained for now as an audit trail.
   2015-03-31 17:43:34 by Joerg Sonnenberger | Files touched by this commit (3)
Log message:
Use unified asm syntax. Build with -O0 on ARM when using clang, to much
optimisation potential.
   2014-02-08 10:41:29 by OBATA Akio | Files touched by this commit (5) | Package updated
Log message:
Update jamvm to 1.5.4.
Based on PR pkg/45604 by Nikolai Lifanov.

JamVM 1.5.4 released on 1st January 2010

A summary of changes since 1.5.3:

- GC changes:

  - Mark phase rewritten to use an explicit fixed-size mark stack,
    with a moving heap scan pointer.  The previous recursive marking
    could lead to stack overflow when marking complex, deeply-linked
    structures.  If the explicit mark stack overflows, a slower,
    fallback mechanism is used of scanning the heap.  The new mark
    phase is upto 50% faster than the old recursive marking.

  - bug fix for unallocated blocks within the heap of >= 1 GB.

- JNI changes:

  - Updated to JNI version 1.6.  This adds the function

  - Fully implemented JNI weak global references (NewWeakGlobalRef
    and DeleteWeakGloablRef).  Note, these are different to Java
    Soft/Weak/Phantom References which have been supported since
    JamVM 1.4.0.

  - verbose:jni now shows details of the opening of native libraries.
    If a library fails to open a diagnostic message is shown (if
    available).  This is intended to help debug common library

  - bug fix for ToReflected[Method|Field] and GetSuperClass.  A
    local reference must be created for the return value.

- Platform changes:

  - Interpreter inlining (aka code-copying JIT) now enabled by
    default on ARM systems.  Testing on Cortex-A8 indicates
    82% speed improvement on integer benchmarks, and 55% on

  - If cross-compiling, and interpreter inlining is enabled, runtime
    relocation checks will be enabled (relocation information is
    normally generated at compile time; as this can't be done
    when cross-compiling it must be done at runtime, but it
    increases the size of the executable by ~30%).

  - Initial port to Sparc/FreeBSD.  My thanks to Per Ola Ingvarsson
    for architecture dependent definitions.  Interpreter inlining
    (aka code-copying JIT) is currently not supported due to missing
    code for flushing the instruction/data caches, and branch
    generation. It also requires libffi, which is enabled by default.

  - Changes to x86 and x86_64 across all platforms to zero/sign
    extend return values from native methods whose size is less
    than an int (i.e. boolean, byte, char and short).  This is
    necessary due to changes in code produced by gcc >= 4.3.

  - Rare race-condition in thin-locking code on x86 and x86_64
    architectures, leading to deadlock.  On modern x86 CPUs, an
    extra memory barrier is required.  Seen intermittently while
    running a thread intensive benchmark using at least 4 cores.

  - Extensive changes to support 64-bit Big Endian systems.  These
    were previously supported, but support was completely broken
    with the introduction of the new object layout in JamVM 1.5.2.

- Miscellaneous fixes:

  - Interpreter inlining bug fix: reference to memory after it
    had been freed

  - java.lang.reflect.VMField getAnnotation() implemented.  This
    has been missing since the reflection rework in JamVM 1.5.2.

  - ThreadMXBean: fixes for getThreadInfoForId (VMThreadMXBeanImpl).

    - Did not correctly report lock or lock owner, when the thread was
      blocked on an object which was thin-locked by another thread

    - It was using a constructor which has since been removed

  - Fixes for NULL handling in findClassFromSignature() and

  - Fixed memory leak in bytecode rewriting.  Due to missing
    parantheses, old bytecode stream was not being freed (for
    example, this leaks 47K when running "Hello, World")

  - Bug-fix for theoretical race-condition in thread deletion when
    notifying joining threads after thread ID has been reused.

JamVM 1.5.3 released on 14th April 2009

JamVM 1.5.3 is primarily a bug-fix release.  It fixes issues seen
while running Eclipse 3.4.2 and JRuby 1.2.0RC2, and adds some minor
features.  A summary of the changes:

- Zip/Jar support in the boot classloader has been rewritten to
  no longer require the Zip/Jar files to be mmap-ed read/write.
  This increases shareability between multiple VM instances, and
  improves memory-usage on embedded systems.

- JNI invocation API:
  - set thread-self to NULL when thread detaches (if the thread tries
    to re-attach, it appears to still be attached)

  - init args_count in dummy stack frame (fix problem if the thread
    detaches and then re-attaches)

- Do not create a library unloader for libraries loaded by the bootstrap
  loader if they have an JNI_OnUnload method (the bootstrap loader is
  never unloaded, and so they will never be called).  Fixes a SEGV with

- Fix to annotation handling.  When the annotation value is an array,
  the native annotation parser constructs an Object array.  However,
  the method return value is the specific type.  This leads to an
  AnnotationTypeMismatchException.  The fix coerces the Object
  array to the correct type.

- Simple implementation of java.lang.management.VMManagementFactory
  (returns no memory pool, memory manager or GC names).  Sufficient
  to run JRuby.

- Implemented package support in the bootstrap class loader.  Package
  information is obtained from the manifest file if it exists.  However,
  GNU Classpath's glibj.zip's manifest has no package information.
  The class library is therefore recognised by the presence of
  java/lang/Object.class, and appropriate package information is

- Fix broken implementation of VMClass.getSimpleName() (use the
  implementation from gcj)

- Default Java stack size increased to 256K from 64K

- Fix to bootstrap loader getResources() when the bootclasspath
  entry is relative (prepend the current working directory)

- Fix minor memory leak in bootstrap loader getResources()

- Add --enable-tls option to configure, enabling thread-local-storage
  (__thread) to be disabled

JamVM 1.5.2 released on 1st February 2009

A summary of changes since 1.5.1:

- Interpreter inlining changes

  - Basic-blocks are now inlined across block boundaries removing
    the need for dispatching between blocks in the case of
    fall-through control flow

  - Control-flow within inlined sequences now patched with real jumps,
    removing the need for computed jumps

  - Control flow between non-shared sequences now patched, replacing
    dispatch with real jumps

  - Simple basic-block profiling is now implemented.  This considerably
    reduces the size of the code-cache, without reducing performance

- Reworked Object layout

  - Previously, on 64-bit machines the object layout was wasteful, with
    padding on fields less than 64-bits (to preserve 64-bit alignment).
    The new object layout on average reduces heap usage by approx
    10 - 15%

  - On 32-bit machines, 64-bit fields are now 64-bit aligned (without
    introducing extra padding if possible)

- Various alignment fixes

  - 64-bit alignment of operand stack
  - 64-bit alignment of static variable data

- Reflection support

  - Reworking required for new object layout

  - Reworked to use VMConstructor, VMMethod, etc.

  - Reworked to improve field access and method invocation performance
    (this offsets the extra costs of the VM interface, and improves
    performance over 1.5.1).

  - Access permission checks take precedence over other errors

  - Class/method signatures : do not convert slash to dots

- JNI fixes/improvements

  - Class references returned by JNI now use local references

  - Throw InstantiationException not InstantiationError when allocating
    objects and the class is an interface or abstract

  - Reworked JNI global references

    - Fix memory leak when expanding list

    - Improve performance (optimise case where references are
      created/deleted in a stack-like manner)

- OpenSolaris/Solaris/x86 port

- GC fixes

  - Fix race-condition in registering references with the GC

  - Separate "Async GC" thread is now disabled by default.  It didn't
    improve performance, and could increase power-consumption on
    embedded systems

- Exception handling

  - Fix method-skipping when filling in stack trace (methods could
    be incorrectly excluded from the trace when a class subclassed

  - Uncaught exceptions in the "main" thread will now use the thread's

- Various compatibility command line options recognised (and
  ignored).  These include -XX:PermSize and XX:MaxPermSize
  required to build OpenJDK.

- sun.misc.Unsafe

  - Object methods (compareAndSwapObject, etc.) fixed on 64-bit

  - Implemented support for thread park and unpark (removing previous
    highly inefficient "empty" implementation)

- Use thread-local storage (__thread), if available, instead of
  pthread keys

- Various minor race-conditions seen while running Dacapo benchmarks

- Strict-aliasing fixes when compiled with GCC 4.3, interpreter
  stack-caching is enabled, and interpreter inlining is on

- A large amount of code-tidying throughout the VM

- Minimum heap size increased to 16MB

- Various compiler warnings.
   2013-10-29 00:47:18 by Joerg Sonnenberger | Files touched by this commit (2)
Log message:
Don't use -fno-reorder-blocks.
   2013-02-26 12:08:41 by Joerg Sonnenberger | Files touched by this commit (2)
Log message:
Fix assembler syntax.