You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ar...@apache.org on 2005/11/13 21:55:34 UTC
svn commit: r337250 - in
/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm: ./ etc/
include/ java/ java/org/dellroad/jc/ java/org/dellroad/jc/cgen/ jsrc/
libjc/ libjc/native/
Author: archie
Date: Sun Nov 13 12:55:18 2005
New Revision: 337250
URL: http://svn.apache.org/viewcvs?rev=337250&view=rev
Log:
- Update instructions in APACHE.README and scripts for building.
- Remove more vestiges of the Java-to-C code generator.
- Update LICENSE to be the Apache license.
- Add FreeBSD's queue.h.
Added:
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h (with props)
Removed:
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/CHANGES
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/COPYRIGHT
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/COPYRIGHT.Apache
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/LGPL-2.1
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/LICENSE.Apache
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/BootstrapObjectGenerator.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/ClassfileFinder.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Generate.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/JCFinder.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/ObjectGenerator.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/SearchpathFinder.java
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/cgen/
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/package.html
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/jsrc/
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/org_dellroad_jc_JCFinder.c
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/org_dellroad_jc_cgen_SootCodeGenerator.c
Modified:
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/APACHE.README
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/AUTHORS
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/INSTALL
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/Makefile.am
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/configure.in
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/etc/makedist.sh
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/Makefile.am
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Makefile.am
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am
incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/Makefile.am
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/APACHE.README
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/APACHE.README?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/APACHE.README (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/APACHE.README Sun Nov 13 12:55:18 2005
@@ -1,18 +1,42 @@
-This is the JC virtual machine contribution to Apache's Harmony project.
+This is the JC virtual machine contribution to Apache's Harmony project,
+the JC Harmony Edition VM (JCHEVM).
-All code herein was written by me. However many ideas and algorithms herein
-were NOT invented by me, rather I just reimplemented them (with modifications).
-These are described the documentation (see doc/jc.texi).
-
-Note that the code in this tarball has been partially stripped down and
-will not build standalone. If you want to play with the complete JCVM,
-please visit: http://jcvm.sf.net/
+All code in the original contribute was written by me. However many
+ideas and algorithms herein were NOT invented by me; rather I just
+reimplemented them (with modifications). These are described the
+documentation (see doc/jc.texi).
+
+Note that the code in this tarball has been partially stripped down.
+The Java-to-C conversion (C code generator) portion has been disabled.
+If you want to play with the complete JCVM, please visit http://jcvm.sf.net/
+
+-------------------------------------------------------------------------------
+
+To build JCHEVM, first understand that you have checked out the Subversion
+repository, which is not the same thing as a ready to build distribution
+tarball. So you must first create a distribution tarball, which causes
+some files that are required for the build but not checked into the
+Subversion repository to be built:
+
+To create the distribution tarball:
+
+ 0. You'll need autoconf, automake, autoheader, and libtool installed first.
+ 1. Follow INSTALL step 0 & 1 to install libpopt, libz, and Classpath;
+ you should configure Classpath with ``--prefix=/usr/local''
+ 2. Run the etc/makedist.sh script as root.
+
+Once you've done that, you don't actually have to use the distribution
+tarball; you can just run "make && make install" from this directory.
+
+-------------------------------------------------------------------------------
Here's a posting describing some of the parts of JCVM that may
be useful to reuse in Harmony:
http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/%3c4288F308.9000502@dellroad.org%3e
+
+-------------------------------------------------------------------------------
Here's how this tarball was created:
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/AUTHORS
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/AUTHORS?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/AUTHORS (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/AUTHORS Sun Nov 13 12:55:18 2005
@@ -19,7 +19,3 @@
Julio M. Merino Vidal <jm...@menta.net>
Melanie Lord <lo...@courrier.uqam.ca>
-Java source files derived from GNU Classpath:
-
- See http://www.classpath.org/ for more information.
-
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/INSTALL
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/INSTALL?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/INSTALL (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/INSTALL Sun Nov 13 12:55:18 2005
@@ -74,46 +74,4 @@
usual place) or HTML format (PREFIX/share/jc/doc/jc.html). There
is also a man page, jc(1).
-NOTES:
-
-0. The JC distribution includes pre-generated C source files for
- all installed classes including Classpath. The C source files
- depend on the exact contents of the class files; therefore,
- any Classpath classes that differ will cause the corresponding
- C source files to be invalid, and such files will be automatically
- regenerated during the install process. The pre-generated source
- files correspond to Classpath 0.19, configured with "--with-jikes
- --prefix=/usr/local", and compiled by jikes 1.22.
-
- If you are using a different version of Classpath, built the
- classfiles with a compiler other than jikes 1.22, or installed
- Classpath in a different location, then some pre-generated C
- source files will appear invalid and have to be regenerated,
- which will lengthen the installation time.
-
- The install process try to will use another installed JVM to bootstrap
- generate these sources if present. The Sun JDK should normally be
- detected during the configure process but you can explicitly specify
- one via the "JAVA" environment variable when running configure.
- The installation process has not been tested with other VM's; you
- may need to edit the Makefile to adjust the maximum heap, etc.
-
- If another Java VM is not detected, installation will still succeed
- but no sources will be regenerated (i.e., the pre-generated sources
- shipped with JC are compiled without checking).
-
- In either case, ELF objects will be created for all classes during
- installation by compiling the generated sources with GCC.
-
-1. Regenerating source files for all of Classpath takes hours. Even if
- regeneration is not required (see #0 above), the installed source and
- object files require over 1/2 G of disk space.
-
- You can completely disable the installation and compilation of the
- pre-generated sources by configuring JC with the ./configure flag
- "--disable-pregenerated-sources".
-
-2. See http://jcvm.sourceforge.net/share/jc/doc/jc.html#Running%20JC
- for tips on optimizing JC's performance.
-
-$Id: INSTALL,v 1.27 2005/11/09 18:14:21 archiecobbs Exp $
+$Id$
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/Makefile.am?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/Makefile.am Sun Nov 13 12:55:18 2005
@@ -1,50 +1,7 @@
## $Id$
-EXTRA_DIST= AUTHORS CHANGES README LGPL-2.1 LICENSE INSTALL \
+EXTRA_DIST= AUTHORS README LICENSE INSTALL \
install-sh libtool missing
-SUBDIRS= tools libjc jc include doc etc java jsrc
-
-##
-## This replaces the string "@COPYRIGHT@" in each source file
-## with the copyright text from the top level COPYRIGHT file
-## On Linux, replace "sed -E" with "sed -r".
-##
-COPYRIGHT_TAG= @COPYRIGHT@
-COPYRIGHT_FILE= $(srcdir)/COPYRIGHT
-
-dist-hook:
- FILES=`find $(distdir) -type f -print`; \
- if [ `uname -s` = 'Linux' ]; then \
- SEDEXT="-r"; \
- else \
- SEDEXT="-E"; \
- fi; \
- for f in $${FILES}; do \
- if [ "$${f}" != "$(distdir)/Makefile.am" ] \
- && [ "$${f}" != "$(distdir)/Makefile.in" ] \
- && [ "$${f}" != "$(distdir)/Makefile" ] \
- && grep -q '${COPYRIGHT_TAG}' $${f}; then \
- echo substituting '${COPYRIGHT_TAG}' in $${f}; \
- LINE=`grep -n '${COPYRIGHT_TAG}' $${f} \
- | head -1 | awk -F: '{print $$1}'`; \
- TAIL=`grep -n '${COPYRIGHT_TAG}' $${f} \
- | head -1 | awk -F: '{print $$2}' \
- | sed -e 's/\\\\/\\\\\\\\/g' -e 's/"/\\\\"/g'`; \
- PREFX=`echo "$${TAIL}" \
- | sed $${SEDEXT} 's/^(.*)${COPYRIGHT_TAG}(.*)$$/\\1/g'`; \
- SUFFX=`echo "$${TAIL}" \
- | sed $${SEDEXT} 's/^(.*)${COPYRIGHT_TAG}(.*)$$/\\2/g'`; \
- if [ "$${LINE}" -gt 1 ]; then \
- head -`expr $${LINE} - 1` < $${f} > $${f}.new; \
- else \
- cat /dev/null > $${f}.new; \
- fi; \
- awk "{ printf \"%s%s%s\\n\", \
- \"$${PREFX}\", \$$0, \"$${SUFFX}\" }" \
- < ${COPYRIGHT_FILE} >> $${f}.new; \
- tail +`expr $${LINE} + 1` < $${f} >> $${f}.new; \
- mv $${f}.new $${f}; \
- fi; \
- done
+SUBDIRS= tools libjc jc include doc etc java
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/configure.in
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/configure.in?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/configure.in (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/configure.in Sun Nov 13 12:55:18 2005
@@ -1,6 +1,6 @@
# $Id$
-AC_INIT([JC Virtual Machine], [1.4.7], [http://sourceforge.net/projects/jcvm], [jc])
+AC_INIT([JC Harmony Edition Virtual Machine], [1.0], [http://incubator.apache.org/harmony/], [jchevm])
AC_CONFIG_AUX_DIR(scripts)
AM_INIT_AUTOMAKE
dnl AM_MAINTAINER_MODE
@@ -55,12 +55,6 @@
AC_HELP_STRING([--enable-werror],
[include -Werror GCC compiler flag (default NO)]),
[test x"$enableval" = "xyes" && JC_CFLAGS="${JC_CFLAGS} -Werror"])
-AC_ARG_ENABLE(pregenerated-sources,
- AC_HELP_STRING([--enable-pregenerated-sources],
- [install and compile pregenerated sources (default YES)]),
- [JC_PREGENERATED_SOURCES="$enableval"],
- [JC_PREGENERATED_SOURCES="yes"])
-AC_SUBST(JC_PREGENERATED_SOURCES)
# Check for required programs
AC_PROG_INSTALL
@@ -162,12 +156,8 @@
AC_CONFIG_FILES(java/org/Makefile)
AC_CONFIG_FILES(java/org/dellroad/Makefile)
AC_CONFIG_FILES(java/org/dellroad/jc/Makefile)
-AC_CONFIG_FILES(java/org/dellroad/jc/cgen/Makefile)
-AC_CONFIG_FILES(java/org/dellroad/jc/cgen/analysis/Makefile)
-AC_CONFIG_FILES(java/org/dellroad/jc/cgen/escape/Makefile)
AC_CONFIG_FILES(java/org/dellroad/jc/vm/Makefile)
AC_CONFIG_FILES(jc/Makefile)
-AC_CONFIG_FILES(jsrc/Makefile)
AC_CONFIG_FILES(libjc/Makefile)
AC_CONFIG_FILES(libjc/arch/Makefile)
AC_CONFIG_FILES(libjc/arch/i386/Makefile)
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/etc/makedist.sh
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/etc/makedist.sh?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/etc/makedist.sh (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/etc/makedist.sh Sun Nov 13 12:55:18 2005
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: makedist.sh,v 1.11 2005/03/19 19:55:02 archiecobbs Exp $
+# $Id$
PREFIX=/usr/local
@@ -23,9 +23,7 @@
sh etc/regen.sh
(cd tools && make && make install) || exit 1
(cd java && make && make install) || exit 1
-(cd soot && make && make install) || exit 1
(cd include && make && make install) || exit 1
(cd libjc/native && make hfiles) || exit 1
-(cd jsrc && make jsrc.tgz) || exit 1
make dist
Added: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h?rev=337250&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h Sun Nov 13 12:55:18 2005
@@ -0,0 +1,553 @@
+/*-
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_QUEUE_H_
+#define _SYS_QUEUE_H_
+
+#include <sys/cdefs.h>
+
+/*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The elements
+ * are singly linked for minimum space and pointer manipulation overhead at
+ * the expense of O(n) removal for arbitrary elements. New elements can be
+ * added to the list after an existing element or at the head of the list.
+ * Elements being removed from the head of the list should use the explicit
+ * macro for this purpose for optimum efficiency. A singly-linked list may
+ * only be traversed in the forward direction. Singly-linked lists are ideal
+ * for applications with large datasets and few or no removals or for
+ * implementing a LIFO queue.
+ *
+ * A singly-linked tail queue is headed by a pair of pointers, one to the
+ * head of the list and the other to the tail of the list. The elements are
+ * singly linked for minimum space and pointer manipulation overhead at the
+ * expense of O(n) removal for arbitrary elements. New elements can be added
+ * to the list after an existing element, at the head of the list, or at the
+ * end of the list. Elements being removed from the head of the tail queue
+ * should use the explicit macro for this purpose for optimum efficiency.
+ * A singly-linked tail queue may only be traversed in the forward direction.
+ * Singly-linked tail queues are ideal for applications with large datasets
+ * and few or no removals or for implementing a FIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may only be traversed in the forward direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ *
+ *
+ * SLIST LIST STAILQ TAILQ
+ * _HEAD + + + +
+ * _HEAD_INITIALIZER + + + +
+ * _ENTRY + + + +
+ * _INIT + + + +
+ * _EMPTY + + + +
+ * _FIRST + + + +
+ * _NEXT + + + +
+ * _PREV - - - +
+ * _LAST - - + +
+ * _FOREACH + + + +
+ * _FOREACH_SAFE + + + +
+ * _FOREACH_REVERSE - - - +
+ * _FOREACH_REVERSE_SAFE - - - +
+ * _INSERT_HEAD + + + +
+ * _INSERT_BEFORE - + - +
+ * _INSERT_AFTER + + + +
+ * _INSERT_TAIL - - + +
+ * _CONCAT - - + +
+ * _REMOVE_HEAD + - + -
+ * _REMOVE + + + +
+ *
+ */
+#define QUEUE_MACRO_DEBUG 0
+#if QUEUE_MACRO_DEBUG
+/* Store the last 2 places the queue element or head was altered */
+struct qm_trace {
+ char * lastfile;
+ int lastline;
+ char * prevfile;
+ int prevline;
+};
+
+#define TRACEBUF struct qm_trace trace;
+#define TRASHIT(x) do {(x) = (void *)-1;} while (0)
+
+#define QMD_TRACE_HEAD(head) do { \
+ (head)->trace.prevline = (head)->trace.lastline; \
+ (head)->trace.prevfile = (head)->trace.lastfile; \
+ (head)->trace.lastline = __LINE__; \
+ (head)->trace.lastfile = __FILE__; \
+} while (0)
+
+#define QMD_TRACE_ELEM(elem) do { \
+ (elem)->trace.prevline = (elem)->trace.lastline; \
+ (elem)->trace.prevfile = (elem)->trace.lastfile; \
+ (elem)->trace.lastline = __LINE__; \
+ (elem)->trace.lastfile = __FILE__; \
+} while (0)
+
+#else
+#define QMD_TRACE_ELEM(elem)
+#define QMD_TRACE_HEAD(head)
+#define TRACEBUF
+#define TRASHIT(x)
+#endif /* QUEUE_MACRO_DEBUG */
+
+/*
+ * Singly-linked List declarations.
+ */
+#define SLIST_HEAD(name, type) \
+struct name { \
+ struct type *slh_first; /* first element */ \
+}
+
+#define SLIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define SLIST_ENTRY(type) \
+struct { \
+ struct type *sle_next; /* next element */ \
+}
+
+/*
+ * Singly-linked List functions.
+ */
+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
+
+#define SLIST_FIRST(head) ((head)->slh_first)
+
+#define SLIST_FOREACH(var, head, field) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
+
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
+ for ((varp) = &SLIST_FIRST((head)); \
+ ((var) = *(varp)) != NULL; \
+ (varp) = &SLIST_NEXT((var), field))
+
+#define SLIST_INIT(head) do { \
+ SLIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
+ SLIST_NEXT((slistelm), field) = (elm); \
+} while (0)
+
+#define SLIST_INSERT_HEAD(head, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
+ SLIST_FIRST((head)) = (elm); \
+} while (0)
+
+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
+#define SLIST_REMOVE(head, elm, type, field) do { \
+ if (SLIST_FIRST((head)) == (elm)) { \
+ SLIST_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = SLIST_FIRST((head)); \
+ while (SLIST_NEXT(curelm, field) != (elm)) \
+ curelm = SLIST_NEXT(curelm, field); \
+ SLIST_NEXT(curelm, field) = \
+ SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
+ } \
+} while (0)
+
+#define SLIST_REMOVE_HEAD(head, field) do { \
+ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
+} while (0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define STAILQ_HEAD(name, type) \
+struct name { \
+ struct type *stqh_first;/* first element */ \
+ struct type **stqh_last;/* addr of last next element */ \
+}
+
+#define STAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).stqh_first }
+
+#define STAILQ_ENTRY(type) \
+struct { \
+ struct type *stqe_next; /* next element */ \
+}
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+
+#define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST((head)); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
+
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = STAILQ_FIRST((head)); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define STAILQ_INIT(head) do { \
+ STAILQ_FIRST((head)) = NULL; \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_NEXT((tqelm), field) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_FIRST((head)) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
+ STAILQ_NEXT((elm), field) = NULL; \
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+} while (0)
+
+#define STAILQ_LAST(head, type, field) \
+ (STAILQ_EMPTY((head)) ? \
+ NULL : \
+ ((struct type *) \
+ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
+
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_REMOVE(head, elm, type, field) do { \
+ if (STAILQ_FIRST((head)) == (elm)) { \
+ STAILQ_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = STAILQ_FIRST((head)); \
+ while (STAILQ_NEXT(curelm, field) != (elm)) \
+ curelm = STAILQ_NEXT(curelm, field); \
+ if ((STAILQ_NEXT(curelm, field) = \
+ STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
+ } \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD(head, field) do { \
+ if ((STAILQ_FIRST((head)) = \
+ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
+ if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+/*
+ * List declarations.
+ */
+#define LIST_HEAD(name, type) \
+struct name { \
+ struct type *lh_first; /* first element */ \
+}
+
+#define LIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define LIST_ENTRY(type) \
+struct { \
+ struct type *le_next; /* next element */ \
+ struct type **le_prev; /* address of previous next element */ \
+}
+
+/*
+ * List functions.
+ */
+
+#define LIST_EMPTY(head) ((head)->lh_first == NULL)
+
+#define LIST_FIRST(head) ((head)->lh_first)
+
+#define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define LIST_INIT(head) do { \
+ LIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+ LIST_NEXT((listelm), field)->field.le_prev = \
+ &LIST_NEXT((elm), field); \
+ LIST_NEXT((listelm), field) = (elm); \
+ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
+} while (0)
+
+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.le_prev = (listelm)->field.le_prev; \
+ LIST_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.le_prev = (elm); \
+ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
+} while (0)
+
+#define LIST_INSERT_HEAD(head, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
+ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
+ LIST_FIRST((head)) = (elm); \
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
+} while (0)
+
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+#define LIST_REMOVE(elm, field) do { \
+ if (LIST_NEXT((elm), field) != NULL) \
+ LIST_NEXT((elm), field)->field.le_prev = \
+ (elm)->field.le_prev; \
+ *(elm)->field.le_prev = LIST_NEXT((elm), field); \
+} while (0)
+
+/*
+ * Tail queue declarations.
+ */
+#define TAILQ_HEAD(name, type) \
+struct name { \
+ struct type *tqh_first; /* first element */ \
+ struct type **tqh_last; /* addr of last next element */ \
+ TRACEBUF \
+}
+
+#define TAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).tqh_first }
+
+#define TAILQ_ENTRY(type) \
+struct { \
+ struct type *tqe_next; /* next element */ \
+ struct type **tqe_prev; /* address of previous next element */ \
+ TRACEBUF \
+}
+
+/*
+ * Tail queue functions.
+ */
+#define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+ (head1)->tqh_last = (head2)->tqh_last; \
+ TAILQ_INIT((head2)); \
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_HEAD(head2); \
+ } \
+} while (0)
+
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_INIT(head) do { \
+ TAILQ_FIRST((head)) = NULL; \
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
+ QMD_TRACE_HEAD(head); \
+} while (0)
+
+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else { \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_HEAD(head); \
+ } \
+ TAILQ_NEXT((listelm), field) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ QMD_TRACE_ELEM(&listelm->field); \
+} while (0)
+
+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
+ TAILQ_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.tqe_prev = (elm); \
+ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ QMD_TRACE_ELEM(&listelm->field); \
+} while (0)
+
+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
+ TAILQ_FIRST((head))->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ TAILQ_FIRST((head)) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
+ TAILQ_NEXT((elm), field) = NULL; \
+ (elm)->field.tqe_prev = (head)->tqh_last; \
+ *(head)->tqh_last = (elm); \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+#define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+
+#define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
+#define TAILQ_REMOVE(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field)) != NULL) \
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ (elm)->field.tqe_prev; \
+ else { \
+ (head)->tqh_last = (elm)->field.tqe_prev; \
+ QMD_TRACE_HEAD(head); \
+ } \
+ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
+ TRASHIT((elm)->field.tqe_next); \
+ TRASHIT((elm)->field.tqe_prev); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+} while (0)
+
+
+#ifdef _KERNEL
+
+/*
+ * XXX insque() and remque() are an old way of handling certain queues.
+ * They bogusly assumes that all queue heads look alike.
+ */
+
+struct quehead {
+ struct quehead *qh_link;
+ struct quehead *qh_rlink;
+};
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+
+static __inline void
+insque(void *a, void *b)
+{
+ struct quehead *element = (struct quehead *)a,
+ *head = (struct quehead *)b;
+
+ element->qh_link = head->qh_link;
+ element->qh_rlink = head;
+ head->qh_link = element;
+ element->qh_link->qh_rlink = element;
+}
+
+static __inline void
+remque(void *a)
+{
+ struct quehead *element = (struct quehead *)a;
+
+ element->qh_link->qh_rlink = element->qh_rlink;
+ element->qh_rlink->qh_link = element->qh_link;
+ element->qh_rlink = 0;
+}
+
+#else /* !(__GNUC__ || __INTEL_COMPILER) */
+
+void insque(void *a, void *b);
+void remque(void *a);
+
+#endif /* __GNUC__ || __INTEL_COMPILER */
+
+#endif /* _KERNEL */
+
+#endif /* !_SYS_QUEUE_H_ */
Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/include/queue.h
------------------------------------------------------------------------------
svn:keywords = Id
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/Makefile.am?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/Makefile.am Sun Nov 13 12:55:18 2005
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.9 2005/03/16 15:30:40 archiecobbs Exp $
+## $Id$
jcdir= $(datadir)/jc
apidir= $(jcdir)/doc/api
@@ -31,14 +31,12 @@
rm -rf classes
JDOC_TITLE= "JC Virtual Machine"
-JDOC_FLAGS= -classpath $(CLASSPATH) -sourcepath $(srcdir) -d api -doctitle $(JDOC_TITLE) -windowtitle $(JDOC_TITLE) -breakiterator -link http://java.sun.com/j2se/1.4.2/docs/api -link http://www.sable.mcgill.ca/soot/doc/
+JDOC_FLAGS= -classpath $(CLASSPATH) -sourcepath $(srcdir) -d api -doctitle $(JDOC_TITLE) -windowtitle $(JDOC_TITLE) -breakiterator -link http://java.sun.com/j2se/1.4.2/docs/api
api.tgz:
rm -rf api
mkdir api
- $(JAVADOC) $(JDOC_FLAGS) org.dellroad.jc org.dellroad.jc.cgen \
- org.dellroad.jc.vm org.dellroad.jc.cgen.analysis \
- org.dellroad.jc.cgen.escape
+ $(JAVADOC) $(JDOC_FLAGS) org.dellroad.jc.vm
( cd api && $(TAR) czf ../api.tgz * )
rm -rf api
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Makefile.am?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/java/org/dellroad/jc/Makefile.am Sun Nov 13 12:55:18 2005
@@ -1,12 +1,4 @@
-## $Id: Makefile.am,v 1.1.1.1 2004/02/20 05:15:19 archiecobbs Exp $
+## $Id$
-SUBDIRS= cgen vm
-
-EXTRA_DIST= BootstrapObjectGenerator.java \
- ClassfileFinder.java \
- Generate.java \
- JCFinder.java \
- ObjectGenerator.java \
- SearchpathFinder.java \
- package.html
+SUBDIRS= vm
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/Makefile.am Sun Nov 13 12:55:18 2005
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.14 2005/05/24 01:09:38 archiecobbs Exp $
+## $Id$
SUBDIRS= native arch
@@ -76,8 +76,6 @@
native/java_lang_reflect_Constructor.c \
native/java_lang_reflect_Field.c \
native/java_lang_reflect_Method.c \
- native/org_dellroad_jc_JCFinder.c \
- native/org_dellroad_jc_cgen_SootCodeGenerator.c \
native/org_dellroad_jc_vm_DebugThread.c \
native/org_dellroad_jc_vm_FinalizerThread.c
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/Makefile.am
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/Makefile.am?rev=337250&r1=337249&r2=337250&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/Makefile.am (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/jchevm/jchevm/libjc/native/Makefile.am Sun Nov 13 12:55:18 2005
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.8 2005/05/15 21:41:01 archiecobbs Exp $
+## $Id$
jcbindir= $(bindir)
jcdir= $(datadir)/jc
@@ -33,10 +33,6 @@
java_lang_reflect_Field.h \
java_lang_reflect_Method.c \
java_lang_reflect_Method.h \
- org_dellroad_jc_JCFinder.c \
- org_dellroad_jc_JCFinder.h \
- org_dellroad_jc_cgen_SootCodeGenerator.c \
- org_dellroad_jc_cgen_SootCodeGenerator.h \
org_dellroad_jc_vm_DebugThread.c \
org_dellroad_jc_vm_DebugThread.h \
org_dellroad_jc_vm_FinalizerThread.c \
@@ -65,8 +61,6 @@
java_lang_reflect_Constructor.h \
java_lang_reflect_Field.h \
java_lang_reflect_Method.h \
- org_dellroad_jc_JCFinder.h \
- org_dellroad_jc_cgen_SootCodeGenerator.h \
org_dellroad_jc_vm_DebugThread.h \
org_dellroad_jc_vm_FinalizerThread.h
@@ -101,10 +95,6 @@
java_lang_reflect_Field.h:
$(JAVAH_CMD) `echo $@ | sed -e 's/\.h$$//g' -e 's/_/./g'`
java_lang_reflect_Method.h:
- $(JAVAH_CMD) `echo $@ | sed -e 's/\.h$$//g' -e 's/_/./g'`
-org_dellroad_jc_JCFinder.h:
- $(JAVAH_CMD) `echo $@ | sed -e 's/\.h$$//g' -e 's/_/./g'`
-org_dellroad_jc_cgen_SootCodeGenerator.h:
$(JAVAH_CMD) `echo $@ | sed -e 's/\.h$$//g' -e 's/_/./g'`
org_dellroad_jc_vm_DebugThread.h:
$(JAVAH_CMD) `echo $@ | sed -e 's/\.h$$//g' -e 's/_/./g'`