You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by dl...@apache.org on 2005/10/19 10:42:15 UTC
svn commit: r326481 [2/2] - in
/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src:
argv.c exit.c field.c heap.h heap_bimodal.c heap_simple.c jvm.h main.c
manifest.c nts.c tmparea.c utf.c util.h
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/utf.c
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/utf.c?rev=326481&r1=326480&r2=326481&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/utf.c (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/utf.c Wed Oct 19 01:41:30 2005
@@ -29,7 +29,9 @@
*
* @section Control
*
- * \$URL$ \$Id$
+ * \$URL$
+ *
+ * \$Id$
*
* Copyright 2005 The Apache Software Foundation
* or its licensors, as applicable.
@@ -53,6 +55,7 @@
* @date \$LastChangedDate$
*
* @author \$LastChangedBy$
+ *
* Original code contributed by Daniel Lydick on 09/28/2005.
*
* @section Reference
@@ -60,7 +63,9 @@
*/
#include "arch.h"
-ARCH_COPYRIGHT_APACHE(utf, c, "$URL$ $Id$");
+ARCH_SOURCE_COPYRIGHT_APACHE(utf, c,
+"$URL$",
+"$Id$");
#include <string.h>
@@ -115,6 +120,8 @@
jshort utf_utf2unicode(CONSTANT_Utf8_info *utf_inbfr, jchar *outbfr)
{
+ ARCH_FUNCTION_NAME(utf_utf2unicode);
+
jshort charcnvcount;
jubyte *inbfr = (jubyte *) utf_inbfr->bytes;
@@ -235,6 +242,7 @@
*
* @param src Pointer to UTF string, most likely from constant pool
*
+ *
* @returns Null-terminated string in heap or
* @link #rnull rnull@endlink if heap alloc error.
*
@@ -242,11 +250,13 @@
rchar *utf_utf2prchar(CONSTANT_Utf8_info *src)
{
+ ARCH_FUNCTION_NAME(utf_utf2prchar);
+
/* Allocate heap for UTF data plus NUL byte */
rchar *rc = HEAP_GET_DATA(sizeof(rchar) + src->length, rfalse);
/* Copy to heap area */
- memcpy(rc, &src->bytes[0], src->length);
+ portable_memcpy(rc, &src->bytes[0], src->length);
/* Append NUL character */
rc[src->length] = '\0';
@@ -289,6 +299,7 @@
* null termination being present or absent
* in @b s2.
*
+ *
* @returns lexicographical difference of <b><code>s1 - s2</code></b>.
* Notice that the (rchar) data is implicitly unsigned
* (although the actual signage is left to the compiler),
@@ -296,11 +307,13 @@
* arithmetic nature of the calculation.
*
*/
-static jbyte s1_s2_strncmp(u1 *s1, int l1, u1 *s2, int l2)
+static jbyte utf_s1_s2_strncmp(u1 *s1, int l1, u1 *s2, int l2)
{
+ ARCH_FUNCTION_NAME(utf_s1_s2_strncmp);
+
/* Compare shortest common run length */
int cmplen = (l1 < l2) ? l1 : l2;
- jbyte rc = strncmp(s1, s2, cmplen);
+ jbyte rc = portable_strncmp(s1, s2, cmplen);
/*
* THIS LOGIC IS THE SAME AS FOR unicode_strncmp(), BUT
@@ -346,24 +359,32 @@
/* First character of @b s2 past length of @b s1 */
return((jbyte) (0 - s2[l1]));
}
-} /* END of s1_s2_strncmp() */
+} /* END of utf_s1_s2_strncmp() */
/*!
- * @brief Compare two UTF strings from constant_pool, @b s1 minus @b s2
+ * @brief Compare two UTF strings from @c @b constant_pool as
+ * @b s1 minus @b s2
+ *
*
* @param s1 First of two UTF strings to compare
*
* @param s2 Second of two UTF strings to compare
*
+ *
* @returns lexicographical value of first difference in strings,
* else 0.
*
*/
jbyte utf_utf_strcmp(CONSTANT_Utf8_info *s1, CONSTANT_Utf8_info *s2)
{
+ ARCH_FUNCTION_NAME(utf_);
+
/* Perform unified comparison of both UTF strings */
- return(s1_s2_strncmp(s1->bytes, s1->length, s2->bytes, s2->length));
+ return(utf_s1_s2_strncmp(s1->bytes,
+ s1->length,
+ s2->bytes,
+ s2->length));
} /* END of utf_utf_strcmp() */
@@ -372,11 +393,12 @@
* @brief Compare contents of null-terminated string to contents of
* a UTF string from a class file structure.
*
+ *
* @param s1 Null-terminated string name
*
* @param pcfs2 ClassFile where UTF string is found
*
- * @param cpidx2 Index in @b pcfs2 constant_pool of UTF string
+ * @param cpidx2 Index in @b pcfs2 @c @b constant_pool of UTF string
*
*
* @returns lexicographical value of first difference in strings,
@@ -387,14 +409,16 @@
ClassFile *pcfs2,
jvm_constant_pool_index cpidx2)
{
- int l1 = strlen(s1);
+ ARCH_FUNCTION_NAME(utf_);
+
+ int l1 = portable_strlen(s1);
u1 *s2 = PTR_CP_THIS_STRNAME(pcfs2, cpidx2);
int l2 = CP_THIS_STRLEN(pcfs2, cpidx2);
/* Perform unified comparison of null-terminated vs UTF string */
- return(s1_s2_strncmp(s1, l1, s2, l2));
+ return(utf_s1_s2_strncmp(s1, l1, s2, l2));
} /* END of utf_prchar_pcfs_strcmp() */
@@ -403,11 +427,12 @@
* @brief Compare contents of UTF string to contents of a UTF string
* from a class file structure.
*
+ *
* @param s1 UTF string name
*
* @param pcfs2 ClassFile where UTF string is found
*
- * @param cpidx2 Index in @b pcfs2 constant_pool of UTF string
+ * @param cpidx2 Index in @b pcfs2 @c @b constant_pool of UTF string
*
*
* @returns lexicographical value of first difference in strings,
@@ -418,12 +443,14 @@
ClassFile *pcfs2,
jvm_constant_pool_index cpidx2)
{
+ ARCH_FUNCTION_NAME(utf_);
+
u1 *s2 = PTR_CP_THIS_STRNAME(pcfs2, cpidx2);
int l2 = CP_THIS_STRLEN(pcfs2, cpidx2);
/* Perform unified comparison of null-terminated vs UTF string */
- return(s1_s2_strncmp(s1->bytes, s1->length, s2, l2));
+ return(utf_s1_s2_strncmp(s1->bytes, s1->length, s2, l2));
} /* END of utf_pcfs_strcmp() */
@@ -433,14 +460,15 @@
*
* Compare a UTF or null-terminated string containing a
* formatted or unformatted class name with an @e unformatted UTF
- * string from constant_pool.
+ * string from @c @b constant_pool.
* Compare @b s1 minus @b s2, but skipping, where applicable,
* the @b s1 initial BASETYPE_CHAR_L and the terminating
* BASETYPE_CHAR_L_TERM, plus any array dimension modifiers. The second
- * string is specified by a constant_pool index. Notice that there
- * are @e NO formatted class string names in the (CONSTANT_Class_info)
- * entries of the constant_pool because such would be redundant. (Such
- * entries @e are the @e formal definition of the class.)
+ * string is specified by a @c @b constant_pool index. Notice that
+ * there are @e NO formatted class string names in the
+ * (CONSTANT_Class_info) entries of the @c @b constant_pool because
+ * such would be redundant. (Such entries @e are the @e formal
+ * definition of the class.)
*
*
* @param s1 UTF string pointer to u1 array of characters.
@@ -450,7 +478,7 @@
* @param pcfs2 ClassFile structure containing second string
* (containing an @e unformatted class name)
*
- * @param cpidx2 constant_pool index of CONSTANT_Class_info entry
+ * @param cpidx2 @c @b constant_pool index of CONSTANT_Class_info entry
* whose name will be compared (by getting its
* @link CONSTANT_Class_info#name_index name_index@endlink
* and the UTF string name of it)
@@ -465,6 +493,8 @@
ClassFile *pcfs2,
jvm_constant_pool_index cpidx2)
{
+ ARCH_FUNCTION_NAME(utf_);
+
CONSTANT_Class_info *pci = PTR_CP_ENTRY_CLASS(pcfs2, cpidx2);
u1 *s2 = PTR_CP_THIS_STRNAME(pcfs2, pci->name_index);
@@ -475,7 +505,7 @@
s1++; /* Point PAST the BASETYPE_CHAR_L character */
l1--;
- u1 *ps1end = strchr(s1, BASETYPE_CHAR_L_TERM);
+ u1 *ps1end = portable_strchr(s1, BASETYPE_CHAR_L_TERM);
/* Should @e always be @link #rtrue rtrue@endlink */
if (rnull != ps1end)
@@ -489,7 +519,7 @@
* Perform unified comparison of (possibly) null-terminated
* vs UTF string
*/
- return(s1_s2_strncmp(s1, l1, s2, l2));
+ return(utf_s1_s2_strncmp(s1, l1, s2, l2));
} /* END of utf_common_classname_strcmp() */
@@ -497,7 +527,7 @@
/*!
* @brief Compare a null-terminated string containing a
* formatted or unformatted class name with an @e unformatted UTF
- * string from constant_pool.
+ * string from @c @b constant_pool.
*
*
* @param s1 Null-terminated string to compare, containing
@@ -507,7 +537,7 @@
* @param pcfs2 ClassFile structure containing second string
* (containing an @e unformatted class name)
*
- * @param cpidx2 constant_pool index of CONSTANT_Class_info entry
+ * @param cpidx2 @c @b constant_pool index of CONSTANT_Class_info entry
* whose name will be compared (by getting its
* @link CONSTANT_Class_info#name_index name_index@endlink
* and the UTF string name of it)
@@ -521,8 +551,10 @@
ClassFile *pcfs2,
jvm_constant_pool_index cpidx2)
{
+ ARCH_FUNCTION_NAME(utf_);
+
return(utf_common_classname_strcmp((u1 *) s1,
- strlen(s1),
+ portable_strlen(s1),
pcfs2,
cpidx2));
@@ -532,7 +564,7 @@
/*!
* @brief Compare a UTF string containing a
* formatted or unformatted class name with an @e unformatted UTF
- * string from constant_pool.
+ * string from @c @b constant_pool.
*
*
* @param s1 UTF string to compare, containing formatted @e or
@@ -541,7 +573,7 @@
* @param pcfs2 ClassFile structure containing second string
* (containing an @e unformatted class name)
*
- * @param cpidx2 constant_pool index of CONSTANT_Class_info entry
+ * @param cpidx2 @c @b constant_pool index of CONSTANT_Class_info entry
* whose name will be compared (by getting its
* @link CONSTANT_Class_info#name_index name_index@endlink
* and the UTF string name of it)
@@ -555,6 +587,8 @@
ClassFile *pcfs2,
jvm_constant_pool_index cpidx2)
{
+ ARCH_FUNCTION_NAME(utf_);
+
return(utf_common_classname_strcmp(s1->bytes,
s1->length,
pcfs2,
@@ -587,8 +621,8 @@
* @param inbfr CONSTANT_Utf8_info string.
*
*
- * @returns Number of array dimensions in string. For example,
- * this string contains three array dimensions:
+ * @returns Number of array dimensions in string. For example,
+ * this string contains three array dimensions:
*
* @c @b [[[Lsome/path/name/filename;
*
@@ -599,6 +633,8 @@
jvm_array_dim utf_get_utf_arraydims(CONSTANT_Utf8_info *inbfr)
{
+ ARCH_FUNCTION_NAME(utf_);
+
/* Make return code wider than max to check overflow */
u4 rc = 0;
@@ -632,13 +668,15 @@
* @param inbfr CONSTANT_Utf8_info string.
*
*
- * @returns @link #rtrue rtrue@endlink if this is an array
- * specfication, else @link #rfalse rfalse@endlink.
+ * @returns @link #rtrue rtrue@endlink if this is an array
+ * specfication, else @link #rfalse rfalse@endlink.
*
*/
rboolean utf_isarray(CONSTANT_Utf8_info *inbfr)
{
+ ARCH_FUNCTION_NAME(utf_);
+
return((BASETYPE_CHAR_ARRAY == (u1)inbfr->bytes[0]) ? rtrue : rfalse);
} /* END of utf_isarray() */
@@ -656,8 +694,10 @@
* @c @b [[[LClassName; and the difference is benign,
* but that is not its purpose.
*
+ *
* @param src Pointer to UTF string, most likely from constant pool
*
+ *
* @returns Null-terminated string @c @b LClasSName; in heap
* or @link #rnull rnull@endlink if heap alloc error.
*
@@ -665,6 +705,8 @@
rchar *utf_utf2prchar_classname(CONSTANT_Utf8_info *src)
{
+ ARCH_FUNCTION_NAME(utf_);
+
/* Retrieve string from UTF data first */
rchar *pstr = utf_utf2prchar(src);
@@ -681,7 +723,7 @@
src->length, /* data */
rfalse);
- int pstrlen = strlen(pstr);
+ int pstrlen = portable_strlen(pstr);
rboolean isfmt = nts_prchar_isclassformatted(pstr);
if (rtrue == isfmt)
@@ -691,7 +733,7 @@
* ignoring excess allocation when formatting is @e added
* to string.
*/
- memcpy(&rc[0], pstr, pstrlen);
+ portable_memcpy(&rc[0], pstr, pstrlen);
rc[pstrlen] = '\0';
}
else
@@ -700,7 +742,7 @@
rc[0] = BASETYPE_CHAR_L;
/* Copy to heap area */
- memcpy(&rc[1], pstr, pstrlen);
+ portable_memcpy(&rc[1], pstr, pstrlen);
/* Append end formatting and NUL character */
rc[1 + pstrlen] = BASETYPE_CHAR_L_TERM;
@@ -736,6 +778,8 @@
rboolean utf_utf_isclassformatted(CONSTANT_Utf8_info *src)
{
+ ARCH_FUNCTION_NAME(utf_);
+
jvm_utf_string_index utfidx;
rboolean rc = rfalse;
@@ -801,7 +845,7 @@
* as @c @b LClassName; and which may also have
* array descriptor prefixed, thus
* @c @b [[LClassName; . This will
- * typically be an entry from the constant_pool.
+ * typically be an entry from the @c @b constant_pool.
*
*
* @returns heap-allocated buffer containing @c @b ClassName
@@ -818,6 +862,8 @@
cp_info_dup *utf_utf2utf_unformatted_classname(cp_info_dup *inbfr)
{
+ ARCH_FUNCTION_NAME(utf_);
+
rchar *pstr = utf_utf2prchar(PTR_THIS_CP_Utf8(inbfr));
rchar *punf = nts_prchar2prchar_unformatted_classname(pstr);
Modified: incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/util.h
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/util.h?rev=326481&r1=326480&r2=326481&view=diff
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/util.h (original)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/bootjvm/bootJVM/jvm/src/util.h Wed Oct 19 01:41:30 2005
@@ -32,6 +32,33 @@
*
* @link jvm/src/nts.c nts.c@endlink
*
+ * @link jvm/src/portable_libc.c portable_libc.c@endlink
+ *
+ * @link jvm/src/portable_libm.c portable_libm.c@endlink
+ *
+ * @link jvm/src/portable_jmp_buf.c portable_jmp_buf.c@endlink
+ *
+ * @link jvm/src/unicode.c unicode.c@endlink
+ *
+ * @link jvm/src/utf.c utf.c@endlink
+ *
+ *
+ * @section Control
+ *
+ * \$URL$
+ *
+ * \$Id$
+ *
+ * Copyright 2005 The Apache Software Foundation
+ * or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 ("the License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
* @link jvm/src/unicode.c unicode.c@endlink
*
* @link jvm/src/utf.c utf.c@endlink
@@ -39,7 +66,9 @@
*
* @section Control
*
- * \$URL$ \$Id$
+ * \$URL$
+ *
+ * \$Id$
*
* Copyright 2005 The Apache Software Foundation
* or its licensors, as applicable.
@@ -63,13 +92,16 @@
* @date \$LastChangedDate$
*
* @author \$LastChangedBy$
+ *
* Original code contributed by Daniel Lydick on 09/28/2005.
*
* @section Reference
*
*/
-ARCH_COPYRIGHT_APACHE(util, h, "$URL$ $Id$");
+ARCH_HEADER_COPYRIGHT_APACHE(util, h,
+"$URL$",
+"$Id$");
/* Prototypes for functions in 'bytegames.c' */
@@ -97,13 +129,15 @@
jint *msword,
jint *lsword);
/*!
- * @todo Make sure GETRI4() works with -m64 compilations (64-bit ptrs)
+ * @todo HARMONY-6-jvm-util.h-1 Make sure GETRI4() works
+ * with -m64 compilations (64-bit ptrs)
*
- * @todo Make sure GETRL8() works with -m64 compilations (64-bit ptrs)
+ * @todo HARMONY-6-jvm-util.h-2 Make sure GETRL8() works
+ * with -m64 compilations (64-bit ptrs)
*
*
- * @internal See @link jvm/src/arch.h arch.h@endlink for the
- * origin of architecture-specific @c @b \#define's as used below:
+ * @internal See @link jvm/src/arch.h arch.h@endlink for the origin
+ * of architecture-specific @c @b \#define's as used below:
*
*/
#ifdef ARCH_ODD_ADDRESS_SIGSEGV
@@ -112,9 +146,9 @@
#define GETRL8(ptr) bytegames_getrl8(ptr)
#else
#ifdef ARCH_BIG_ENDIAN
-#define GETRS2(ptr) (*(signed rushort *) ptr)
-#define GETRI4(ptr) (*(signed ruint *) ptr)
-#define GETRL8(ptr) (*(signed rulong *) ptr)
+#define GETRS2(ptr) (*(rushort *) (ptr))
+#define GETRI4(ptr) (*(ruint *) (ptr))
+#define GETRL8(ptr) (*(rulong *) (ptr))
#else
#define GETRS2(ptr) bytegames_getrs2(ptr)
#define GETRI4(ptr) bytegames_getri4(ptr)
@@ -143,8 +177,8 @@
/*!
* @internal Big endian architectures do not need to swap anything
- * since the JVM spec declares its (short) and (int) structures
- * as big endian.
+ * since the JVM spec declares its (short) and (int)
+ * structures as big endian.
*
*/
@@ -164,10 +198,10 @@
#ifndef I_AM_STDIO_C
extern rvoid sysDbgMsg(jvm_debug_level_enum dml,
- rchar *fn,
+ const rchar *fn,
rchar *fmt,
...);
-extern rvoid sysErrMsg(rchar *fn, rchar *fmt, ...);
+extern rvoid sysErrMsg(const rchar *fn, rchar *fmt, ...);
extern rvoid sysErrMsgBfrFormat(rchar *bfr, rchar *fn, rchar *fmt, ...);
extern rvoid sprintfLocal(rchar *bfr, rchar *fmt, ...);
extern rvoid fprintfLocalStderr(rchar *fmt, ...);
@@ -176,10 +210,10 @@
/*!
* @internal <b>DO NOT</b> (!) define prototypes for
- * _printfLocal() or _fprintfLocal() or _sprintfLocal().
- * They are meant to promote use of printfLocal() and
- * fprintfLocal() and sprintfLocal() instead, so let
- * compile warnings help.
+ * _printfLocal() or _fprintfLocal() or _sprintfLocal().
+ * They are meant to promote use of printfLocal() and
+ * fprintfLocal() and sprintfLocal() instead, so let
+ * compile warnings help.
*
*/