Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) $(srcdir)/../system.h and $(JAVA_TREE_H).
* Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) $(srcdir)/../system.h and $(JAVA_TREE_H). (jcf-io.o): Depend on $(JAVA_TREE_H). (mangle.o): Likewise. * check-init.c (check_cond_init): Add static prototype. * class.c (build_java_method_type, hashUtf8String, make_field_value, get_dispatch_vector, get_dispatch_table, append_gpp_mangled_type, mangle_static_field): Likewise. (strLengthUtf8): Hide unused definition. (hashUtf8String): Const-ify. (make_field_value): Un-ANSI-fy. * constants.c: Move inclusion of jcf.h above java-tree.h. (set_constant_entry, find_class_or_string_constant, find_name_and_type_constant, get_tag_node, build_constant_data_ref): Add static prototype. * decl.c (push_jvm_slot, builtin_function, lookup_name_current_level): Likewise. (builtin_function): Const-ify. * except.c (expand_start_java_handler, expand_end_java_handler): Add static prototype. * expr.c (flush_quick_stack, push_value, pop_value, java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, build_java_ret, expand_java_multianewarray, expand_java_arraystore, expand_java_arrayload, expand_java_array_length, build_java_monitor, expand_java_pushc, expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, expand_compare, expand_test, expand_cond, expand_java_goto, expand_java_call, expand_java_ret, pop_arguments, expand_invoke, expand_java_field_op, java_push_constant_from_pool): Likewise. (decode_newarray_type, expand_iinc): Un-ANSI-fy. (build_java_arraynull_check): Mark parameters `node' and `type' with ATTRIBUTE_UNUSED. (note_label): Likewise for parameter `current_pc'. (expand_java_call, expand_java_ret): Hide unused definition. * java-tree.h (make_class, build_constants_constructor, java_set_exception_lang_code, pop_labeled_block, emit_handlers, init_outgoing_cpool, register_class, emit_register_classes, java_layout_seen_class_methods): Prototype. (unicode_mangling_length): Const-ify. (append_gpp_mangled_name, append_gpp_mangled_classtype, emit_unicode_mangled_name, format_int, format_uint, jcf_trim_old_input, jcf_print_utf8, jcf_print_char, jcf_print_utf8_replace, open_class): Prototype. * jcf-dump.c: Include "config.h", not <config.h>. Don't include <stdio.h>. Include tree.h/java-tree.h. (utf8_equal_string usage, process_class): Add static prototype. (open_class): Don't prototype this here. (utf8_equal_string): Match arguments to format specifiers. (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, TABLE_SWITCH, disassemble_method): Likewise. * jcf-io.c: Include tree.h/java-tree.h. (open_class, find_classfile, jcf_print_utf8, jcf_print_utf8_replace): Const-ify. * jcf-parse.c (parse_zip_file_entries, process_zip_dir, parse_class_file): Add static prototype. (find_in_current_zip): Match definition to existing static prototype. * jcf-write.c: Include jcf.h before tree.h/java-tree.h. (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, finish_jcf_block, define_jcf_label, get_jcf_label_here, put_linenumber, localvar_alloc, localvar_free, get_access_flags, write_chunks, adjust_typed_op, generate_bytecode_conditional, generate_bytecode_return, perform_relocations, init_jcf_state, init_jcf_method, release_jcf_state, generate_classfile): Add static prototype. (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. (make_class_file_name): Const-ify. * jcf.h (find_classfile): Const-ify. * jv-scan.c (reset_report): Remove prototype. * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. (error): Rewrite to allow varargs. * lang.c (lang_f_options): Const-ify. * lex.c (java_parse_escape_sequence): Add static prototype. (java_allocate_new_line): Match definition to existing static prototype. * mangle.c Include tree.h/java-tree.h. (unicode_mangling_length, emit_unicode_mangled_name, append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. * parse.h (jdep_code): Remove trailing comma in enumeration. (java_get_line_col): Move prototype outside of !JC1_LITE test. (reset_report): Add prototype. * verify.c (push_pending_label, merge_types): Add static prototypes. * zipfile.h (opendir_in_zip, open_in_zip): Prototype. From-SVN: r25878
This commit is contained in:
parent
9f12f2f3d9
commit
4bcde32e86
@ -1,3 +1,112 @@
|
||||
Sun Mar 21 08:30:30 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
|
||||
$(srcdir)/../system.h and $(JAVA_TREE_H).
|
||||
(jcf-io.o): Depend on $(JAVA_TREE_H).
|
||||
(mangle.o): Likewise.
|
||||
|
||||
* check-init.c (check_cond_init): Add static prototype.
|
||||
|
||||
* class.c (build_java_method_type, hashUtf8String,
|
||||
make_field_value, get_dispatch_vector, get_dispatch_table,
|
||||
append_gpp_mangled_type, mangle_static_field): Likewise.
|
||||
(strLengthUtf8): Hide unused definition.
|
||||
(hashUtf8String): Const-ify.
|
||||
(make_field_value): Un-ANSI-fy.
|
||||
|
||||
* constants.c: Move inclusion of jcf.h above java-tree.h.
|
||||
(set_constant_entry, find_class_or_string_constant,
|
||||
find_name_and_type_constant, get_tag_node,
|
||||
build_constant_data_ref): Add static prototype.
|
||||
|
||||
* decl.c (push_jvm_slot, builtin_function,
|
||||
lookup_name_current_level): Likewise.
|
||||
(builtin_function): Const-ify.
|
||||
|
||||
* except.c (expand_start_java_handler, expand_end_java_handler):
|
||||
Add static prototype.
|
||||
|
||||
* expr.c (flush_quick_stack, push_value, pop_value,
|
||||
java_stack_swap, java_stack_dup, build_java_athrow,
|
||||
build_java_jsr, build_java_ret, expand_java_multianewarray,
|
||||
expand_java_arraystore, expand_java_arrayload,
|
||||
expand_java_array_length, build_java_monitor, expand_java_pushc,
|
||||
expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
|
||||
expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
|
||||
expand_compare, expand_test, expand_cond, expand_java_goto,
|
||||
expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
|
||||
expand_java_field_op, java_push_constant_from_pool): Likewise.
|
||||
|
||||
(decode_newarray_type, expand_iinc): Un-ANSI-fy.
|
||||
(build_java_arraynull_check): Mark parameters `node' and `type'
|
||||
with ATTRIBUTE_UNUSED.
|
||||
(note_label): Likewise for parameter `current_pc'.
|
||||
(expand_java_call, expand_java_ret): Hide unused definition.
|
||||
|
||||
* java-tree.h (make_class, build_constants_constructor,
|
||||
java_set_exception_lang_code, pop_labeled_block, emit_handlers,
|
||||
init_outgoing_cpool, register_class, emit_register_classes,
|
||||
java_layout_seen_class_methods): Prototype.
|
||||
(unicode_mangling_length): Const-ify.
|
||||
(append_gpp_mangled_name, append_gpp_mangled_classtype,
|
||||
emit_unicode_mangled_name, format_int, format_uint,
|
||||
jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
|
||||
jcf_print_utf8_replace, open_class): Prototype.
|
||||
|
||||
* jcf-dump.c: Include "config.h", not <config.h>. Don't include
|
||||
<stdio.h>. Include tree.h/java-tree.h.
|
||||
(utf8_equal_string usage, process_class): Add static prototype.
|
||||
(open_class): Don't prototype this here.
|
||||
(utf8_equal_string): Match arguments to format specifiers.
|
||||
(HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
|
||||
TABLE_SWITCH, disassemble_method): Likewise.
|
||||
|
||||
* jcf-io.c: Include tree.h/java-tree.h.
|
||||
(open_class, find_classfile, jcf_print_utf8,
|
||||
jcf_print_utf8_replace): Const-ify.
|
||||
|
||||
* jcf-parse.c (parse_zip_file_entries, process_zip_dir,
|
||||
parse_class_file): Add static prototype.
|
||||
(find_in_current_zip): Match definition to existing static
|
||||
prototype.
|
||||
|
||||
* jcf-write.c: Include jcf.h before tree.h/java-tree.h.
|
||||
(alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
|
||||
finish_jcf_block, define_jcf_label, get_jcf_label_here,
|
||||
put_linenumber, localvar_alloc, localvar_free, get_access_flags,
|
||||
write_chunks, adjust_typed_op, generate_bytecode_conditional,
|
||||
generate_bytecode_return, perform_relocations, init_jcf_state,
|
||||
init_jcf_method, release_jcf_state, generate_classfile):
|
||||
Add static prototype.
|
||||
(emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
|
||||
(make_class_file_name): Const-ify.
|
||||
|
||||
* jcf.h (find_classfile): Const-ify.
|
||||
|
||||
* jv-scan.c (reset_report): Remove prototype.
|
||||
|
||||
* jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
|
||||
(error): Rewrite to allow varargs.
|
||||
|
||||
* lang.c (lang_f_options): Const-ify.
|
||||
|
||||
* lex.c (java_parse_escape_sequence): Add static prototype.
|
||||
(java_allocate_new_line): Match definition to existing static
|
||||
prototype.
|
||||
|
||||
* mangle.c Include tree.h/java-tree.h.
|
||||
(unicode_mangling_length, emit_unicode_mangled_name,
|
||||
append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
|
||||
|
||||
* parse.h (jdep_code): Remove trailing comma in enumeration.
|
||||
(java_get_line_col): Move prototype outside of !JC1_LITE test.
|
||||
(reset_report): Add prototype.
|
||||
|
||||
* verify.c (push_pending_label, merge_types): Add static
|
||||
prototypes.
|
||||
|
||||
* zipfile.h (opendir_in_zip, open_in_zip): Prototype.
|
||||
|
||||
1999-03-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* parse.y (find_applicable_accessible_methods_list): Extend the
|
||||
|
@ -274,7 +274,8 @@ clean: mostlyclean
|
||||
force:
|
||||
|
||||
parse.o : $(PARSE_C) jcf-reader.c $(CONFIG_H) $(srcdir)/../system.h
|
||||
jcf-dump.o : jcf-dump.c jcf-reader.c jcf.h javaop.h javaop.def
|
||||
jcf-dump.o : $(CONFIG_H) $(srcdir)/../system.h $(JAVA_TREE_H) jcf-dump.c \
|
||||
jcf-reader.c jcf.h javaop.h javaop.def
|
||||
gjavah.o : $(CONFIG_H) $(srcdir)/../system.h gjavah.c \
|
||||
jcf-reader.c jcf.h javaop.h
|
||||
buffer.o : buffer.c $(CONFIG_H) buffer.h $(srcdir)/../gansidecl.h \
|
||||
@ -297,7 +298,7 @@ expr.o : expr.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h $(srcdir)/../real.h \
|
||||
java-except.h java-except.h parse.h $(srcdir)/../toplev.h \
|
||||
$(srcdir)/../system.h
|
||||
jcf-depend.o : jcf-depend.c $(CONFIG_H) $(srcdir)/../system.h jcf.h
|
||||
jcf-io.o : jcf-io.c $(CONFIG_H) $(srcdir)/../system.h
|
||||
jcf-io.o : jcf-io.c $(CONFIG_H) $(srcdir)/../system.h $(JAVA_TREE_H)
|
||||
jcf-parse.o : jcf-parse.c $(CONFIG_H) $(JAVA_TREE_H) $(srcdir)/../flags.h \
|
||||
$(srcdir)/../input.h java-except.h $(srcdir)/../system.h \
|
||||
$(srcdir)/../toplev.h $(PARSE_H)
|
||||
@ -307,7 +308,7 @@ jv-scan.o : jv-scan.c $(CONFIG_H) $(srcdir)/../system.h
|
||||
jvgenmain.o : jvgenmain.c $(CONFIG_H) $(srcdir)/../system.h
|
||||
lang.o : lang.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h $(srcdir)/../input.h \
|
||||
$(srcdir)/../toplev.h $(srcdir)/../system.h
|
||||
mangle.o : mangle.c $(CONFIG_H) jcf.h $(srcdir)/../system.h \
|
||||
mangle.o : mangle.c $(CONFIG_H) jcf.h $(JAVA_TREE_H) $(srcdir)/../system.h \
|
||||
$(srcdir)/../toplev.h
|
||||
parse-scan.o : $(CONFIG_H) $(srcdir)/../system.h $(srcdir)/../toplev.h
|
||||
typeck.o : typeck.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h convert.h \
|
||||
|
@ -99,6 +99,7 @@ static tree wfl;
|
||||
|
||||
static void check_bool_init PROTO ((tree, words, words, words));
|
||||
static void check_init PROTO ((tree, words));
|
||||
static void check_cond_init PROTO ((tree, tree, tree, words, words, words));
|
||||
|
||||
#if 0
|
||||
#define ALLOC_WORDS(NUM) ((word*) xmalloc ((NUM) * sizeof (word)))
|
||||
@ -123,7 +124,7 @@ static void check_init PROTO ((tree, words));
|
||||
definite assignment.
|
||||
BEFORE, WHEN_FALSE, and WHEN_TRUE are as in check_bool_init. */
|
||||
|
||||
void
|
||||
static void
|
||||
check_cond_init (test_exp, then_exp, else_exp,
|
||||
before, when_false, when_true)
|
||||
tree test_exp, then_exp, else_exp;
|
||||
|
@ -38,6 +38,13 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
|
||||
static tree mangle_class_field PROTO ((tree class));
|
||||
static tree make_method_value PROTO ((tree));
|
||||
static tree build_java_method_type PROTO ((tree, tree, int));
|
||||
static int32 hashUtf8String PROTO ((const char *, int));
|
||||
static tree make_field_value PROTO ((tree));
|
||||
static tree get_dispatch_vector PROTO ((tree));
|
||||
static tree get_dispatch_table PROTO ((tree, tree));
|
||||
static void append_gpp_mangled_type PROTO ((struct obstack *, tree));
|
||||
static tree mangle_static_field PROTO ((tree));
|
||||
|
||||
static rtx registerClass_libfunc;
|
||||
|
||||
@ -382,7 +389,7 @@ find_named_method (list, name)
|
||||
}
|
||||
#endif
|
||||
|
||||
tree
|
||||
static tree
|
||||
build_java_method_type (fntype, this_class, access_flags)
|
||||
tree fntype;
|
||||
tree this_class;
|
||||
@ -503,6 +510,7 @@ set_constant_value (field, constant)
|
||||
|
||||
/* Count the number of Unicode chars encoded in a given Ut8 string. */
|
||||
|
||||
#if 0
|
||||
int
|
||||
strLengthUtf8 (str, len)
|
||||
char *str;
|
||||
@ -517,19 +525,20 @@ strLengthUtf8 (str, len)
|
||||
}
|
||||
return str_length;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* Calculate a hash value for a string encoded in Utf8 format.
|
||||
* This returns the same hash value as specified for java.lang.String.hashCode.
|
||||
*/
|
||||
|
||||
int32
|
||||
static int32
|
||||
hashUtf8String (str, len)
|
||||
char *str;
|
||||
const char *str;
|
||||
int len;
|
||||
{
|
||||
register unsigned char* ptr = (unsigned char*) str;
|
||||
register unsigned char *limit = ptr + len;
|
||||
register const unsigned char* ptr = (const unsigned char*) str;
|
||||
register const unsigned char *limit = ptr + len;
|
||||
int32 hash = 0;
|
||||
for (; ptr < limit;)
|
||||
{
|
||||
@ -841,8 +850,9 @@ get_access_flags_from_decl (decl)
|
||||
abort ();
|
||||
}
|
||||
|
||||
tree
|
||||
make_field_value (tree fdecl)
|
||||
static tree
|
||||
make_field_value (fdecl)
|
||||
tree fdecl;
|
||||
{
|
||||
tree finit, info;
|
||||
int bsize, flags;
|
||||
@ -917,7 +927,7 @@ make_method_value (mdecl)
|
||||
return minit;
|
||||
}
|
||||
|
||||
tree
|
||||
static tree
|
||||
get_dispatch_vector (type)
|
||||
tree type;
|
||||
{
|
||||
@ -950,7 +960,7 @@ get_dispatch_vector (type)
|
||||
return vtable;
|
||||
}
|
||||
|
||||
tree
|
||||
static tree
|
||||
get_dispatch_table (type, this_class_addr)
|
||||
tree type, this_class_addr;
|
||||
{
|
||||
@ -1258,7 +1268,7 @@ is_compiled_class (class)
|
||||
|
||||
/* Append the mangled name of TYPE onto OBSTACK. */
|
||||
|
||||
void
|
||||
static void
|
||||
append_gpp_mangled_type (obstack, type)
|
||||
struct obstack *obstack;
|
||||
tree type;
|
||||
@ -1333,7 +1343,7 @@ mangle_class_field (class)
|
||||
|
||||
/* Build the mangled (assembly-level) name of the static field FIELD. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
mangle_static_field (field)
|
||||
tree field;
|
||||
{
|
||||
|
@ -23,16 +23,22 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
#include "jcf.h"
|
||||
#include "toplev.h"
|
||||
|
||||
extern struct obstack permanent_obstack;
|
||||
|
||||
static void set_constant_entry PROTO ((CPool *, int, int, jword));
|
||||
static int find_class_or_string_constant PROTO ((CPool *, int, tree));
|
||||
static int find_name_and_type_constant PROTO ((CPool *, tree, tree));
|
||||
static tree get_tag_node PROTO ((int));
|
||||
static tree build_constant_data_ref PROTO ((void));
|
||||
|
||||
/* Set the INDEX'th constant in CPOOL to have the given TAG and VALUE. */
|
||||
|
||||
void
|
||||
static void
|
||||
set_constant_entry (cpool, index, tag, value)
|
||||
CPool *cpool;
|
||||
int index;
|
||||
@ -113,7 +119,7 @@ find_utf8_constant (cpool, name)
|
||||
return find_constant1 (cpool, CONSTANT_Utf8, (jword) name);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
find_class_or_string_constant (cpool, tag, name)
|
||||
CPool *cpool;
|
||||
int tag;
|
||||
@ -155,7 +161,7 @@ find_string_constant (cpool, string)
|
||||
/* Find (or create) a CONSTANT_NameAndType matching NAME and TYPE.
|
||||
Return its index in the constant pool CPOOL. */
|
||||
|
||||
int
|
||||
static int
|
||||
find_name_and_type_constant (cpool, name, type)
|
||||
CPool *cpool;
|
||||
tree name;
|
||||
@ -316,7 +322,7 @@ tree current_constant_pool_data_ref;
|
||||
/* A Cache for build_int_2 (CONSTANT_XXX, 0). */
|
||||
static tree tag_nodes[13];
|
||||
|
||||
tree
|
||||
static tree
|
||||
get_tag_node (tag)
|
||||
int tag;
|
||||
{
|
||||
@ -378,7 +384,7 @@ alloc_class_constant (clas)
|
||||
|
||||
/* Return a reference to the data array of the current constant pool. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
build_constant_data_ref ()
|
||||
{
|
||||
if (current_constant_pool_data_ref == NULL_TREE)
|
||||
|
@ -33,6 +33,11 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "jcf.h"
|
||||
#include "toplev.h"
|
||||
|
||||
static tree push_jvm_slot PROTO ((int, tree));
|
||||
static tree builtin_function PROTO ((const char *, tree,
|
||||
enum built_in_function, const char *));
|
||||
static tree lookup_name_current_level PROTO ((tree));
|
||||
|
||||
#ifndef INT_TYPE_SIZE
|
||||
#define INT_TYPE_SIZE BITS_PER_WORD
|
||||
#endif
|
||||
@ -55,7 +60,7 @@ tree pending_local_decls = NULL_TREE;
|
||||
/* Push a local variable or stack slot into the decl_map,
|
||||
and assign it an rtl. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
push_jvm_slot (index, decl)
|
||||
int index;
|
||||
tree decl;
|
||||
@ -396,12 +401,12 @@ tree integer_negative_one_node;
|
||||
If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME,
|
||||
the name to be called if we can't opencode the function. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
builtin_function (name, type, function_code, library_name)
|
||||
char *name;
|
||||
const char *name;
|
||||
tree type;
|
||||
enum built_in_function function_code;
|
||||
char *library_name;
|
||||
const char *library_name;
|
||||
{
|
||||
tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type);
|
||||
DECL_EXTERNAL (decl) = 1;
|
||||
@ -811,7 +816,7 @@ lookup_name (name)
|
||||
/* Similar to `lookup_name' but look only at current binding level and
|
||||
the previous one if its the parameter level. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
lookup_name_current_level (name)
|
||||
tree name;
|
||||
{
|
||||
|
@ -36,6 +36,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "eh-common.h"
|
||||
#include "toplev.h"
|
||||
|
||||
static void expand_start_java_handler PROTO ((struct eh_range *));
|
||||
static void expand_end_java_handler PROTO ((struct eh_range *));
|
||||
|
||||
extern struct obstack permanent_obstack;
|
||||
|
||||
struct eh_range *current_method_handlers;
|
||||
@ -182,7 +185,7 @@ add_handler (start_pc, end_pc, handler, type)
|
||||
|
||||
|
||||
/* if there are any handlers for this range, issue start of region */
|
||||
void
|
||||
static void
|
||||
expand_start_java_handler (range)
|
||||
struct eh_range *range ATTRIBUTE_UNUSED;
|
||||
{
|
||||
@ -217,7 +220,7 @@ prepare_eh_table_type (type)
|
||||
|
||||
/* if there are any handlers for this range, isssue end of range,
|
||||
and then all handler blocks */
|
||||
void
|
||||
static void
|
||||
expand_end_java_handler (range)
|
||||
struct eh_range *range;
|
||||
{
|
||||
|
118
gcc/java/expr.c
118
gcc/java/expr.c
@ -40,6 +40,40 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "toplev.h"
|
||||
#include "except.h"
|
||||
|
||||
static void flush_quick_stack PROTO ((void));
|
||||
static void push_value PROTO ((tree));
|
||||
static tree pop_value PROTO ((tree));
|
||||
static void java_stack_swap PROTO ((void));
|
||||
static void java_stack_dup PROTO ((int, int));
|
||||
static tree build_java_athrow PROTO ((tree));
|
||||
static void build_java_jsr PROTO ((tree, tree));
|
||||
static void build_java_ret PROTO ((tree));
|
||||
static void expand_java_multianewarray PROTO ((tree, int));
|
||||
static void expand_java_arraystore PROTO ((tree));
|
||||
static void expand_java_arrayload PROTO ((tree));
|
||||
static void expand_java_array_length PROTO ((void));
|
||||
static tree build_java_monitor PROTO ((tree, tree));
|
||||
static void expand_java_pushc PROTO ((int, tree));
|
||||
static void expand_java_return PROTO ((tree));
|
||||
static void expand_java_NEW PROTO ((tree));
|
||||
static void expand_java_INSTANCEOF PROTO ((tree));
|
||||
static void expand_java_CHECKCAST PROTO ((tree));
|
||||
static void expand_iinc PROTO ((unsigned int, int, int));
|
||||
static void expand_java_binop PROTO ((tree, enum tree_code));
|
||||
static void note_label PROTO ((int, int));
|
||||
static void expand_compare PROTO ((enum tree_code, tree, tree, int));
|
||||
static void expand_test PROTO ((enum tree_code, tree, int));
|
||||
static void expand_cond PROTO ((enum tree_code, tree, int));
|
||||
static void expand_java_goto PROTO ((int));
|
||||
#if 0
|
||||
static void expand_java_call PROTO ((int, int));
|
||||
static void expand_java_ret PROTO ((tree));
|
||||
#endif
|
||||
static tree pop_arguments PROTO ((tree));
|
||||
static void expand_invoke PROTO ((int, int, int));
|
||||
static void expand_java_field_op PROTO ((int, int, int));
|
||||
static void java_push_constant_from_pool PROTO ((struct JCF *, int));
|
||||
|
||||
static tree operand_type[59];
|
||||
extern struct obstack permanent_obstack;
|
||||
|
||||
@ -168,7 +202,7 @@ unhand_expr (expr)
|
||||
that the expression for a slot may contain decls for stack slots with
|
||||
higher (or the same) index, but not lower. */
|
||||
|
||||
void
|
||||
static void
|
||||
flush_quick_stack ()
|
||||
{
|
||||
int stack_index = stack_pointer;
|
||||
@ -216,7 +250,7 @@ push_type (type)
|
||||
stack_type_map[stack_pointer++] = TYPE_SECOND;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
push_value (value)
|
||||
tree value;
|
||||
{
|
||||
@ -353,7 +387,7 @@ can_widen_reference_to (source_type, target_type)
|
||||
}
|
||||
}
|
||||
|
||||
tree
|
||||
static tree
|
||||
pop_value (type)
|
||||
tree type;
|
||||
{
|
||||
@ -374,7 +408,7 @@ pop_value (type)
|
||||
|
||||
/* Pop and discrad the top COUNT stack slots. */
|
||||
|
||||
void
|
||||
static void
|
||||
java_stack_pop (count)
|
||||
int count;
|
||||
{
|
||||
@ -398,7 +432,7 @@ java_stack_pop (count)
|
||||
|
||||
/* Implement the 'swap' operator (to swap two top stack slots). */
|
||||
|
||||
void
|
||||
static void
|
||||
java_stack_swap ()
|
||||
{
|
||||
tree type1, type2;
|
||||
@ -422,7 +456,7 @@ java_stack_swap ()
|
||||
stack_type_map[stack_pointer - 2] = type1;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
java_stack_dup (size, offset)
|
||||
int size, offset;
|
||||
{
|
||||
@ -467,7 +501,7 @@ java_stack_dup (size, offset)
|
||||
|
||||
/* Calls _Jv_Throw. Discard the contents of the value stack. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
build_java_athrow (node)
|
||||
tree node;
|
||||
{
|
||||
@ -485,7 +519,7 @@ build_java_athrow (node)
|
||||
|
||||
/* Implementation for jsr/ret */
|
||||
|
||||
void
|
||||
static void
|
||||
build_java_jsr (where, ret)
|
||||
tree where;
|
||||
tree ret;
|
||||
@ -497,7 +531,7 @@ build_java_jsr (where, ret)
|
||||
expand_label (ret);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
build_java_ret (location)
|
||||
tree location;
|
||||
{
|
||||
@ -515,7 +549,8 @@ build_java_ret (location)
|
||||
size_int (BITS_PER_UNIT))
|
||||
|
||||
tree
|
||||
decode_newarray_type (int atype)
|
||||
decode_newarray_type (atype)
|
||||
int atype;
|
||||
{
|
||||
switch (atype)
|
||||
{
|
||||
@ -599,9 +634,9 @@ build_java_array_length_access (node)
|
||||
|
||||
tree
|
||||
build_java_arraynull_check (node, expr, type)
|
||||
tree node;
|
||||
tree expr;
|
||||
tree type;
|
||||
tree node ATTRIBUTE_UNUSED;
|
||||
tree expr;
|
||||
tree type ATTRIBUTE_UNUSED;
|
||||
{
|
||||
#if 0
|
||||
static int java_array_access_throws_null_exception = 0;
|
||||
@ -768,7 +803,7 @@ build_new_array (type, length)
|
||||
class pointer, a number of dimensions and the matching number of
|
||||
dimensions. The argument list is NULL terminated. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_multianewarray (class_type, ndim)
|
||||
tree class_type;
|
||||
int ndim;
|
||||
@ -798,7 +833,7 @@ expand_java_multianewarray (class_type, ndim)
|
||||
to make sure that the RHS can be assigned to the array element
|
||||
type. It is not necessary to generate this code if ARRAY is final. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_arraystore (rhs_type_node)
|
||||
tree rhs_type_node;
|
||||
{
|
||||
@ -840,7 +875,7 @@ expand_java_arraystore (rhs_type_node)
|
||||
BOOLEAN/SHORT, we push a promoted type back to the stack.
|
||||
*/
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_arrayload (lhs_type_node )
|
||||
tree lhs_type_node;
|
||||
{
|
||||
@ -864,7 +899,7 @@ expand_java_arrayload (lhs_type_node )
|
||||
/* Expands .length. Makes sure that we deal with and array and may expand
|
||||
a NULL check on the array object. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_array_length ()
|
||||
{
|
||||
tree array = pop_value (ptr_type_node);
|
||||
@ -876,7 +911,7 @@ expand_java_array_length ()
|
||||
/* Emit code for the call to _Jv_Monitor{Enter,Exit}. CALL can be
|
||||
either soft_monitorenter_node or soft_monitorexit_node. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
build_java_monitor (call, object)
|
||||
tree call;
|
||||
tree object;
|
||||
@ -890,7 +925,7 @@ build_java_monitor (call, object)
|
||||
|
||||
/* Emit code for one of the PUSHC instructions. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_pushc (ival, type)
|
||||
int ival;
|
||||
tree type;
|
||||
@ -918,7 +953,7 @@ expand_java_pushc (ival, type)
|
||||
push_value (value);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_return (type)
|
||||
tree type;
|
||||
{
|
||||
@ -941,7 +976,7 @@ build_address_of (value)
|
||||
return build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (value)), value);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_NEW (type)
|
||||
tree type;
|
||||
{
|
||||
@ -956,7 +991,7 @@ expand_java_NEW (type)
|
||||
NULL_TREE));
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_INSTANCEOF (type)
|
||||
tree type;
|
||||
{
|
||||
@ -970,7 +1005,7 @@ expand_java_INSTANCEOF (type)
|
||||
push_value (value);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_CHECKCAST (type)
|
||||
tree type;
|
||||
{
|
||||
@ -983,8 +1018,11 @@ expand_java_CHECKCAST (type)
|
||||
push_value (value);
|
||||
}
|
||||
|
||||
void
|
||||
expand_iinc (unsigned int local_var_index, int ival, int pc)
|
||||
static void
|
||||
expand_iinc (local_var_index, ival, pc)
|
||||
unsigned int local_var_index;
|
||||
int ival;
|
||||
int pc;
|
||||
{
|
||||
tree local_var, res;
|
||||
tree constant_value;
|
||||
@ -1070,7 +1108,7 @@ build_java_binop (op, type, arg1, arg2)
|
||||
return fold (build (op, type, arg1, arg2));
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_binop (type, op)
|
||||
tree type; enum tree_code op;
|
||||
{
|
||||
@ -1205,9 +1243,9 @@ create_label_decl (name)
|
||||
/* This maps a bytecode offset (PC) to various flags. */
|
||||
char *instruction_bits;
|
||||
|
||||
void
|
||||
static void
|
||||
note_label (current_pc, target_pc)
|
||||
int current_pc, target_pc;
|
||||
int current_pc ATTRIBUTE_UNUSED, target_pc;
|
||||
{
|
||||
lookup_label (target_pc);
|
||||
instruction_bits [target_pc] |= BCODE_JUMP_TARGET;
|
||||
@ -1216,7 +1254,7 @@ note_label (current_pc, target_pc)
|
||||
/* Emit code to jump to TARGET_PC if VALUE1 CONDITION VALUE2,
|
||||
where CONDITION is one of one the compare operators. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_compare (condition, value1, value2, target_pc)
|
||||
enum tree_code condition;
|
||||
tree value1, value2;
|
||||
@ -1231,7 +1269,7 @@ expand_compare (condition, value1, value2, target_pc)
|
||||
|
||||
/* Emit code for a TEST-type opcode. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_test (condition, type, target_pc)
|
||||
enum tree_code condition;
|
||||
tree type;
|
||||
@ -1246,7 +1284,7 @@ expand_test (condition, type, target_pc)
|
||||
|
||||
/* Emit code for a COND-type opcode. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_cond (condition, type, target_pc)
|
||||
enum tree_code condition;
|
||||
tree type;
|
||||
@ -1261,7 +1299,7 @@ expand_cond (condition, type, target_pc)
|
||||
expand_compare (condition, value1, value2, target_pc);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_goto (target_pc)
|
||||
int target_pc;
|
||||
{
|
||||
@ -1270,7 +1308,8 @@ expand_java_goto (target_pc)
|
||||
expand_goto (target_label);
|
||||
}
|
||||
|
||||
void
|
||||
#if 0
|
||||
static void
|
||||
expand_java_call (target_pc, return_address)
|
||||
int target_pc, return_address;
|
||||
{
|
||||
@ -1281,9 +1320,9 @@ expand_java_call (target_pc, return_address)
|
||||
expand_goto (target_label);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_ret (return_address)
|
||||
tree return_address;
|
||||
tree return_address ATTRIBUTE_UNUSED;
|
||||
{
|
||||
warning ("ret instruction not implemented");
|
||||
#if 0
|
||||
@ -1292,6 +1331,7 @@ expand_java_ret (return_address)
|
||||
expand_goto (target_label);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Recursive helper function to pop argument types during verifiation. */
|
||||
|
||||
@ -1310,7 +1350,7 @@ pop_argument_types (arg_types)
|
||||
abort ();
|
||||
}
|
||||
|
||||
tree
|
||||
static tree
|
||||
pop_arguments (arg_types)
|
||||
tree arg_types;
|
||||
{
|
||||
@ -1492,7 +1532,7 @@ build_invokeinterface (dtable, method_name, method_signature)
|
||||
METHOD_REF_INDEX is an index into the constant pool.
|
||||
NARGS is the number of arguments, or -1 if not specified. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_invoke (opcode, method_ref_index, nargs)
|
||||
int opcode;
|
||||
int method_ref_index;
|
||||
@ -1599,7 +1639,7 @@ expand_invoke (opcode, method_ref_index, nargs)
|
||||
IS_PUTTING is 1 for putting into a field; 0 for getting from the field.
|
||||
FIELD_REF_INDEX is an index into the constant pool. */
|
||||
|
||||
void
|
||||
static void
|
||||
expand_java_field_op (is_static, is_putting, field_ref_index)
|
||||
int is_static;
|
||||
int is_putting;
|
||||
@ -2131,7 +2171,7 @@ expand_byte_code (jcf, method)
|
||||
} /* for */
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
java_push_constant_from_pool (jcf, index)
|
||||
JCF *jcf;
|
||||
int index;
|
||||
|
@ -482,7 +482,7 @@ extern void jcf_parse PROTO ((struct JCF*));
|
||||
extern tree add_field PROTO ((tree, tree, tree, int));
|
||||
extern tree add_method PROTO ((tree, int, tree, tree));
|
||||
extern tree add_method_1 PROTO ((tree, int, tree, tree));
|
||||
extern tree make_class ();
|
||||
extern tree make_class PROTO ((void));
|
||||
extern tree push_class PROTO ((tree, tree));
|
||||
extern tree unmangle_classname PROTO ((const char *name, int name_length));
|
||||
extern tree parse_signature_string PROTO ((const unsigned char *, int));
|
||||
@ -490,11 +490,10 @@ extern tree get_type_from_signature PROTO ((tree));
|
||||
extern void layout_class PROTO ((tree));
|
||||
extern tree layout_class_method PROTO ((tree, tree, tree, tree));
|
||||
extern void layout_class_methods PROTO ((tree));
|
||||
extern tree make_class ();
|
||||
extern tree build_class_ref PROTO ((tree));
|
||||
extern tree build_dtable_decl PROTO ((tree));
|
||||
extern tree build_internal_class_name PROTO ((tree));
|
||||
extern tree build_constants_constructor ();
|
||||
extern tree build_constants_constructor PROTO ((void));
|
||||
extern tree build_ref_from_constant_pool PROTO ((int));
|
||||
extern tree build_utf8_ref PROTO ((tree));
|
||||
extern tree ident_subst PROTO ((const char*, int,
|
||||
@ -541,9 +540,9 @@ extern tree build_java_arraynull_check PROTO ((tree, tree, tree));
|
||||
extern tree create_label_decl PROTO ((tree));
|
||||
extern void push_labeled_block PROTO ((tree));
|
||||
extern tree prepare_eh_table_type PROTO ((tree));
|
||||
extern void java_set_exception_lang_code PROTO (());
|
||||
extern void java_set_exception_lang_code PROTO ((void));
|
||||
extern tree generate_name PROTO ((void));
|
||||
extern void pop_labeled_block PROTO (());
|
||||
extern void pop_labeled_block PROTO ((void));
|
||||
extern char *lang_printable_name PROTO ((tree, int));
|
||||
extern tree maybe_add_interface PROTO ((tree, tree));
|
||||
extern void set_super_info PROTO ((int, tree, tree, int));
|
||||
@ -552,12 +551,12 @@ extern int interface_of_p PROTO ((tree, tree));
|
||||
extern int inherits_from_p PROTO ((tree, tree));
|
||||
extern void complete_start_java_method PROTO ((tree));
|
||||
extern tree build_result_decl PROTO ((tree));
|
||||
extern void emit_handlers PROTO (());
|
||||
extern void init_outgoing_cpool PROTO (());
|
||||
extern void emit_handlers PROTO ((void));
|
||||
extern void init_outgoing_cpool PROTO ((void));
|
||||
extern void make_class_data PROTO ((tree));
|
||||
extern void register_class PROTO (());
|
||||
extern void register_class PROTO ((void));
|
||||
extern int alloc_name_constant PROTO ((int, tree));
|
||||
extern void emit_register_classes PROTO (());
|
||||
extern void emit_register_classes PROTO ((void));
|
||||
extern void lang_init_source PROTO ((int));
|
||||
extern void write_classfile PROTO ((tree));
|
||||
extern char *print_int_node PROTO ((tree));
|
||||
@ -566,12 +565,12 @@ extern void parse_error_context PVPROTO ((tree cl, const char *, ...))
|
||||
extern tree build_primtype_type_ref PROTO ((char *));
|
||||
extern tree java_get_real_method_name PROTO ((tree));
|
||||
extern void finish_class PROTO ((tree));
|
||||
extern void java_layout_seen_class_methods PROTO (());
|
||||
extern void java_layout_seen_class_methods PROTO ((void));
|
||||
extern void check_for_initialization PROTO ((tree));
|
||||
|
||||
extern tree pushdecl_top_level PROTO ((tree));
|
||||
extern int alloc_class_constant PROTO ((tree));
|
||||
extern int unicode_mangling_length PROTO ((char *, int));
|
||||
extern int unicode_mangling_length PROTO ((const char *, int));
|
||||
extern void init_expr_processing PROTO ((void));
|
||||
extern void push_super_field PROTO ((tree, tree));
|
||||
extern void init_class_processing PROTO ((void));
|
||||
@ -586,8 +585,9 @@ extern int merge_type_state PROTO ((tree));
|
||||
extern void push_type PROTO ((tree));
|
||||
extern void load_type_state PROTO ((tree));
|
||||
extern void add_interface PROTO ((tree, tree));
|
||||
extern void append_gpp_mangled_classtype PROTO ((struct obstack *, char *));
|
||||
extern void emit_unicode_mangled_name PROTO ((struct obstack *, char *, int));
|
||||
extern void append_gpp_mangled_name PROTO ((struct obstack *, const char *, int));
|
||||
extern void append_gpp_mangled_classtype PROTO ((struct obstack *, const char *));
|
||||
extern void emit_unicode_mangled_name PROTO ((struct obstack *, const char *, int));
|
||||
extern tree force_evaluation_order PROTO ((tree));
|
||||
extern int verify_constant_pool PROTO ((struct JCF *));
|
||||
extern void start_java_method PROTO ((tree));
|
||||
@ -608,6 +608,22 @@ extern int find_methodref_index PROTO ((struct CPool *, tree));
|
||||
extern void write_constant_pool PROTO ((struct CPool *, unsigned char *, int));
|
||||
extern int count_constant_pool_bytes PROTO ((struct CPool *));
|
||||
extern int encode_newarray_type PROTO ((tree));
|
||||
#ifdef uint64
|
||||
extern void format_int PROTO ((char *, jlong, int));
|
||||
extern void format_uint PROTO ((char *, uint64, int));
|
||||
#endif
|
||||
extern void jcf_trim_old_input PROTO ((struct JCF *));
|
||||
#ifdef BUFSIZ
|
||||
extern void jcf_print_utf8 PROTO ((FILE *, const unsigned char *, int));
|
||||
extern void jcf_print_char PROTO ((FILE *, int));
|
||||
extern void jcf_print_utf8_replace PROTO ((FILE *, const unsigned char *,
|
||||
int, int, int));
|
||||
# if JCF_USE_STDIO
|
||||
extern char* open_class PROTO ((char *, struct JCF *, FILE *, const char *));
|
||||
# else
|
||||
extern char* open_class PROTO ((char *, struct JCF *, int, const char *));
|
||||
# endif /* JCF_USE_STDIO */
|
||||
#endif
|
||||
|
||||
/* Access flags etc for a method (a FUNCTION_DECL): */
|
||||
|
||||
|
@ -46,11 +46,12 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
|
||||
/* Outout file. */
|
||||
FILE *out;
|
||||
@ -84,15 +85,16 @@ static void print_constant_ref PROTO ((FILE *, JCF *, int));
|
||||
static void disassemble_method PROTO ((JCF*, unsigned char *, int));
|
||||
static void print_name PROTO ((FILE*, JCF*, int));
|
||||
static void print_signature PROTO ((FILE*, JCF*, int, int));
|
||||
static int utf8_equal_string PROTO ((struct JCF*, int, const char *));
|
||||
static int usage PROTO ((void));
|
||||
static void process_class PROTO ((struct JCF *));
|
||||
|
||||
#define PRINT_SIGNATURE_RESULT_ONLY 1
|
||||
#define PRINT_SIGNATURE_ARGS_ONLY 2
|
||||
|
||||
extern char* open_class();
|
||||
|
||||
int
|
||||
static int
|
||||
DEFUN(utf8_equal_string, (jcf, index, value),
|
||||
JCF *jcf AND int index AND char * value)
|
||||
JCF *jcf AND int index AND const char * value)
|
||||
{
|
||||
if (CPOOL_INDEX_IN_RANGE (&jcf->cpool, index)
|
||||
&& JPOOL_TAG (jcf, index) == CONSTANT_Utf8)
|
||||
@ -109,8 +111,8 @@ DEFUN(utf8_equal_string, (jcf, index, value),
|
||||
this_class_index = 0; \
|
||||
if (flag_print_class_info) \
|
||||
fprintf (out, \
|
||||
"Magic number: 0x%0x, minor_version: %d, major_version: %d.\n", \
|
||||
MAGIC, MINOR, MAJOR)
|
||||
"Magic number: 0x%0lx, minor_version: %ld, major_version: %ld.\n",\
|
||||
(long) MAGIC, (long) MINOR, (long) MAJOR)
|
||||
|
||||
#define HANDLE_START_CONSTANT_POOL(COUNT) \
|
||||
if (flag_print_constant_pool) \
|
||||
@ -238,8 +240,8 @@ DEFUN(utf8_equal_string, (jcf, index, value),
|
||||
|
||||
#define HANDLE_CODE_ATTRIBUTE(MAX_STACK, MAX_LOCALS, CODE_LENGTH) \
|
||||
{ COMMON_HANDLE_ATTRIBUTE(JCF, attribute_name, attribute_length); \
|
||||
fprintf (out, ", max_stack:%d, max_locals:%d, code_length:%d\n", \
|
||||
MAX_STACK, MAX_LOCALS, CODE_LENGTH); \
|
||||
fprintf (out, ", max_stack:%ld, max_locals:%ld, code_length:%ld\n", \
|
||||
(long) MAX_STACK, (long) MAX_LOCALS, (long) CODE_LENGTH); \
|
||||
disassemble_method (jcf, jcf->read_ptr, CODE_LENGTH); }
|
||||
|
||||
#define HANDLE_EXCEPTION_TABLE(ENTRIES, COUNT) \
|
||||
@ -345,7 +347,7 @@ DEFUN(print_name, (stream, jcf, name_index),
|
||||
/* If the type of the constant at INDEX matches EXPECTED,
|
||||
print it tersely, otherwise more verbosely. */
|
||||
|
||||
void
|
||||
static void
|
||||
DEFUN(print_constant_terse, (out, jcf, index, expected),
|
||||
FILE *out AND JCF *jcf AND int index AND int expected)
|
||||
{
|
||||
@ -656,14 +658,14 @@ DEFUN(print_exception_table, (jcf, entries, count),
|
||||
|
||||
#include "jcf-reader.c"
|
||||
|
||||
int
|
||||
static int
|
||||
DEFUN (usage, (), )
|
||||
{
|
||||
fprintf (stderr, "Usage: jcf-dump [-o outputfile] [-c] classname\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
DEFUN(process_class, (jcf),
|
||||
JCF *jcf)
|
||||
{
|
||||
@ -1021,24 +1023,24 @@ DEFUN(disassemble_method, (jcf, byte_ops, len),
|
||||
|
||||
#define BRANCH(OPERAND_TYPE, OPERAND_VALUE) \
|
||||
saw_index = 0, INT_temp = (OPERAND_VALUE); \
|
||||
fprintf (out, " %d", saw_index ? INT_temp : oldpc + INT_temp)
|
||||
fprintf (out, " %ld", (long) (saw_index ? INT_temp : oldpc + INT_temp))
|
||||
|
||||
#define JSR(OPERAND_TYPE, OPERAND_VALUE) \
|
||||
saw_index = 0, INT_temp = (OPERAND_VALUE); \
|
||||
fprintf (out, " %d", saw_index ? INT_temp : oldpc + INT_temp)
|
||||
fprintf (out, " %ld", (long) (saw_index ? INT_temp : oldpc + INT_temp))
|
||||
|
||||
#undef RET /* Defined by config/i386/i386.h */
|
||||
#define RET(OPERAND_TYPE, OPERAND_VALUE) \
|
||||
INT_temp = saw_wide ? IMMEDIATE_u2 : (OPERAND_VALUE); \
|
||||
saw_wide = 0; \
|
||||
fprintf (out, " %d", INT_temp);
|
||||
fprintf (out, " %ld", (long) INT_temp);
|
||||
|
||||
#define SWITCH(OPERAND_TYPE, TABLE_OR_LOOKUP) \
|
||||
PC = (PC + 3) / 4 * 4; TABLE_OR_LOOKUP##_SWITCH
|
||||
|
||||
#define LOOKUP_SWITCH \
|
||||
{ jint default_offset = IMMEDIATE_s4; jint npairs = IMMEDIATE_s4; \
|
||||
fprintf (out, " npairs=%d, default=%d", npairs, default_offset+oldpc); \
|
||||
fprintf (out, " npairs=%ld, default=%ld", (long) npairs, (long) default_offset+oldpc); \
|
||||
while (--npairs >= 0) { \
|
||||
jint match = IMMEDIATE_s4; jint offset = IMMEDIATE_s4; \
|
||||
fprintf (out, "\n%10ld: %ld", (long)match, (long)(offset+oldpc)); } \
|
||||
@ -1047,8 +1049,8 @@ DEFUN(disassemble_method, (jcf, byte_ops, len),
|
||||
#define TABLE_SWITCH \
|
||||
{ jint default_offset = IMMEDIATE_s4; \
|
||||
jint low = IMMEDIATE_s4; jint high = IMMEDIATE_s4; \
|
||||
fprintf (out, " low=%d, high=%d, default=%d", \
|
||||
low, high, default_offset+oldpc); \
|
||||
fprintf (out, " low=%ld, high=%ld, default=%ld", \
|
||||
(long) low, (long) high, (long) default_offset+oldpc); \
|
||||
for (; low <= high; low++) { \
|
||||
jint offset = IMMEDIATE_s4; \
|
||||
fprintf (out, "\n%10ld: %ld", (long)low, (long)(offset+oldpc)); } \
|
||||
@ -1085,7 +1087,7 @@ DEFUN(disassemble_method, (jcf, byte_ops, len),
|
||||
else
|
||||
{
|
||||
saw_wide = 0;
|
||||
fprintf (out, " %d", INT_temp);
|
||||
fprintf (out, " %ld", (long) INT_temp);
|
||||
}
|
||||
fputc ('\n', out);
|
||||
break;
|
||||
|
@ -26,6 +26,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "system.h"
|
||||
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
|
||||
/* DOS brain-damage */
|
||||
#ifndef O_BINARY
|
||||
@ -182,7 +184,7 @@ DEFUN(open_in_zip, (jcf, zipfile, zipmember, is_system),
|
||||
#if JCF_USE_STDIO
|
||||
char*
|
||||
DEFUN(open_class, (filename, jcf, stream, dep_name),
|
||||
char *filename AND JCF *jcf AND FILE* stream AND char *dep_name)
|
||||
char *filename AND JCF *jcf AND FILE* stream AND const char *dep_name)
|
||||
{
|
||||
if (jcf)
|
||||
{
|
||||
@ -203,7 +205,7 @@ DEFUN(open_class, (filename, jcf, stream, dep_name),
|
||||
#else
|
||||
char*
|
||||
DEFUN(open_class, (filename, jcf, fd, dep_name),
|
||||
char *filename AND JCF *jcf AND int fd AND char *dep_name)
|
||||
char *filename AND JCF *jcf AND int fd AND const char *dep_name)
|
||||
{
|
||||
if (jcf)
|
||||
{
|
||||
@ -240,7 +242,7 @@ DEFUN(open_class, (filename, jcf, fd, dep_name),
|
||||
|
||||
char *
|
||||
DEFUN(find_classfile, (filename, jcf, dep_name),
|
||||
char *filename AND JCF *jcf AND char *dep_name)
|
||||
char *filename AND JCF *jcf AND const char *dep_name)
|
||||
{
|
||||
#if JCF_USE_STDIO
|
||||
FILE *stream = fopen (filename, "rb");
|
||||
@ -458,9 +460,9 @@ DEFUN(jcf_print_char, (stream, ch),
|
||||
|
||||
void
|
||||
DEFUN(jcf_print_utf8, (stream, str, length),
|
||||
FILE *stream AND register unsigned char *str AND int length)
|
||||
FILE *stream AND register const unsigned char *str AND int length)
|
||||
{
|
||||
unsigned char* limit = str + length;
|
||||
const unsigned char * limit = str + length;
|
||||
while (str < limit)
|
||||
{
|
||||
int ch = UTF8_GET (str, limit);
|
||||
@ -477,7 +479,7 @@ DEFUN(jcf_print_utf8, (stream, str, length),
|
||||
|
||||
void
|
||||
DEFUN(jcf_print_utf8_replace, (stream, str, length, in_char, out_char),
|
||||
FILE *stream AND unsigned char *str AND int length
|
||||
FILE *stream AND const unsigned char *str AND int length
|
||||
AND int in_char AND int out_char)
|
||||
{
|
||||
|
||||
|
@ -79,12 +79,13 @@ static tree current_method = NULL_TREE;
|
||||
|
||||
/* Declarations of some functions used here. */
|
||||
static tree give_name_to_class PROTO ((JCF *jcf, int index));
|
||||
void parse_zip_file_entries PROTO (());
|
||||
void process_zip_dir PROTO (());
|
||||
static void parse_zip_file_entries PROTO ((void));
|
||||
static void process_zip_dir PROTO ((void));
|
||||
static void parse_source_file PROTO ((tree));
|
||||
static void jcf_parse_source PROTO ((void));
|
||||
static int jcf_figure_file_type PROTO ((JCF *));
|
||||
static int find_in_current_zip PROTO ((char *, struct JCF **));
|
||||
static void parse_class_file PROTO ((void));
|
||||
|
||||
/* Handle "SourceFile" attribute. */
|
||||
|
||||
@ -662,7 +663,7 @@ init_outgoing_cpool ()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
parse_class_file ()
|
||||
{
|
||||
tree method;
|
||||
@ -854,7 +855,7 @@ yyparse ()
|
||||
static struct ZipFileCache *localToFile;
|
||||
|
||||
/* Process all class entries found in the zip file. */
|
||||
void
|
||||
static void
|
||||
parse_zip_file_entries (void)
|
||||
{
|
||||
struct ZipDirectory *zdir;
|
||||
@ -895,7 +896,7 @@ parse_zip_file_entries (void)
|
||||
/* Read all the entries of the zip file, creates a class and a JCF. Sets the
|
||||
jcf up for further processing and link it to the created class. */
|
||||
|
||||
void process_zip_dir()
|
||||
static void process_zip_dir()
|
||||
{
|
||||
int i;
|
||||
ZipDirectory *zdir;
|
||||
@ -955,7 +956,7 @@ void process_zip_dir()
|
||||
|
||||
/* Lookup class NAME and figure whether is a class already found in the current
|
||||
zip file. */
|
||||
int
|
||||
static int
|
||||
DEFUN(find_in_current_zip, (name, length, jcf),
|
||||
char *name AND JCF **jcf)
|
||||
{
|
||||
|
@ -23,9 +23,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
#include "jcf.h"
|
||||
#include "obstack.h"
|
||||
#undef AND
|
||||
#include "rtl.h"
|
||||
@ -273,6 +273,33 @@ struct jcf_partial
|
||||
};
|
||||
|
||||
static void generate_bytecode_insns PROTO ((tree, int, struct jcf_partial *));
|
||||
static struct chunk * alloc_chunk PROTO ((struct chunk *, unsigned char *,
|
||||
int, struct obstack *));
|
||||
static unsigned char * append_chunk PROTO ((unsigned char *, int,
|
||||
struct jcf_partial *));
|
||||
static void append_chunk_copy PROTO ((unsigned char *, int,
|
||||
struct jcf_partial *));
|
||||
static struct jcf_block * gen_jcf_label PROTO ((struct jcf_partial *));
|
||||
static void finish_jcf_block PROTO ((struct jcf_partial *));
|
||||
static void define_jcf_label PROTO ((struct jcf_block *,
|
||||
struct jcf_partial *));
|
||||
static struct jcf_block * get_jcf_label_here PROTO ((struct jcf_partial *));
|
||||
static void put_linenumber PROTO ((int, struct jcf_partial *));
|
||||
static void localvar_alloc PROTO ((tree, struct jcf_partial *));
|
||||
static int localvar_free PROTO ((tree, struct jcf_partial *));
|
||||
static int get_access_flags PROTO ((tree));
|
||||
static void write_chunks PROTO ((FILE *, struct chunk *));
|
||||
static int adjust_typed_op PROTO ((tree, int));
|
||||
static void generate_bytecode_conditional PROTO ((tree, struct jcf_block *,
|
||||
struct jcf_block *, int,
|
||||
struct jcf_partial *));
|
||||
static void generate_bytecode_return PROTO ((tree, struct jcf_partial *));
|
||||
static void perform_relocations PROTO ((struct jcf_partial *));
|
||||
static void init_jcf_state PROTO ((struct jcf_partial *, struct obstack *));
|
||||
static void init_jcf_method PROTO ((struct jcf_partial *, tree));
|
||||
static void release_jcf_state PROTO ((struct jcf_partial *));
|
||||
static struct chunk * generate_classfile PROTO ((tree, struct jcf_partial *));
|
||||
|
||||
|
||||
/* Utility macros for appending (big-endian) data to a buffer.
|
||||
We assume a local variable 'ptr' points into where we want to
|
||||
@ -304,7 +331,7 @@ CHECK_PUT(ptr, state, i)
|
||||
Set the data and size fields to DATA and SIZE, respectively.
|
||||
However, if DATA is NULL and SIZE>0, allocate a buffer as well. */
|
||||
|
||||
struct chunk *
|
||||
static struct chunk *
|
||||
alloc_chunk (last, data, size, work)
|
||||
struct chunk *last;
|
||||
unsigned char *data;
|
||||
@ -339,7 +366,7 @@ CHECK_OP(struct jcf_partial *state)
|
||||
#define CHECK_OP(STATE) ((void)0)
|
||||
#endif
|
||||
|
||||
unsigned char *
|
||||
static unsigned char *
|
||||
append_chunk (data, size, state)
|
||||
unsigned char *data;
|
||||
int size;
|
||||
@ -351,7 +378,7 @@ append_chunk (data, size, state)
|
||||
return state->chunk->data;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
append_chunk_copy (data, size, state)
|
||||
unsigned char *data;
|
||||
int size;
|
||||
@ -361,7 +388,7 @@ append_chunk_copy (data, size, state)
|
||||
memcpy (ptr, data, size);
|
||||
}
|
||||
|
||||
struct jcf_block *
|
||||
static struct jcf_block *
|
||||
gen_jcf_label (state)
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
@ -373,7 +400,7 @@ gen_jcf_label (state)
|
||||
return block;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
finish_jcf_block (state)
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
@ -400,7 +427,7 @@ finish_jcf_block (state)
|
||||
state->code_length = pc;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
define_jcf_label (label, state)
|
||||
struct jcf_block *label;
|
||||
struct jcf_partial *state;
|
||||
@ -417,7 +444,7 @@ define_jcf_label (label, state)
|
||||
label->u.relocations = NULL;
|
||||
}
|
||||
|
||||
struct jcf_block *
|
||||
static struct jcf_block *
|
||||
get_jcf_label_here (state)
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
@ -433,7 +460,7 @@ get_jcf_label_here (state)
|
||||
|
||||
/* Note a line number entry for the current PC and given LINE. */
|
||||
|
||||
void
|
||||
static void
|
||||
put_linenumber (line, state)
|
||||
int line;
|
||||
struct jcf_partial *state;
|
||||
@ -493,7 +520,7 @@ struct localvar_info
|
||||
#define localvar_max \
|
||||
((struct localvar_info**) state->localvars.ptr - localvar_buffer)
|
||||
|
||||
void
|
||||
static void
|
||||
localvar_alloc (decl, state)
|
||||
tree decl;
|
||||
struct jcf_partial *state;
|
||||
@ -540,7 +567,7 @@ localvar_alloc (decl, state)
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
localvar_free (decl, state)
|
||||
tree decl;
|
||||
struct jcf_partial *state;
|
||||
@ -571,7 +598,7 @@ localvar_free (decl, state)
|
||||
/* Get the access flags of a class (TYPE_DECL), a method (FUNCTION_DECL), or
|
||||
a field (FIELD_DECL or VAR_DECL, if static), as encoded in a .class file. */
|
||||
|
||||
int
|
||||
static int
|
||||
get_access_flags (decl)
|
||||
tree decl;
|
||||
{
|
||||
@ -624,7 +651,7 @@ get_access_flags (decl)
|
||||
|
||||
/* Write the list of segments starting at CHUNKS to STREAM. */
|
||||
|
||||
void
|
||||
static void
|
||||
write_chunks (stream, chunks)
|
||||
FILE* stream;
|
||||
struct chunk *chunks;
|
||||
@ -786,7 +813,7 @@ field_op (field, opcode, state)
|
||||
reference) to 7 (for 'short') which matches the pattern of how JVM
|
||||
opcodes typically depend on the operand type. */
|
||||
|
||||
int
|
||||
static int
|
||||
adjust_typed_op (type, max)
|
||||
tree type;
|
||||
int max;
|
||||
@ -940,7 +967,7 @@ emit_store (var, state)
|
||||
static void
|
||||
emit_unop (opcode, type, state)
|
||||
enum java_opcode opcode;
|
||||
tree type;
|
||||
tree type ATTRIBUTE_UNUSED;
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
RESERVE(1);
|
||||
@ -1044,7 +1071,7 @@ emit_jsr (target, state)
|
||||
TRUE_LABEL may follow right after this. (The idea is that we
|
||||
may be able to optimize away GOTO TRUE_LABEL; TRUE_LABEL:) */
|
||||
|
||||
void
|
||||
static void
|
||||
generate_bytecode_conditional (exp, true_label, false_label,
|
||||
true_branch_first, state)
|
||||
tree exp;
|
||||
@ -1268,7 +1295,7 @@ call_cleanups (limit, state)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
generate_bytecode_return (exp, state)
|
||||
tree exp;
|
||||
struct jcf_partial *state;
|
||||
@ -2448,7 +2475,7 @@ generate_bytecode_insns (exp, target, state)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
perform_relocations (state)
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
@ -2616,7 +2643,7 @@ perform_relocations (state)
|
||||
state->code_length = pc;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
init_jcf_state (state, work)
|
||||
struct jcf_partial *state;
|
||||
struct obstack *work;
|
||||
@ -2628,7 +2655,7 @@ init_jcf_state (state, work)
|
||||
BUFFER_INIT (&state->bytecode);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
init_jcf_method (state, method)
|
||||
struct jcf_partial *state;
|
||||
tree method;
|
||||
@ -2651,7 +2678,7 @@ init_jcf_method (state, method)
|
||||
state->return_value_decl = NULL_TREE;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
release_jcf_state (state)
|
||||
struct jcf_partial *state;
|
||||
{
|
||||
@ -2663,7 +2690,7 @@ release_jcf_state (state)
|
||||
in the .class file representation. The list can be written to a
|
||||
.class file using write_chunks. Allocate chunks from obstack WORK. */
|
||||
|
||||
struct chunk *
|
||||
static struct chunk *
|
||||
generate_classfile (clas, state)
|
||||
tree clas;
|
||||
struct jcf_partial *state;
|
||||
@ -2943,7 +2970,8 @@ static char *
|
||||
make_class_file_name (clas)
|
||||
tree clas;
|
||||
{
|
||||
char *cname, *dname, *slash, *r;
|
||||
const char *dname, *slash;
|
||||
char *cname, *r;
|
||||
struct stat sb;
|
||||
|
||||
cname = IDENTIFIER_POINTER (identifier_subst (DECL_NAME (TYPE_NAME (clas)),
|
||||
|
@ -224,7 +224,7 @@ typedef struct JCF {
|
||||
#define DEFAULT_CLASS_PATH "."
|
||||
|
||||
extern char *find_class PROTO ((const char *, int, JCF*, int));
|
||||
extern char *find_classfile PROTO ((char *, JCF*, char *));
|
||||
extern char *find_classfile PROTO ((char *, JCF*, const char *));
|
||||
extern int jcf_filbuf_from_stdio PROTO ((JCF *jcf, int count));
|
||||
extern void jcf_out_of_synch PROTO((JCF *));
|
||||
extern int jcf_unexpected_eof PROTO ((JCF*, int));
|
||||
|
@ -27,7 +27,6 @@ Boston, MA 02111-1307, USA. */
|
||||
void fatal VPROTO((const char *s, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
|
||||
void warning VPROTO((const char *s, ...)) ATTRIBUTE_PRINTF_1;
|
||||
void gcc_obstack_init PROTO ((struct obstack *obstack));
|
||||
extern void reset_report PROTO ((void));
|
||||
|
||||
#define JC1_LITE
|
||||
#include "parse.h"
|
||||
|
@ -28,6 +28,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "system.h"
|
||||
#include "obstack.h"
|
||||
#include "gansidecl.h"
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
|
||||
const char main_method_prefix[] = "main__";
|
||||
const char main_method_suffix[] = "Pt6JArray1ZPQ34java4lang6String";
|
||||
@ -35,11 +38,25 @@ const char class_mangling_prefix[] = "_CL_";
|
||||
|
||||
struct obstack name_obstack;
|
||||
|
||||
extern void error PVPROTO ((const char *, ...))
|
||||
ATTRIBUTE_PRINTF_1;
|
||||
|
||||
void
|
||||
error (const char *str)
|
||||
error VPROTO((const char *msgid, ...))
|
||||
{
|
||||
fprintf (stderr, "%s\n", str);
|
||||
exit (-1);
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
const char *msgid;
|
||||
#endif
|
||||
va_list ap;
|
||||
|
||||
VA_START (ap, msgid);
|
||||
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
msgid = va_arg (ap, const char *);
|
||||
#endif
|
||||
|
||||
vfprintf (stderr, msgid, ap);
|
||||
va_end (ap);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -110,7 +110,8 @@ extern int flag_exceptions;
|
||||
if `-fSTRING' is seen as an option.
|
||||
(If `-fno-STRING' is seen as an option, the opposite value is stored.) */
|
||||
|
||||
static struct { char *string; int *variable; int on_value;} lang_f_options[] =
|
||||
static struct { const char *string; int *variable; int on_value;}
|
||||
lang_f_options[] =
|
||||
{
|
||||
{"bounds-check", &flag_bounds_check, 1},
|
||||
{"assume-compiled", &flag_assume_compiled, 1},
|
||||
|
@ -61,7 +61,7 @@ static void java_lex_error PROTO ((char *, int));
|
||||
static int java_is_eol PROTO ((FILE *, int));
|
||||
#endif
|
||||
static void java_store_unicode PROTO ((struct java_line *, unicode_t, int));
|
||||
static unicode_t java_parse_escape_sequence PROTO (());
|
||||
static unicode_t java_parse_escape_sequence PROTO ((void));
|
||||
static int java_letter_or_digit_p PROTO ((unicode_t));
|
||||
static int java_parse_doc_section PROTO ((unicode_t));
|
||||
static void java_parse_end_comment PROTO ((unicode_t));
|
||||
@ -155,7 +155,7 @@ java_unget_unicode ()
|
||||
ctxp->c_line->char_col -= JAVA_COLUMN_DELTA (0);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
java_allocate_new_line ()
|
||||
{
|
||||
unicode_t ahead = (ctxp->c_line ? ctxp->c_line->ahead[0] : '\0');
|
||||
|
@ -28,6 +28,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "jcf.h"
|
||||
#include "tree.h"
|
||||
#include "java-tree.h"
|
||||
#include "obstack.h"
|
||||
#include "toplev.h"
|
||||
|
||||
@ -37,15 +39,15 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
|
||||
int
|
||||
unicode_mangling_length (name, len)
|
||||
char *name;
|
||||
const char *name;
|
||||
int len;
|
||||
{
|
||||
unsigned char *ptr;
|
||||
unsigned char *limit = (unsigned char *)name + len;
|
||||
const unsigned char *ptr;
|
||||
const unsigned char *limit = (const unsigned char *)name + len;
|
||||
int need_escapes = 0;
|
||||
int num_chars = 0;
|
||||
int underscores = 0;
|
||||
for (ptr = (unsigned char *) name; ptr < limit; )
|
||||
for (ptr = (const unsigned char *) name; ptr < limit; )
|
||||
{
|
||||
int ch = UTF8_GET(ptr, limit);
|
||||
if (ch < 0)
|
||||
@ -70,12 +72,12 @@ unicode_mangling_length (name, len)
|
||||
void
|
||||
emit_unicode_mangled_name (obstack, name, len)
|
||||
struct obstack *obstack;
|
||||
char *name;
|
||||
const char *name;
|
||||
int len;
|
||||
{
|
||||
unsigned char *ptr;
|
||||
unsigned char *limit = (unsigned char *)name + len;
|
||||
for (ptr = (unsigned char *) name; ptr < limit; )
|
||||
const unsigned char *ptr;
|
||||
const unsigned char *limit = (const unsigned char *)name + len;
|
||||
for (ptr = (const unsigned char *) name; ptr < limit; )
|
||||
{
|
||||
int ch = UTF8_GET(ptr, limit);
|
||||
int emit_escape;
|
||||
@ -107,7 +109,7 @@ emit_unicode_mangled_name (obstack, name, len)
|
||||
void
|
||||
append_gpp_mangled_name (obstack, name, len)
|
||||
struct obstack *obstack;
|
||||
char *name;
|
||||
const char *name;
|
||||
int len;
|
||||
{
|
||||
int encoded_len = unicode_mangling_length (name, len);
|
||||
@ -132,9 +134,9 @@ append_gpp_mangled_name (obstack, name, len)
|
||||
void
|
||||
append_gpp_mangled_classtype (obstack, class_name)
|
||||
struct obstack *obstack;
|
||||
char *class_name;
|
||||
const char *class_name;
|
||||
{
|
||||
char *ptr;
|
||||
const char *ptr;
|
||||
int qualifications = 0;
|
||||
|
||||
for (ptr = class_name; *ptr != '\0'; ptr++)
|
||||
|
@ -308,7 +308,7 @@ enum {
|
||||
INVOKE_NONVIRTUAL,
|
||||
INVOKE_SUPER,
|
||||
INVOKE_INTERFACE,
|
||||
INVOKE_VIRTUAL,
|
||||
INVOKE_VIRTUAL
|
||||
};
|
||||
|
||||
/* We need the resolution stuff only if we compile jc1 */
|
||||
@ -357,7 +357,7 @@ enum jdep_code {
|
||||
JDEP_TYPE, /* Patch a random tree node type,
|
||||
without the need for any specific
|
||||
actions */
|
||||
JDEP_EXCEPTION, /* Patch exceptions specified by `throws' */
|
||||
JDEP_EXCEPTION /* Patch exceptions specified by `throws' */
|
||||
};
|
||||
|
||||
typedef struct _jdep {
|
||||
@ -647,11 +647,12 @@ void java_check_circular_reference PROTO ((void));
|
||||
void java_check_final PROTO ((void));
|
||||
void java_layout_classes PROTO ((void));
|
||||
tree java_method_add_stmt PROTO ((tree, tree));
|
||||
char *java_get_line_col PROTO ((char *, int, int));
|
||||
void java_expand_switch PROTO ((tree));
|
||||
int java_report_errors PROTO (());
|
||||
extern tree do_resolve_class PROTO ((tree, tree, tree));
|
||||
#endif
|
||||
char *java_get_line_col PROTO ((char *, int, int));
|
||||
extern void reset_report PROTO ((void));
|
||||
|
||||
/* Always in use, no matter what you compile */
|
||||
void java_push_parser_context PROTO ((void));
|
||||
|
@ -33,6 +33,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||||
#include "java-except.h"
|
||||
#include "toplev.h"
|
||||
|
||||
static void push_pending_label PROTO ((tree));
|
||||
static tree merge_types PROTO ((tree, tree));
|
||||
|
||||
extern int stack_pointer;
|
||||
|
||||
/* During verification, start of the current subroutine (jsr target). */
|
||||
@ -45,7 +48,7 @@ tree pending_blocks;
|
||||
|
||||
/* Append TARGET_LABEL to the pending_block stack unless already in it. */
|
||||
|
||||
void
|
||||
static void
|
||||
push_pending_label (target_label)
|
||||
tree target_label;
|
||||
{
|
||||
@ -102,7 +105,7 @@ check_pending_block (target_label)
|
||||
For reference types, return the common super-class.
|
||||
Return TYPE_UNKNOWN if the types cannot be merged. */
|
||||
|
||||
tree
|
||||
static tree
|
||||
merge_types (type1, type2)
|
||||
tree type1, type2;
|
||||
{
|
||||
|
@ -57,5 +57,9 @@ extern struct ZipFileCache *SeenZipFiles;
|
||||
((ZipDirectory*)((char*)(ZIPD)+(ZIPD)->direntry_size))
|
||||
#define ZIPMAGIC 0x504b0304
|
||||
|
||||
extern ZipFile * opendir_in_zip ();
|
||||
extern ZipFile * opendir_in_zip PROTO ((const char *, int));
|
||||
extern int read_zip_archive PROTO ((ZipFile *));
|
||||
#ifdef JCF_ZIP
|
||||
extern int open_in_zip PROTO ((struct JCF *, const char *,
|
||||
const char *, int));
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user