diff options
Diffstat (limited to 'gcc/java/jcf-write.c')
-rw-r--r-- | gcc/java/jcf-write.c | 69 |
1 files changed, 33 insertions, 36 deletions
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 1106a75..5cb4fb3 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -1,5 +1,5 @@ /* Write out a Java(TM) class file. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -355,14 +355,15 @@ static void append_innerclasses_attribute_entry PARAMS ((struct jcf_partial *, t static int CHECK_PUT PARAMS ((void *, struct jcf_partial *, int)); static int -CHECK_PUT(ptr, state, i) +CHECK_PUT (ptr, state, i) void *ptr; struct jcf_partial *state; int i; { - if ((unsigned char *)ptr < state->chunk->data - || (unsigned char*)ptr + i > state->chunk->data + state->chunk->size) - fatal ("internal error - CHECK_PUT failed"); + if ((unsigned char *) ptr < state->chunk->data + || (unsigned char *) ptr + i > state->chunk->data + state->chunk->size) + abort (); + return 0; } #else @@ -411,16 +412,16 @@ alloc_chunk (last, data, size, work) static int CHECK_OP PARAMS ((struct jcf_partial *)); static int -CHECK_OP(struct jcf_partial *state) +CHECK_OP (state) + struct jcf_partial *state; { if (state->bytecode.ptr > state->bytecode.limit) - { - fatal("internal error - CHECK_OP failed"); - } + abort (); + return 0; } #else -#define CHECK_OP(STATE) ((void)0) +#define CHECK_OP(STATE) ((void) 0) #endif static unsigned char * @@ -687,7 +688,8 @@ get_access_flags (decl) flags |= ACC_PRIVATE; } else - fatal ("internal error - bad argument to get_access_flags"); + abort (); + if (TREE_CODE (decl) == FUNCTION_DECL) { if (METHOD_NATIVE (decl)) @@ -833,11 +835,10 @@ find_constant_index (value, state) } } else if (TREE_CODE (value) == STRING_CST) - { - return find_string_constant (&state->cpool, value); - } + return find_string_constant (&state->cpool, value); + else - fatal ("find_constant_index - bad type"); + abort (); } /* Push 64-bit long constant on VM stack. @@ -1176,12 +1177,12 @@ generate_bytecode_conditional (exp, true_label, false_label, true_label, false_label, true_branch_first, state); if (state->code_SP != save_SP_after) - fatal ("internal error non-matching SP"); + abort (); } break; case TRUTH_NOT_EXPR: - generate_bytecode_conditional (TREE_OPERAND (exp, 0), false_label, true_label, - ! true_branch_first, state); + generate_bytecode_conditional (TREE_OPERAND (exp, 0), false_label, + true_label, ! true_branch_first, state); break; case TRUTH_ANDIF_EXPR: { @@ -1345,7 +1346,7 @@ generate_bytecode_conditional (exp, true_label, false_label, break; } if (save_SP != state->code_SP) - fatal ("internal error - SP mismatch"); + abort (); } /* Call pending cleanups i.e. those for surrounding CLEANUP_POINT_EXPRs @@ -2062,12 +2063,12 @@ generate_bytecode_insns (exp, target, state) else if (TREE_CODE (exp) == ARRAY_REF) { jopcode = OPCODE_iastore + adjust_typed_op (TREE_TYPE (exp), 7); - RESERVE(1); + RESERVE (1); OP1 (jopcode); NOTE_POP (TYPE_IS_WIDE (TREE_TYPE (exp)) ? 4 : 3); } else - fatal ("internal error (bad lhs to MODIFY_EXPR)"); + abort (); break; case PLUS_EXPR: jopcode = OPCODE_iadd; @@ -2579,8 +2580,8 @@ generate_bytecode_insns (exp, target, state) { DECL_CONTEXT (f) = saved_context; if (nargs <= 0) - fatal ("Illegal number of arguments to invokeinterface, nargs=%d", - nargs); + abort (); + OP1 (nargs); OP1 (0); } @@ -2767,7 +2768,7 @@ perform_relocations (state) } } if (new_ptr != chunk->data) - fatal ("internal error - perform_relocations"); + abort (); } state->code_length = pc; } @@ -3288,16 +3289,11 @@ make_class_file_name (clas) if (s == NULL) break; *s = '\0'; - if (stat (r, &sb) == -1) - { + if (stat (r, &sb) == -1 /* Try to make it. */ - if (mkdir (r, 0755) == -1) - { - fatal ("failed to create directory `%s'", r); - free (r); - return NULL; - } - } + && mkdir (r, 0755) == -1) + fatal_io_error ("can't create directory %s", r); + *s = DIR_SEPARATOR; /* Skip consecutive separators. */ for (dname = s + 1; *dname && *dname == DIR_SEPARATOR; ++dname) @@ -3321,15 +3317,16 @@ write_classfile (clas) if (class_file_name != NULL) { - FILE* stream = fopen (class_file_name, "wb"); + FILE *stream = fopen (class_file_name, "wb"); if (stream == NULL) - fatal ("failed to open `%s' for writing", class_file_name); + fatal_io_error ("can't to open %s", class_file_name); + jcf_dependency_add_target (class_file_name); init_jcf_state (state, work); chunks = generate_classfile (clas, state); write_chunks (stream, chunks); if (fclose (stream)) - fatal ("failed to close after writing `%s'", class_file_name); + fatal_io_error ("can't close %s", class_file_name); free (class_file_name); } release_jcf_state (state); |