]> gcc.gnu.org Git - gcc.git/blame - gcc/java/ChangeLog
calls.c (emit_library_call): Do not abort if FUNCTION_ARG returns a PARALLEL.
[gcc.git] / gcc / java / ChangeLog
CommitLineData
9df2c88c
RK
1Mon Feb 28 08:20:42 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2
3 * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
4 (DECL_BIT_INDEX): Use underlying representation.
5 * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
6
fed3cef0
RK
7Sun Feb 27 16:40:33 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
8
9 * expr.c (build_java_ret): Pass proper type to size_binop.
10
3ff9925c
AG
112000-02-25 Anthony Green <green@cygnus.com>
12
13 * expr.c (build_class_init): Mark the decl to be ignored by
14 check_init.
15 * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
16 * check-init.c: Move DECL_BIT_INDEX to java-tree.h
17 * class.c (init_test_hash_newfunc): New function.
18 (decl_hash): New function.
19 (decl_compare): New function.
20 * decl.c (emit_init_test_initialization): New function.
21 (complete_start_java_method): Traverse the init test hashtable,
22 calling emit_init_test_initialization.
23 (always_initialize_class_p): Define.
24 * expr.c (build_class_init): Use initialization tests when
25 emitting class initialization code.
26 (always_initialize_class_p): Declare.
27 * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
28 1.
29 * java-tree.h: Include hash.h.
30 (DECL_FUNCTION_INIT_TEST_TABLE): Define.
31 (struct lang_decl): Add init_test_table field.
32 (init_test_hash_entry): Define.
33
3c9ef127
APB
34Fri Feb 25 18:41:31 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
35
36 * gjavah.c (main): Avoid using `argi' to report unimplemented
37 options.
38
0e9137bb
APB
39Fri Feb 25 18:47:25 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
40
41 * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
42 initialize locals to avoid warnings. Local `exception_type' moved
43 into if statement.
44
98f3c1db
APB
45Fri Feb 25 18:00:37 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
46
47 * parse.y (resolve_expression_name): Use `orig' as a second
48 argument to resolve_field_access.
49 (resolve_field_access): Removed unecessary code when dealing with
50 static fields.
51
c45c5e09
TT
522000-02-23 Tom Tromey <tromey@cygnus.com>
53
54 * gjavah.c (print_name): In JNI case, correctly quote string.
55 (print_method_info): Don't handle overrides in JNI mode.
56
99803cd4
APB
572000-02-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
58
59 * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
60 value type set to `boolean_type_node'.
61
c801c87c
JB
62Mon Jan 18 14:30:09 2000 Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de>
63
64 * jcf-dump.c (main): Test for correct condition after
65 output file creation.
66
7b227604
AG
672000-02-19 Anthony Green <green@cygnus.com>
68
69 * jcf-depend.c (add_entry): Fix test for first list entry.
70
64e92991
RK
71Sat Feb 19 18:43:13 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
72
73 * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
74 * constants.c (build_constants_constructor): Likewise.
75
ccd4c273
AG
762000-02-19 Anthony Green <green@cygnus.com>
77
78 * jcf-depend.c (add_entry): Add entries to the end of the list.
79
a0f4cca6
PN
80Wed Nov 03 02:16:00 PST 1999 Pekka Nikander <pekka.nikander@hut.fi>
81
82 * decl.c (INT_TYPE_SIZE): Define if necessary.
83 (expand_java_return): Handle the case of a native integer smaller
84 than a JVM integer.
85
8b97e23b
ML
862000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
87
88 * gjavah.c (help): Use GCCBUGURL.
89 * jv-scan.c (help): Likewise.
90 * jcf-dump.c (help): Likewise.
91
2a1ed9c1
APB
92Thu Feb 17 14:30:37 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
93
94 * jcf-write.c (generate_bytecode_insns): Don't generate empty
95 `finally' clauses.
96
97Thu Feb 17 13:20:58 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
98
99 * jcf-parse.c (load_class): Call `fatal' if no file containing
100 the target class are found.
101
33ae9bdf
ZW
1022000-02-16 Zack Weinberg <zack@wolery.cumb.org>
103
104 * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
105 lex.c, lex.h, and PARSE_H to...
106 (parse.o, parse-scan.o): ...here, respectively.
107
108 * lex.c: Split out code that may trigger SIGFPE from yylex()
109 to its own function.
110 * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
111
4746ee26
KG
1122000-02-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
113
114 * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
115
2323b28b
APB
1162000-02-15 Alexandre Petit-Bianco <apbianco@cygnus.com>
117
118 * lex.c (java_parse_doc_section): Alway unget the last unicode
119 when returning 0.
120 (java_lex): Call java_parse_end_comment with fetched unicode.
121
78de74be
TT
1222000-02-15 Tom Tromey <tromey@cygnus.com>
123
124 * gjavah.c (jni_print_char): New function.
125 (print_full_cxx_name): Use it.
126 (decode_signature_piece): Likewise.
127 (print_cxx_classname): Likewise.
128
9f8f4efe
KG
1292000-02-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
130
131 * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
132 version.o.
133 (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
134
135 * gjavah.c: Include version.h.
136
137 * jcf-dump.c: Likewise.
138
139 * jv-scan.c: Likewise.
140
ae0a06c5
KG
1412000-02-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
142
143 * except.c (check_start_handlers): Re-add prototype lost in last
144 patch.
ef86eabb 145 (maybe_start_try): Remove excess argument to `check_start_handlers'.
ae0a06c5 146
71600a4a
AH
1472000-02-09 Andrew Haley <aph@cygnus.com>
148
149 * decl.c (clear_binding_level): Remove excess initializer.
150 (maybe_poplevels): Remove unused variable.
151 (force_poplevels): Ditto.
152 (struct binding_level): Add comment.
153
e8b22dd1
AH
1542000-01-25 Andrew Haley <aph@cygnus.com>
155
156 * java-except.h (struct eh_range): Add `expanded' field.
157 (maybe_start_try): Add end_pc arg.
158 (maybe_end_try): Ditto.
159 * java-tree.h (force_poplevels): new function.
160 * expr.c (expand_byte_code): Don't call maybe_start_try or
161 maybe_end_try.
162 * except.c (add_handler): Reset expanded.
163 (expand_start_java_handler): Set expanded.
164 (check_start_handlers): Don't expand a start handler that's
165 already been expanded.
166 (maybe_start_try): Add end_pc arg. Only expand a handler which
167 ends after end_pc.
168 (expand_end_java_handler): call force_poplevels.
169 (force_poplevels): new function.
170 * decl.c (binding_level): Add start_pc of binding level.
171 (maybe_pushlevels): Call maybe_start_try when pushing binding
172 levels.
173 (maybe_poplevels): Call maybe_end_try when popping binding levels.
174 (LARGEST_PC): Define.
175 (clear_binding_level): Use LARGEST_PC.
176
177 * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
178 * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
179 (binding_depth, is_class_level, current_pc): new variables.
180 (struct binding_level): ditto.
181 (indent): new function.
182 (push_jvm_slot): add debugging info.
183 (maybe_pushlevels): ditto.
184 (maybe_poplevels): ditto.
185 (pushlevel): ditto.
186 (poplevel): ditto.
187 (start_java_method): ditto.
188 (give_name_to_locals): comment only.
189 * except.c (binding_depth, is_class_level, current_pc):
190 new variables.
191 (expand_start_java_handler): add debugging info.
192 (expand_end_java_handler): ditto.
193
5ca1627b
KG
1942000-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
195
196 * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
197 (print_name_for_stub_or_jni, process_file): Constify a char*.
198
d8b6d4cf
TT
1992000-02-03 Tom Tromey <tromey@cygnus.com>
200
201 * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
202
2c2f0e54
SB
2032000-01-31 Scott Bambrough <scottb@netwinder.org>
204
205 * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
206 assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
207 defined to be 1.
208
ef2aac99
TT
2092000-02-03 Tom Tromey <tromey@cygnus.com>
210
211 * Make-lang.in (java.mostlyclean): Remove executables in
212 `mostlyclean'.
213
9b4a08f9
SB
2142000-01-31 Scott Bambrough <scottb@netwinder.org>
215
216 * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
217 HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
218 (java_float_finite): Convert to use union Word from javaop.h.
219 (java_double_finite): Convert to use union DWord from javaop.h.
220
de380723
TT
2212000-02-02 Tom Tromey <tromey@cygnus.com>
222
223 * gjavah.c (options): Added `jni' entry.
224 (help): Document -jni.
225 (flag_jni): New global.
226 (process_file): Handle JNI output. Don't print text from
227 -prepend, -add, etc, when generating stubs. Only remove `.class'
228 suffix if it actually exists.
229 (main): Create a `.c' file when run with `--jni --stubs'. Create
230 correct output file name with `--jni'.
231 (print_include): Mangle header name differently in JNI case.
232 (HANDLE_METHOD): In JNI mode, call print_method_info to generate
233 method list.
234 (print_method_info): Handle JNI case. Put signature info into
235 method name. Handle case when STREAM is NULL.
236 (print_name_for_stub_or_jni): New function.
237 (print_stub_or_jni): Renamed from `print_stub'. Handle JNI.
238 (print_cxx_classname): Handle JNI.
239 (print_full_cxx_name): Likewise.
240 (decode_signature_piece): Likewise.
241 (overloaded_jni_method_exists_p): New function.
242 (struct method_name): Added `signature' and `sig_length' fields.
243 (HANDLE_END_FIELD): Do nothing in JNI mode.
244
c89c53eb
TT
2452000-02-02 Tom Tromey <tromey@cygnus.com>
246
247 * jv-scan.c: Include version.c, <getopt.h>.
248 (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
249 (options): New array.
250 (usage): New function.
251 (version): New function.
252 (main): Use getopt_long to parse command line.
253 * jcf-dump.c: Include version.c, <getopt.h>.
254 (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
255 OPT_JAVAP): New macros.
256 (options): New array.
257 (usage): Return `void'. Changed message.
258 (help): New function.
259 (version): New function.
260 (main): Use getopt_long_only to parse command line.
261 * gjavah.c: Include <getopt.h>.
262 (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
263 OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
264 OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
265 (options): New array.
266 (java_no_argument): Removed.
267 (help): Updated with missing options.
268 (main): Use getopt_long_only to parse command line.
269 (usage): Changed message.
270
105a8d1c
AG
2712000-01-30 Anthony Green <green@redhat.com>
272
273 * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
274 determine how many stack slots to pop.
275
f8989a66
APB
2762000-01-29 Alexandre Petit-Bianco <apbianco@cygnus.com>
277
278 * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
279 error handling/recovery.
280 * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
281
f85cedde
AH
2822000-01-27 Andrew Haley <aph@cygnus.com>
283
284 * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
285 (emit_if): Ditto.
286 (emit_jsr): Ditto.
287
2884c41e
KG
2882000-01-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
289
290 * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
291 concatenation.
292 (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
293
294 * parse.y (register_fields): Don't pass a format specifier to
295 OBSOLETE_MODIFIER_WARNING.
296 (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
297 instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
298 specifier.
299 (check_modifiers): Change function into a macro.
300 (check_class_interface_creation): Pass a literal format string.
301
0a068841 3022000-01-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
df32d2ce
KG
303
304 * buffer.h: PROTO -> PARAMS.
305 * check-init.c: Likewise.
306 * class.c: Likewise.
307 * constants.c: Likewise.
308 * convert.h: Likewise.
309 * decl.c: Likewise.
310 * except.c: Likewise.
311 * expr.c: Likewise.
312 * gjavah.c: Likewise.
313 * java-except.h: Likewise.
314 * java-tree.h: Likewise.
315 * jcf-depend.c: Likewise.
316 * jcf-dump.c: Likewise.
317 * jcf-parse.c: Likewise.
318 * jcf-path.c: Likewise.
319 * jcf-reader.c: Likewise.
320 * jcf-write.c: Likewise.
321 * jcf.h: Likewise.
322 * jv-scan.c: Likewise.
323 * jvgenmain.c: Likewise.
324 * jvspec.c: Likewise.
325 * lang.c: Likewise.
326 * lex.c: Likewise.
327 * lex.h: Likewise.
328 * parse-scan.y: Likewise.
329 * parse.h: Likewise.
330 * parse.y: Likewise.
331 * typeck.c: Likewise.
332 * verify.c: Likewise.
333 * xref.c: Likewise.
334 * xref.h: Likewise.
335 * zextract.c: Likewise.
336 * zipfile.h: Likewise.
a003f638
JB
337
338Mon Jan 18 14:30:09 2000 Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de>
339
340 * gjavah.c: Delete ACC_VISIBILITY define.
341 * jcf.h: Add ACC_VISIBILITY define.
342 * parse.y: final: rule tagged <value>.
343 (java_check_regular_methods): Use ACC_VISIBILITY define for
344 default package access check.
345 (local_variable_declaration_statement): Use final: rule.
346
18990de5
JB
347Mon Jan 17 11:58:17 2000 Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de>
348
349 * parse.y (format_parameter:): Use final: rule instead of modifiers:.
350 (final:): New rule.
351
9b4579b3
TT
3522000-01-17 Tom Tromey <tromey@cygnus.com>
353
354 * gjavah.c (print_field_info): Allow non-static final fields.
355
c52b5771
AG
3562000-01-16 Anthony Green <green@cygnus.com>
357
358 * parse.y (build_string_concatenation): Only use
359 StringBuffer(String) shortcut if String arg is constant.
360
f8989a66
APB
361Wed Jan 12 20:20:11 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
362
363 * jcf-write.c (generate_bytecode_insns): binop: Change the type of
364 the shift value to int. Fixed typo in comment.
365
51149cc8
MK
3662000-01-11 Mumit Khan <khan@xraylith.wisc.edu>
367
368 * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
369 * jcf-write.c: Likewise.
370 * parse.y: Likewise.
371 * parse.c: Regenerate.
372
2d54440c
AG
3732000-01-09 Anthony Green <green@cygnus.com>
374
375 * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
376 bytecodes in the correct order.
377
2cc60d16
KG
3782000-01-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
379
380 * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
381
f626e9fa
AG
382Thu Jan 6 16:31:28 2000 Anthony Green <green@cygnus.com>
383
384 * expr.c (java_lang_expand_expr): Switch to permanent obstack
385 before building constant array decl.
386
6b924cc5
APB
387Thu Jan 6 00:54:10 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
388
389 * jcf-write.c (generate_byecode_conditional): Fixed indentation in
390 method invocation and typo in conditional expression.
391 (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
392 the appropriate NOTE_POP.
393 * parse.y (patch_binop): Shift value mask to feature the right
394 type.
395
c63b98cd
KG
3961999-12-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
397
398 * class.c (assume_compiled, assume_compiled_node): Add static
399 prototype.
400 (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
401
402 * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
403
404 * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
405
406 * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
407 to `__modifier' to avoid stringifying it.
408
409 * parse.y (verify_constructor_circularity): Don't call a variadic
410 function with a non-literal format string.
411 (java_check_abstract_methods): Move unreachable code inside
412 `continue' statement.
413 (lookup_method_invoke): Call xstrdup, not strdup.
414
415 * expr.c (expand_java_field_op): Avoid the use of ANSI string
416 concatenation.
417
418 * jcf-parse.c (yyparse): Likewise.
419
420 * jv-scan.c (main): Likewise.
421
781b0558
KG
4221999-12-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
423
424 * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
425 ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
426 ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
427 concatenation.
428
429 * parse.y (synchronized, variable_redefinition_error,
430 check_class_interface_creation, create_interface, create_class,
431 method_header, finish_method_declaration,
432 check_modifiers_consistency, method_declarator,
433 complete_class_report_errors, check_abstract_method_definitions,
434 java_check_regular_methods, check_throws_clauses,
435 java_check_abstract_methods, read_import_dir,
436 check_pkg_class_access, declare_local_variables, fix_constructors,
437 cut_identifier_in_qualified, resolve_expression_name,
438 resolve_qualified_expression_name, patch_method_invocation,
439 java_complete_lhs, patch_assignment, try_builtin_assignconv,
440 patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
441 patch_exit_expr, patch_exit_expr, patch_switch_statement,
442 patch_try_statement, patch_synchronized_statement,
443 patch_throw_statement, check_thrown_exceptions,
444 patch_conditional_expr): Likewise.
445
ee07f4f4
APB
446Fri Dec 24 00:25:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
447
448 * Makefile.in (LIBDEPS): Added gcc's errors.o
449 (../jcf-dump$(exeext):): Link with gcc's errors.o
450 (../gcjh$(exeext):): Likewise.
451 * expr.c (expand_java_NEW): Layout the entire target type instead of
452 laying out its methods only.
453 (lookup_field): Layout the class after having loaded it.
454 * java-tree.h (java_debug_context): Declared.
455 * jcf-io.c (toplev.h): Included.
456 (find_class): Removed assignment to jcf's outofsynch
457 field. Force source file to be read if newer than its matching
458 class file. Tweaked debug messages.
459 * jcf-parse.c (jcf_out_of_synch): Deleted.
460 (read_class): Call to jcf_out_of_synch removed.
461 * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
462 (jcf_out_of_synch): Prototype deleted.
463 * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
464 `deprecated' and `class_err': integer turned into bit fields.
465 New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
466 * parse.y (package_list): New global.
467 (package_declaration:): Record newly parsed package name.
468 (extra_ctxp_pushed_p): Static global deleted.
469 (java_parser_context_save_global): Create buffer context for the
470 purpose of saving globals, if necessary.
471 (java_parser_context_restore_global): Pop context pushed for the
472 purpose of saving globals, if necessary.
473 (java_debug_context_do): New prototype and function.
474 (java_debug_context): Likewise.
475 (do_resolve_class): Use already parsed package names to qualify
476 and lookup class candidate.
477 (java_pre_expand_clinit): Removed unnecessary local variable.
478
6b924cc5
APB
4791999-12-17 Tom Tromey <tromey@cygnus.com>
480
481 * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This
482 fixes PR gcj/119.
483 (process_file): Use `\n\' at end of each line in string.
484
6bafd8b6
APB
485Thu Dec 16 00:09:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
486
487 * expr.c (expand_invoke): Layout the loaded class before
488 attempting to use it.
489 (expand_java_field_op): Allow final field assignments to take
490 place in $finit$.
491 * typeck.c (convert): Return error_mark_node if expr is null.
492
e920ebc9
APB
4931999-12-14 Alexandre Petit-Bianco <apbianco@cygnus.com>
494
495 * class.c (class_depth): Return -1 if the class doesn't load
496 properly.
497 * expr.c (can_widen_reference_to): Check for errors during depth
498 computation and return 0 accordingly.
499 * jcf-parse.c (parse_source_file): Call java_fix_constructors to
500 create default constructors and add an other error check.
501 * parse.h (java_fix_constructors): Prototyped.
502 * parse.y (java_pre_expand_clinit): Likewise.
503 (build_super_invocation): Re-prototyped to feature one argument.
504 (java_check_circular_reference): Directly use `current'.
505 (java_fix_constructors): New function.
506 (java_check_regular_methods): Don't create default constructors
507 here, but abort if none were found.
508 (java_complete_expand_methods): Pre-process <clinit> calling
509 java_pre_expand_clinit.
510 (java_pre_expand_clinit): New function.
511 (fix_constructors): build_super_invocation invoked with the
512 current method declaration as an argument.
513 (build_super_invocation): Use the context of the processed method
514 decl argument instead of current_class.
515 * typeck.c (lookup_java_method): Take WFLs in method names into
516 account.
517
cf69bfbf
PB
518Tue Dec 14 14:20:16 1999 Per Bothner <per@bothner.com>
519
520 * class.c (make_class_data): flag_keep_inline_functions to keep
521 private methods in the method array.
522
38b58895
AG
5231999-12-15 Anthony Green <green@cygnus.com>
524
525 * check-init.c (check_init): Take into account both types of
526 `throw's when checking for uninitialized variables.
527
3a1760ac
APB
528Fri Dec 10 21:53:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
529
530 * parse.y (java_complete_lhs): Force convertion of array
531 dimensions to int_type_node, that's what runtime's ABI expects.
532
6a50bd91
APB
533Fri Dec 10 16:13:48 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
534
535 * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
536 operand of a WFL, until the Java front-end gets fixed with regard
537 to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
538
8bbb23b7
AH
5391999-12-10 Andrew Haley <aph@cygnus.com>
540
541 * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
542 decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
543 expr.c (build_java_athrow): Add support for sjlj-exceptions.
544 java-tree.h: Ditto.
545 jcf-write.c: Ditto.
546
6f9c8716
APB
547Wed Dec 8 15:33:26 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
548
549 * expr.c (java_lang_expand_expr): Switch to permanent obstack
550 before calling expand_eh_region_start and expand_start_all_catch.
551 * except.c (expand_start_java_handler): Switch to permanent
552 obstack before calling expand_eh_region_start.
553 (expand_end_java_handler): Switch to permanent obstack before
554 calling expand_start_all_catch.
555
1684f874
AG
5561999-12-5 Anthony Green <green@cygnus.com>
557
558 * decl.c (init_decl_processing): Mark throw_node as a noreturn
559 function with side effects.
560 (init_decl_processing): Mark all memory allocating DECLs with
561 DECL_IS_MALLOC.
562
0974e9fe
APB
563Wed Dec 1 04:25:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
564
565 * except.c (expand_end_java_handler): Call
566 expand_resume_after_catch and end_catch_handler.
567
de1f429d
APB
568Tue Nov 30 12:36:15 1999 Anthony Green <green@cygnus.com>
569
570 * verify.c (verify_jvm_instructions): Create new return label
571 chain if non existant (don't rely on the verified state of the jsr
572 target.)
573
afc390b1
APB
574Tue Nov 30 12:28:34 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
575
576 * jcf-write.c (generate_byecode_insns): Fixed indentation for
577 COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
578
579 * parse.y (patch_assignment): Removed bogus final class test on
0974e9fe 580 lhs when checking on whether to emit an ArrayStoreException runtime
afc390b1
APB
581 check.
582 * expr.c (expand_java_arraystore): Likewise.
583
1ba305b5
APB
584Wed Nov 24 17:33:26 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
585
586 * jcf-parse.c (saw_java_source): Global variable removed.
587 (read_class): Don't use `saw_java_source'. Added extra braces.
588 (yyparse): Code setting `saw_java_source' removed.
589
9a260e99
MM
5901999-11-24 Mark Mitchell <mark@codesourcery.com>
591
592 * except.c (emit_handlers): Zero catch_clauses after emitting them.
593
de1f429d
APB
594Tue Nov 23 17:29:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
595
596 * verify.c (merge_type_state): Non verified subroutines being
597 considered more than once to trigger passive type merge.
598
97f30284
APB
599Tue Nov 23 10:55:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
600
601 * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
602 in case of error. Error message tuned.
603
48aedbca
AG
6041999-11-21 Anthony Green <green@cygnus.com>
605
606 * constants.c (find_methodref_index): Unwrap method names before
607 inserting them in the constant pool.
608
609 * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
610
611 * class.c (assume_compiled_node): New typedef.
612 (assume_compiled_tree): New static data.
613 (find_assume_compiled_node): New function.
614 (add_assume_compiled): New function.
615 (assume_compiled): New function.
616 * class.c (make_class_data): Use assume_compiled.
617 (is_compiled_class): Use assume_compiled.
618
619 * java-tree.h (add_assume_compiled): Declare.
620
621 * lang.c (lang_decode_option): Parse new options.
622
4832340c
APB
623Wed Nov 17 21:09:28 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
624
625 * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
626 int_type_node: that's what `_Jv_AllocObject' expects.
627
b5b8a0e7
APB
628Thu Nov 11 01:57:14 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
629
630 * parse.y (lookup_method_invoke): Use lang_printable_name to
631 reliably build the type name during error report. Fixes PR gcj/97.
632
71651d6c
TT
6331999-11-09 Tom Tromey <tromey@cygnus.com>
634
635 * jcf-path.c: Include <sys/stat.h>.
636 (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84.
637 (DIR_UP): New macro.
638
8226320b
APB
639Tue Nov 9 12:12:38 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
640
641 * parse.y (source_end_java_method): Resume permanent allocation,
642 reversing Apr 27 1998 patch.
643 (patch_string_cst): Pop obstacks after having pushed the permanent
644 ones.
645
09e7d04a
TT
6461999-11-05 Tom Tromey <tromey@cygnus.com>
647
648 * class.c (finish_class): Emit inlined methods if any native
649 methods exist in the class. Fixes PR gcj/85.
650
97f30284
APB
651Thu Nov 4 16:27:01 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
652
653 * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
654 (qualify_ambiguous_name): Likewise.
655
7c2e3b9b
GB
656Wed Nov 3 15:20:02 MST 1999 Godmar Back <gback@cs.utah.edu>
657
658 * typeck.c: (lookup_java_method): search all inherited
659 interfaces when looking up interface method.
660
efa0a23f
APB
661Mon Nov 1 23:42:00 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
662
663 * parse.y (method_header:): Issue error message for rule `type
664 error'.
665 (synchronized:): Error report when not using synchronized.
666
f63991a8
APB
667Mon Nov 1 01:32:48 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
668
ffa669ea
APB
669 * parse.y (resolve_qualified_expression_name): Prevent `this' from
670 being used before the superclass constructor has been called.
671 (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
672 instead of `CALL_THIS_CONSTRUCTOR_P'.
f63991a8 673
f6e8b583
TF
674Sat Oct 30 21:35:13 1999 Todd T. Fries <todd@lighthouse.fries.net>
675
676 * check-init.c: Fix typo in comment.
677
ed598dde
APB
678Fri Oct 29 14:35:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
679
680 * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
681 and final method.
682
8119c720
APB
683Fri Oct 29 14:23:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
684
685 * parse.y (expression_statement:): Call function to report
686 improper invocation of a constructor.
687 (parse_ctor_invocation_error): New function.
688
2af0ac28
MM
6891999-10-26 Mark Mitchell <mark@codesourcery.com>
690
691 * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
692 remember_end_note.
693
2fca54be
TT
6941999-10-21 Tom Tromey <tromey@cygnus.com>
695
696 * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
697 in generated `main'.
698
ac22f9cb
APB
699Thu Oct 21 01:27:31 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
700
701 * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
702 (qualify_ambiguous_name): Likewise.
703
100f7cd8
APB
704Wed Oct 20 01:41:47 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
705
706 * parse.y (java_complete_tree): fold_constant_for_init to work on
707 permanent_obstack.
708 (java_complete_lhs): Likewise.
709 (array_constructor_check_entry): Complete an initializer element
710 on permanent_obstack.
711
51ae4071
TT
7121999-10-19 Tom Tromey <tromey@cygnus.com>
713
714 * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
715 From Mike Moreton <mike@pillim.demon.co.uk>.
716
13f9ac51
GM
7171999-10-15 Greg McGary <gkm@gnu.org>
718
719 * java-tree.h (flag_bounds_check): Remove extern decl.
720 * lang.c (flag_bounds_check): Remove global variable.
721 (lang_f_options): Remove "bounds-check" entry.
722 (lang_init_options): Default flag_bounds_check to "on".
723
8f426586
TT
7241999-10-14 Tom Tromey <tromey@cygnus.com>
725
7cf41963
TT
726 * jvgenmain.c (usage): New function.
727 (main): Use it. Also, handle `-D' options.
728 * jvspec.c (lang_specific_driver): Recognize -D.
729 (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
730
8f426586
TT
731 * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
732
1ebadc60
KG
7331999-10-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
734
735 * jcf-dump.c (print_constant, disassemble_method): Don't call a
736 variadic function with a non-literal format string.
737
738 * parse-scan.y (report_main_declaration): Likewise.
739
740 * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
741
742 * parse.y (read_import_dir, patch_assignment, patch_binop,
743 patch_array_ref): Likewise.
744
745 * typeck.c (build_java_array_type): Likewise.
746
747 * verify.c (verify_jvm_instructions): Likewise.
748
b5edd133
APB
749Tue Oct 12 22:28:10 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
750
ce74b7d6 751 * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
b5edd133 752
ab150fb1
AG
7531999-10-07 Anthony Green <green@cygnus.com>
754
755 * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
756 where CHECK_PUT may fail for valid reasons.
757
758 * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
759 UNSAFE_PUTN): New macros.
760
05a3dfc7
TT
7611999-10-04 Tom Tromey <tromey@cygnus.com>
762
763 * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
764 well. Fixes Java PR gcj/59.
765 * parse-scan.y (yyerror): Report errors.
766
d353a00c 767Fri Sep 24 12:23:05 1999 Glenn Chambers <GChambers@provsol.com>
ca6c7489 768
d353a00c 769 * decl.c (insert_block): Remove unconditional `abort'.
ca6c7489 770
26db82d8
BS
771Fri Sep 24 10:48:10 1999 Bernd Schmidt <bernds@cygnus.co.uk>
772
773 * decl.c (builtin_function): No longer static. New arg CLASS. Arg
774 FUNCTION_CODE now of type int. All callers changed.
775 Set the builtin's DECL_BUILT_IN_CLASS.
776
0cffaca3
TT
7771999-09-23 Tom Tromey <tromey@cygnus.com>
778
779 * jvspec.c (lang_specific_driver): Don't read spec file if
780 -fsyntax-only given.
781
bad1e2ac
TT
7821999-09-22 Tom Tromey <tromey@cygnus.com>
783
ba020951
TT
784 * lang-specs.h: Added `%(jc1)' to the jc1 spec.
785
bad1e2ac
TT
786 * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
787 (WORDS_TO_LONG): Likewise.
788 (WORDS_TO_DOUBLE): Likewise.
789
cacc154e
APB
790Tue Sep 14 16:24:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
791
ce74b7d6 792 * jcf-write.c (RELOCATION_VALUE_0): New macro.
cacc154e
APB
793 (RELOCATION_VALUE_1): Likewise.
794 (emit_iinc, emit_reloc, push_constant1, push_constant2,
795 push_in_const, push_long_const): Prototyped.
796 (push_constant1): Argument `index' is of type HOST_WIDE_INT.
797 (push_constant2): Likewise.
798 (push_int_const): Cast find_constant1's integer arguments to `jword'.
799 (find_constant_wide): Cast find_constant2's integer arguments to
800 `jword'.
801 (find_constant_index): Cast find_constant2's and find_constant2's
802 integer arguments to `jword'.
803 (emit_pop): Argument `value' is of type HOST_WIDE_INT.
804 (emit_switch_reloc): Use RELOCATION_VALUE_0.
805 (emit_if): Use RELOCATION_VALUE_1.
806 (emit_goto): Likewise.
807 (emit_jsr): Likewise.
808 (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
809 argument to push_long_const to HOST_WIDE_INT.
810
7161fcc7
AS
8111999-09-15 Andreas Schwab <schwab@suse.de>
812
813 * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
814
03d32d1a
NC
8151999-09-20 Nick Clifton <nickc@cygnus.com>
816
817 * lang.c (lang_decode_option): Extend comment.
818
b771925e
APB
819Thu Sep 16 15:42:39 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
820
821 * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
822 instead of fndecl.
823
c2e3db92
KG
8241999-09-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
825
826 * gjavah.c (get_field_name, print_method_info, print_include,
827 add_namelet): Use xmalloc, not malloc.
828
829 * jcf-depend.c (add_entry): Likewise. Use xstrdup, not strdup.
830 (munge): Use xrealloc, not realloc, trust xrealloc to handle a
831 NULL pointer.
832
833 * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
834
835 * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
836
837 * jcf-path.c (add_entry): Likewise.
838
839 * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
840
841 * jv-scan.c (xmalloc): Remove definition.
842
843 * jvgenmain.c (xmalloc): Likewise.
844
845 * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
846
847 * lex.c (java_store_unicode): Use xrealloc, not realloc.
848
849 * parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use
850 concat, not xmalloc/sprintf.
851 (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
852 (xstrdup): Remove definition.
853
854 * parse.y (duplicate_declaration_error_p,
855 constructor_circularity_msg, verify_constructor_circularity,
856 check_abstract_method_definitions, java_check_regular_methods,
857 java_check_abstract_methods, patch_method_invocation,
858 check_for_static_method_reference, patch_assignment, patch_binop,
859 patch_cast, array_constructor_check_entry, patch_return,
860 patch_conditional_expr): Use xstrdup, not strdup.
861
862 * zextract.c (ALLOC): Use xmalloc, not malloc.
863
9257393c
KG
864Sun Sep 12 23:30:09 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
865
866 * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
867
868 * jvspec.c: Include gcc.h. Don't include gansidecl.h.
869 (do_spec, lang_specific_pre_link, lang_specific_driver,
870 input_filename, input_filename_length): Don't declare.
871 (main_class_name, jvgenmain_spec, lang_specific_driver):
872 Constify a char*.
873 (lang_specific_driver): All calls to the function pointer
874 parameter now explicitly call `fatal'.
875
f4e16489
APB
876Sat Sep 11 16:46:44 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
877
878 * parse.y (find_applicable_accessible_methods_list): Search
879 abstract classes as interfaces.
880
fcf6eeb6
APB
881Thu Sep 9 17:33:28 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
882
883 * class.c (finish_class): We're now outside a valid method
884 declaration. Tell the rest of gcc so.
885
64e92991
RK
8861999-09-08 Bruce Korb autogen@linuxbox.com
887
888 * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
889
512d594b
TT
8901999-09-07 Tom Tromey <tromey@cygnus.com>
891
892 * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
893 java-array.h.
894 (decode_signature_piece): Don't emit "::" in JArray<>.
895 (print_namelet): Only print trailing `;' when printing a class.
896
81b3411c
BS
897Fri Sep 10 10:32:32 1999 Bernd Schmidt <bernds@cygnus.co.uk>
898
899 * java-tree.h: Delete declarations for all tree nodes now moved to
900 global_trees.
901 * decl.c: Delete their definitions.
902
6308c574
MM
9031999-09-04 Mark Mitchell <mark@codesourcery.com>
904
905 * Make-lang.in (jc1): Depend on ggc-callbacks.o.
906 * Makefile.in (OBJS): Add ggc-callbacks.o.
907 (OBJDEPS): Likewise.
908
2f11d407
TT
9091999-09-03 Tom Tromey <tromey@cygnus.com>
910
911 * parse.y (strip_out_static_field_access_decl): Return operand if
912 it satisfies JDECL_P.
913
3a5395a3
TT
9141999-09-02 Tom Tromey <tromey@cygnus.com>
915
916 * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
917 Handle nested arrays, like `[[I'.
918
d593dd8c
KG
9191999-09-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
920
921 * class.c (finish_class): Remove unused parameter, all callers
922 changed.
923
924 * expr.c (build_java_athrow): Change return type to void.
925 (java_lang_expand_expr): Make sure each case in switch returns a
926 value.
927
928 * java-tree.h (finish_class): Fix prototype to take void args.
929
930 * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
931 (main): Issue return from main, not exit.
932
933 * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
934
935 * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
936
937 * jv-scan.c (main): Issue return from main, not exit.
938
939 * parse.y (check_abstract_method_definitions,
940 java_check_abstract_method_definitions): Add static prototypes.
941 (java_complete_expand_methods): Fix call to `finish_class'.
942
943 * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
944 and `prevpc'.
945
f425a887
KG
9461999-08-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
947
948 * lang.c (language_string): Constify.
949
00d30284
KG
9501999-08-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
951
952 * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
953 Remove hacks for stuff which comes from libiberty.
954
955 * Make-lang.in: Likewise.
956
24c30b28
HPN
957Mon Aug 30 16:41:41 1999 Hans-Peter Nilsson <hp@axis.se>
958
959 * Makefile.in (xref.o): Depend on xref.c explicitly.
960
1b93a502
KG
9611999-08-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
962
963 * java-tree.h (lang_printable_name): Constify a char*.
964
965 * lang.c (lang_printable_name): Likewise.
966
5f9ee695
JL
967Fri Aug 27 23:31:57 1999 Jeffrey A Law (law@cygnus.com)
968
969 * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
970 comments in C code.
971
12207a87
TT
9721999-08-26 Tom Tromey <tromey@cygnus.com>
973
974 * gjavah.c (print_cxx_classname): Print "::" before qualified
975 name.
976
f441f671
APB
977Thu Aug 26 09:10:58 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
978
979 * parse.y (lookup_cl): Changed leading comment. Now does its best
980 to set the column number.
981 (qualify_ambiguous_name): Take WFL wrappers into account.
982
ee5cd638
GT
983Wed Aug 25 15:37:15 1999 Gregg Townsend <gmt@cs.arizona.edu>
984
985 * verify.c (verify_jvm_instructions): Don't check instruction
986 validity beyond end of method.
987
20c96b2a
TT
9881999-08-25 Tom Tromey <tromey@cygnus.com>
989
990 * jvspec.c (lang_specific_driver): Correctly handle --help again.
991
be245ac0
KG
9921999-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
993
994 * gjavah.c (print_name, print_base_classname, utf8_cmp,
995 cxx_keyword_subst, generate_access, name_is_method_p,
996 get_field_name, print_field_name, super_class_name, print_include,
997 decode_signature_piece, print_class_decls, usage, help,
998 java_no_argument, version, add_namelet, print_namelet): Add static
999 prototype.
1000 (print_base_classname, utf8_cmp, cxx_keyword_subst,
1001 name_is_method_p): Constify a char*.
1002 (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy.
1003 Provide a final else clause in an if-else-if.
1004 (print_field_info): Add missing final arg in function call to
1005 `print_field_name'.
1006 (print_method_info, decompile_method, decode_signature_piece,
1007 print_c_decl, print_full_cxx_name, print_stub,
1008 print_mangled_classname, super_class_name, print_include,
1009 add_namelet, add_class_decl, print_class_decls, process_file,
1010 help): Constify a char*.
1011
1012 * jcf-write.c (jcf_handler, push_constant1, push_constant2,
1013 push_int_const, find_constant_wide, find_constant_index,
1014 push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
1015 emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
1016 emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
1017 emit_if, emit_goto, emit_jsr, call_cleanups,
1018 make_class_file_name): Add static prototypes.
1019 (generate_bytecode_return, generate_bytecode_insns): Pass a
1020 NULL_PTR, not a NULL_TREE.
1021
1022 * jv-scan.c: Include "jcf.h".
1023 (main): Declare using DEFUN macro.
1024
1025 * jvspec.c (find_spec_file, lang_specific_pre_link,
1026 lang_specific_driver): Add prototypes.
1027 (find_spec_file): Constify a char*.
1028
1029 * keyword.gperf (hash, java_keyword): Add prototypes.
1030
1031 * lang.c (lang_print_error): Add static prototype.
1032 (lang_init): Prefer memcpy over bcopy to avoid casts.
1033
1034 * lex.c (yylex): Add static prototype.
1035
1036 * parse-scan.y: Include "lex.c" earlier.
1037
1038 * parse.h: Remove redundant declaration for `yylex'.
1039
1040 * parse.y (java_decl_equiv, binop_compound_p, search_loop,
1041 labeled_block_contains_loop_p): Add static prototypes.
1042 (not_accessible_p): Make static to match prototype.
1043
1044 * verify.c (start_pc_cmp): Don't needlessly cast away const.
1045
d77613be
APB
1046Sun Aug 22 11:07:41 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1047
1048 * parse.y (check_method_redefinition): Changed leading comment.
1049 (check_abstract_method_definitions): New function.
1050 (java_check_abstract_method_definitions): New function.
1051 (java_check_regular_methods): Call it.
1052 (verify_constructor_super): Fixed indentation.
1053 (lookup_method_invoke): Likewise.
1054
79d13333
APB
1055Thu Aug 19 10:26:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1056
1057 * parse.y (method_header): Return a null pointer if the current
1058 class node is null.
1059 (finish_method_declaration): Return if the current function decl
1060 is null.
1061 (source_start_java_method): Likewise.
1062 (java_method_add_stmt): Likewise.
1063
5cbdba64
APB
1064Wed Aug 18 13:17:15 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1065
1066 * class.c (emit_register_class): Removed unnecessary call to
1067 start_sequence.
1068 * parse.y (labeled_block_contains_loop_p): Removed unused local
1069 variable.
1070
1071Tue Aug 17 22:51:44 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1072
1073 * parse.y (java_refold): Added prototype.
1074
1075Tue Aug 17 21:48:41 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1076
1077 * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
1078 (java_stabilize_reference): Removed unnecessary `else'.
1079 (java_complete_lhs): Set flag to remember boolean. Call
1080 java_refold. Added comments.
1081 (java_decl_equiv): New function.
1082 (binop_compound_p): Likewise.
1083 (java_refold): Likewise.
1084 (patch_unaryop): Striped static field access assigned to decl and
1085 op. Changed promotion scheme for ++/-- operators.
1086 (search_loop): New function.
1087 (labeled_block_contains_loop_p): Likewise.
1088 (patch_loop_statement): Call labeled_block_contains_loop_p. Added
1089 comment.
1090 (patch_bc_statement): Call search_loop. Fixed comment.
1091
66e06429
AG
10921999-08-14 Anthony Green <green@cygnus.com>
1093
1094 * expr.c (java_lang_expand_expr): Mark static array data as
1095 referenced.
1096
9a816500
RO
1097Tue Aug 10 00:28:31 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1098
1099 * jvgenmain.c (main): NUL-terminate name_obstack.
1100
c8e7d2e6
KG
11011999-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1102
1103 * check-init.c (check_bool2_init, done_alternative): Add static
1104 prototypes.
1105
1106 * class.c (add_interface_do, maybe_layout_super_class): Likewise.
1107 (add_method, build_utf8_ref, build_class_ref,
1108 append_gpp_mangled_type, layout_class_method): Constify a char*.
1109
1110 * decl.c (push_promoted_type, make_binding_level): Add static
1111 prototypes.
1112 (push_promoted_type, pushdecl): Constify a char*.
1113
1114 * except.c (find_handler_in_range, link_handler,
1115 check_start_handlers): Add static prototypes.
1116
1117 * expr.c (process_jvm_instruction): Constify a char*.
1118
1119 * gjavah.c (main): Constify a char*.
1120
1121 * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
1122 Constify a char*.
1123
1124 * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
1125 static prototypes.
1126 (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
1127 munge, print_ents): Constify a char*.
1128
1129 * jcf-dump.c (disassemble_method): Constify a char*.
1130 (print_constant_pool, print_exception_table): Add static prototypes.
1131 (print_constant, print_exception_table, main, disassemble_method):
1132 Constify a char*.
1133
1134 * jcf-io.c (find_classfile, find_class): Likewise.
1135
1136 * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
1137 (set_source_filename, predefined_filename_p): Add static prototypes.
1138 (set_source_filename, get_constant, get_class_constant,
1139 find_in_current_zip): Constify a char*.
1140
1141 * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
1142 static prototypes.
1143 (add_entry, add_path, jcf_path_classpath_arg,
1144 jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
1145
1146 * jcf-reader.c (get_attribute, jcf_parse_preamble,
1147 jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
1148 jcf_parse_one_method, jcf_parse_methods,
1149 jcf_parse_final_attributes): Add static prototypes.
1150 (get_attribute): Constify a char*.
1151
1152 * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
1153 jcf_dependency_add_target, jcf_path_classpath_arg,
1154 jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
1155
1156 * jv-scan.c (main): Constify a char*.
1157 (gcc_obstack_init): Add prototype arguments.
1158
1159 * jvgenmain.c (gcc_obstack_init): Likewise.
1160 (main): Constify a char*.
1161
1162 * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
1163 static prototypes.
1164 (put_decl_string, lang_print_error): Constify a char*.
1165 (lang_init): Remove redundant extern prototype.
1166
1167 * mangle.c (emit_unicode_mangled_name): Constify a char*.
1168
1169 * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
1170 Add static prototypes.
1171 (get_type_from_signature): Constify a char*.
1172
1173 * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
1174 Add static prototypes.
1175 (start_pc_cmp): Prefer PTR over GENERIC_PTR.
1176 (verify_jvm_instructions): Constify a char*.
1177
1178 * xref.c (xref_flag_value): Likewise.
1179
1180 * xref.h (xref_flag_value): Likewise.
1181
1182 * zextract.c (makeword, makelong): Add static prototypes.
1183 (makeword, makelong): Constify a uch*.
1184
0070eeda
KG
11851999-08-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1186
1187 * lang.c (java_dummy_print): Constify a char*.
1188 (lang_print_error): Likewise.
1189 (lang_init): Remove redundant prototype for `print_error_function'.
1190 (lang_init_source): Likewise.
1191 (lang_identify): Constify a char*.
1192
63ac1f08
TT
11931999-08-09 Tom Tromey <tromey@cygnus.com>
1194
1195 * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
1196 (WORDS_TO_LONG): Likewise.
1197 (WORDS_TO_DOUBLE): Likewise.
1198
49f48c71
KG
11991999-08-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1200
1201 * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
1202
1203 * expr.c (java_stack_pop, java_array_data_offset,
1204 build_java_throw_out_of_bounds_exception, case_identity,
1205 build_java_check_indexed_type): Add static prototypes.
1206 (linenumber_table, expand_invoke, expand_java_field_op,
1207 build_primtype_type_ref, expand_byte_code): Constify a char*.
1208
1209 * java-tree.h (build_primtype_type_ref, linenumber_table):
1210 Constify a char*.
1211 (java_lang_expand_expr): Add prototype.
1212
1213 * lang.c: Include rtl.h and expr.h. Remove extern prototype for
1214 `java_lang_expand_expr'.
1215
1216 * lex.c (java_lex_error): Constify a char*.
1217 (java_get_unicode, java_read_char, java_allocate_new_line,
1218 java_unget_unicode, java_sneak_unicode): Prototype.
1219
1220 * parse-scan.y (current_class, package_name, method_declarator,
1221 report_class_declaration, yyerror): Constify a char*.
1222
1223 * parse.h (java_report_errors): Prototype.
1224 (yyerror): Constify a char*.
1225
1226 * parse.y (classitf_redefinition_error, check_modifiers,
1227 parse_jdk1_1_error, lookup_package_type,
1228 lookup_package_type_and_set_next, get_printable_method_name,
1229 purify_type_name): Constify a char*.
1230 (build_super_invocation, maybe_generate_finit,
1231 verify_constructor_super, parser_add_interface,
1232 add_superinterfaces, jdep_resolve_class, note_possible_classname,
1233 java_complete_expand_methods, java_expand_finals,
1234 cut_identifier_in_qualified, java_stabilize_reference,
1235 do_unary_numeric_promotion, operator_string, do_merge_string_cste,
1236 merge_string_cste): Prototype.
1237 (single_type_import_declaration, yyerror,
1238 variable_redefinition_error, build_array_from_name,
1239 build_unresolved_array_type, check_class_interface_creation,
1240 resolve_class, complete_class_report_errors,
1241 note_possible_classname, read_import_dir,
1242 find_in_imports_on_demand, resolve_package, fix_constructors,
1243 check_deprecation, lookup_method_invoke,
1244 maybe_build_primttype_type_ref, array_constructor_check_entry):
1245 Constify a char*.
1246 (java_complete_expand_methods, java_expand_finals): Make static.
1247 (convert_narrow): Remove static prototype.
1248
02edc62b
R
1249Tue Aug 3 20:21:20 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
1250
1251 * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
1252
0ae70c6a
RH
12531999-08-02 Richard Henderson <rth@cygnus.com>
1254
1255 * decl.c: Include defaults.h instead of expr.h.
1256 * parse.y: Likewise.
1257
e438e1b7
JJ
12581999-08-02 Jakub Jelinek <jj@ultra.linux.cz>
1259
1260 * java/decl.c (start_java_method): Change all uses of
1261 PROMOTE_PROTOTYPES, so that it tests it as a C expression.
1262 Ensure expr.h is included.
1263 * java/expr.c (pop_arguments): Ditto.
1264 * java/parse.y (expand_start_java_method): Ditto.
1265
9490b7d6
KG
12661999-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1267
1268 * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
1269
b384405b
BS
12701999-07-31 Bernd Schmidt <bernds@cygnus.co.uk>
1271
1272 * decl.c: Include "function.h".
1273 * except.c: Likewise.
1274 * parse.y: Likewise.
1275 * Makefile.in: Update dependencies.
1276
cd531a2e
KG
12771999-07-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1278
1279 * expr.c (build_java_soft_divmod): Provide a default case in switch.
1280 (java_lang_expand_expr): Mark parameters `target', `tmode' and
1281 `modifier' with ATTRIBUTE_UNUSED.
1282
1283 * gjavah.c (process_file): Add braces around ambiguous `else'.
1284
1285 * jcf-dump.c (print_access_flags, localvar_free): Change return
1286 type to void.
1287
1288 * parse.y (java_complete_expand_method): Initialize variable
1289 `exception_copy'.
1290 (resolve_qualified_expression_name): Likewise for `field_decl'.
1291 (patch_method_invocation): Likewise for `class_to_search'.
1292 (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
1293 (patch_assignment): Likewise for `lhs_type'.
1294
1295 * verify.c (verify_jvm_instructions): Remove unused variable
1296 `caller'.
1297
8824cf7e
RH
12981999-07-25 Richard Henderson <rth@cygnus.com>
1299
1300 * decl.c (va_list_type_node): New.
1301
6c9c5c1f
AG
13021999-07-25 Anthony Green <green@cygnus.com>
1303
1304 * gjavah.c (print_stub): New function.
1305 (METHOD_IS_NATIVE): New macro.
1306 (print_mangled_classname): Make static.
1307 (HANDLE_END_FIELD): Don't emit fields during stub generation.
1308 (process_file): Perform stub generation.
1309 (HANDLE_METHOD): Don't emit class decls during stub
1310 generation.
1311 (HANDLE_END_METHOD): Take into account stub generation.
1312 (print_method_info): Handle stub generation.
1313 (print_stub): New function.
1314 (print_cxx_classname): Make signature consistant with others.
1315 (help): Describe -stubs option.
1316 (main): Create stub file.
1317 (version): Use version.c.
1318 (print_full_cxx_name): New function.
1319 (print_c_decl): Use print_full_cxx_name.
1320
ac1d97ce
APB
1321Thu Jul 22 12:41:12 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1322
1323 * check-init.c (check_init): Handle MAX_EXPR.
1324
aa4759c1
AH
13251999-07-15 Andrew Haley <aph@cygnus.com>
1326
0b094f65
AH
1327 * lang.c (flag_use_divide_subroutine): New variable.
1328 * typeck.c: (convert_ieee_real_to_integer): Bounds check
1329 fp-to-integer conversion.
1330 (convert): Call convert_ieee_real_to_integer when flag_fast_math
1331 is not set.
1332
1333 * expr.c (build_java_soft_divmod): New function.
1334 (build_java_binop): Call build_java_soft_divmod if
1335 flag_use_divide_subroutine is set.
1336 * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
1337 soft_lrem_node: new builtin functions.
1338 (init_decl_processing) Initialize the new builtins.
1339 * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
1340 soft_lrem_node: new builtin functions.
1341 (build_java_soft_divmod): New function.
1342 * parse.y: Call build_java_soft_divmod if
1343 flag_use_divide_subroutine is set.
1344 * parse.c: Rebuilt.
1345
1346 * jvspec.c (lang_specific_driver): Always allow an extra arg (for
1347 a --specs= arg) even if not linking.
1348 * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
1349 -fuse-divide-subroutine
1350
7705e9db
APB
1351Tue Jul 20 13:20:05 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1352
1353 * parse.y (resolve_and_layout): Check methods only once.
1354 (resolve_qualified_expression_name): Verify thrown exceptions
1355 compatibility.
1356 (check_thrown_exceptions): Reject exceptions thrown in
1357 initializer. Error message tuned.
1358
e533f648
AH
13591999-07-14 Andrew Haley <aph@cygnus.com>
1360
1361 * expr.c (expand_expr): Do not return the last statement in a
1362 block as the block's value.
1363
1a6d4fb7
APB
1364Sat Jul 3 22:26:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1365
1366 * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
1367 CALL_EXPR, to avoid order of evaluation changes.
1368
1369Fri Jul 2 17:44:08 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1370
1371 * parse.y (qualify_ambiguous_name): Do not use
1372 IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
1373
1374Thu Jul 1 23:31:16 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1375
1376 * check-init.c (check_init): Handle MAX_EXPR.
1377 * expr.c (force_evaluation_order): Force method call arguments to
1378 be evaluated in left-to-right order.
1379 * parse.y (qualify_ambiguous_name): Loop again to qualify
1380 NEW_ARRAY_EXPR properly.
1381
1382Wed Jun 30 17:27:58 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1383
1384 * parse.y (patch_invoke): Resolve unresolved invoked method
1385 returned type.
1386 (qualify_ambiguous_name): STRING_CST to qualify expression for
1387 type name resolution.
1388
ac8f5d48
AH
13891999-06-24 Andrew Haley <aph@cygnus.com>
1390
1391 * class.c (finish_class): Whenever a deferred method is
1392 output, rescan the list of methods to see if a new candidate for
1393 output can be found.
1394
4198d734
TT
13951999-06-28 Tom Tromey <tromey@cygnus.com>
1396
1397 * jvspec.c (lang_specific_driver): Recognize --help.
1398
2c56429a
APB
1399Fri Jun 25 13:35:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1400
1401 * parse.y (resolve_package): Fixed bogus return statement.
1402 (patch_method_invocation): Resolve method invocation beginning with
1403 a package name qualifier.
1404
58ec4285
KG
14051999-06-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1406
1407 * Make-lang.in (java.stage1): Depend on stage1-start.
1408 (java.stage2): Likewise for stage2-start.
1409 (java.stage3): Likewise for stage3-start.
1410 (java.stage4): Likewise for stage4-start.
1411
2c56429a
APB
1412Thu Jun 24 13:12:15 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1413
1414 * parse.y (java_complete_lhs): When doing cross referencing, don't
1415 try to keep file location on a WFL expanded as a CALL_EXPR.
1416
1417Wed Jun 23 14:37:15 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1418
1419 * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
1420 compiling to class file a void method with an empty method body.
1421 As a side effect, the bytecode backend will generate the
1422 appropriate `return' instruction.
1423
1424Tue Jun 22 20:43:49 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1425
1426 * parse.y (lookup_package_type_and_set_next): New function prototype.
1427 (resolve_package): Search current and imported packages.
1428 (lookup_package_type_and_set_next): New function.
1429
45b0aa31
AH
14301999-06-22 Andrew Haley <aph@cygnus.com>
1431
1432 * verify.c (verify_jvm_instructions): Check for pending blocks
1433 before invalid PC test and opcode switch, not after.
1434
44d7502b
AH
14351999-06-21 Andrew Haley <aph@cygnus.com>
1436
1437 * except.c (find_handler_in_range): The upper limit for exception
1438 ranges is exclusive, not inclusive: (start <= pc < end).
1439 (link_handler): find child pointer which points to outer by
1440 searching sibling list: previous code incorrectly assumed that
1441 outer->outer->first_child must point to outer.
1442 * verify.c (verify_jvm_instructions): FIXME added to code for
1443 `athrow'.
1444 (verify_jvm_instructions): Do not assume that the last block
1445 processed in a subroutine is a block which ends with a `ret'
1446 instruction. With some control flows it is possible that the last
1447 block ends with an `athrow'.
1448
8576f094
APB
1449Mon Jun 14 13:13:39 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1450
1451 * parse.y (qualify_ambiguous_name): Reorganized the post
1452 evaluation of non WFL leading expression nodes.
1453
1454Fri Jun 11 21:37:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1455
1456 * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
1457 CONVERT_EXPR.
1458
1459Thu Jun 10 22:26:17 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1460
1461 * parse.y (qualify_ambiguous_name): Handle qualified expression
1462 beginning with a STRING_CST.
1463
1464Thu Jun 10 20:27:25 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1465
1466 * parse.y (register_fields): Set DECL_INITIAL on both
1467 pre-initialized static and public fields.
1468 (resolve_field_access): Static field access expressions to always
1469 use pointer types.
1470 (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
1471 qualification. CONVERT_EXPR to be resolved as an expression name.
1472 (java_complete_lhs): Identify and access qualified final
1473 initialized field in switch statement case expression.
1474 (fold_constant_for_init): Pre-initialized field decl constant to
1475 be folded.
1476
fe0e4d76
APB
1477Mon Jun 7 16:09:51 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1478
1479 * parse.y (note_possible_classname): Mark returned node with
1480 QUALIFIED_P only if the original class name contained a '/'.
1481
db1421c7
AG
1482Sat Jun 5 11:46:59 1999 Anthony Green <green@cygnus.com>
1483
1484 * Make-lang.in (gcjh): More parallel build fixes.
1485
14861999-06-03 Mike Stump <mrs@wrs.com>
1487
1488 * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
1489
99fd3aa5
AG
1490Wed Jun 2 10:44:38 1999 Anthony Green <green@cygnus.com>
1491
1492 * except.c (link_handler): Chain exception handlers in order.
1493
1494Wed Jun 2 10:41:24 1999 Anthony Green <green@cygnus.com>
1495
1496 * expr.c (expand_byte_code): Fill unreachable bytecode regions
1497 with nops and process as usual in order to always set correct EH
1498 ranges. Emit detailed warnings about unreachable bytecodes.
1499
1500Wed Jun 2 10:35:13 1999 Anthony Green <green@cygnus.com>
1501
1502 * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
1503 constant.
1504
93024893
APB
1505Fri May 28 18:22:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1506
1507 * parse.y (lookup_field_wrapper): Unified returned value to NULL
1508 or the searched field decl.
1509
1510Fri May 28 11:34:05 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1511
1512 * parse.y (fold_constant_for_init): Convert numerical constant
1513 values to the type of the assigned field.
1514
1515Thu May 27 19:57:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1516
1517 * expr.c (lookup_field): Relaxed the test on class loading error
1518 detection.
1519 * parse.y (fold_constant_for_init): Enabeled old code.
1520
1521Wed May 26 18:06:02 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1522
1523 * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
1524 decide the validity of the cast of a java.lang.Cloneable reference
1525 to an array.
1526 (patch_conditional_expr): Fixed first argument passed to
1527 binary_numeric_promotion.
1528
2ba1f15f
APB
1529Wed May 26 15:33:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1530
1531 * parse.y (qualify_ambiguous_name): Take into account that a
1532 CONVERT_EXPR might specify a type as a WFL.
1533
dc4e6ccf
APB
1534Tue May 25 15:06:13 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1535
1536 * parse.y (patch_assignment): Save the rhs before using it as an
1537 argument to _Jv_CheckArrayStore.
1538
1539Tue May 25 11:23:59 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1540
1541 * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
1542
1543Mon May 24 13:26:00 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1544
1545 * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
1546 floating point litteral only when the exponent indicator has been
1547 parsed.
1548
5256aa37
APB
1549Sat May 22 13:54:41 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1550
1551 * parse.y (formal_parameter:): Construct argument tree list
1552 element even if a yet unsupported final parameter was encountered.
1553
1554Tue May 18 00:28:58 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1555
1556 * parse.y (finish_method_declaration): Issue errors for native or
1557 abstract methods declared with a method body, as well as for non
1558 native or non abstract methods with no method body.
1559
ab3a6dd6
KG
15601999-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1561
1562 * class.c (build_utf8_ref): Initialize variable `field'.
1563
1564 * decl.c (init_decl_processing): Initialize variable `field'.
1565
1566 * expr.c (build_known_method_ref): Mark parameters `method_type',
1567 `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
1568 (process_jvm_instruction): Likewise for parameter `length'.
1569
1570 * jvspec.c (lang_specific_driver): Mark variables `saw_math',
1571 `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
1572 ATTRIBUTE_UNUSED.
1573
1574 * parse.y (maybe_generate_clinit): Remove unused variable
1575 `has_non_primitive_fields'.
1576 (find_in_imports_on_demand): Initialize variables `node_to_use'
1577 and `cl'.
1578 (patch_binop): Likewise for variable `prom_type'.
1579 (patch_unaryop): Likewise for variable `prom_type'.
1580
1581 * verify.c (verify_jvm_instructions): Likewise for variable `last'.
1582
1583 * xref.c (xref_table): Add missing initializer.
1584
5a9e5c6f
TT
15851999-05-14 Tom Tromey <tromey@cygnus.com>
1586
1587 * java-except.h (struct eh_range): Removed unused `next' member.
1588 * verify.c (verify_jvm_instructions): Call check_nested_ranges
1589 after adding all exception handlers. Sort exception ranges in
1590 order of start PC.
1591 (struct pc_index): New structure.
1592 (start_pc_cmp): New function.
1593 * except.c (add_handler): Return `void'. Don't call link_handler;
1594 instead construct an ordinary linked list and do range
1595 coalescing.
1596 (check_nested_ranges): New function.
1597 (link_handler): Changed interface to allow merging of eh_ranges.
1598 Split overlapping ranges. Return `void'.
1599
2e5eb5c5
APB
1600Mon May 17 19:20:24 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1601
1602 * parse.y (constructor_block_end:): New rule, tagged <node>.
1603 (constructor_body:): Use `constructor_block_end' instead of
1604 `block_end'.
1605
9dd939b2
APB
1606Mon May 17 18:01:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1607
1608 * parse.y (statement_nsi:): Pop `for' statement block.
2e5eb5c5 1609 (java_complete_lhs): Labeled blocks containing no statement are
9dd939b2
APB
1610 marked as completing normally.
1611
af8b342a
APB
1612Fri May 14 12:31:08 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1613
1614 * xref.c (xref_set_current_fp): New function, defined.
1615 * xref.h (xref_set_current_fp): New function, prototyped.
1616
1617Fri May 14 11:57:54 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1618
1619 * check-init.c (check_init): Take into account that
1620 LABELED_BLOCK_STMT can be empty.
1621
1fb89a4d
APB
1622Thu May 13 18:30:48 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1623
1624 * parse.y (java_check_regular_methods): Warning check on not
1625 overriding methods with default access in other packages does not
1626 apply to `<clinit>'.
1627 (java_complete_lhs): If block body is an empty_stmt_node, replace
af8b342a
APB
1628 it by NULL_TREE. This prevents gcc from generating an irrelevant
1629 warning.
1fb89a4d 1630
ce6e9147
APB
1631Thu May 13 13:23:38 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1632
1633 * check-init.c (check_init): Removed code accepting to see things
1634 falling through default:, when doing xrefs.
1635 * java-tree.h (do_not_fold): New global variable, declared.
1636 * parse.y (do_not_fold): New global variable, defined.
1637 (java_complete_expand_method): Set `do_not_fold' to the value of
1638 `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
1639 and reinstall them after them have been purged; do not check for
1640 initializations; do not issue missing return errors.
1641 (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
1642 when doing xrefs.
1643 (patch_binop): Skip the fold part when doing xrefs.
1644 (build_string_concatenation): Skip the concatenation part when
1645 doing xrefs.
1646 (patch_synchronized_statement): Do not generate a try-finally when
1647 doing xrefs.
1648 (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
1649 and keep the location where the throw was seen.
1650 * typeck.c (convert): When `do_not_fold' is set, do not attempt
1651 any treatment on the converted node an simply return a NOP_EXPR of
1652 the targeted type.
1653 * xref.c (xref_get_data): New function, defined.
1654 * xref.h (xref_get_data): New function, declared.
1655 (XREF_GET_DATA): Use xref_get_data.
1656
ab3a6dd6 16571999-05-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1b01250d
KG
1658
1659 * gjavah.c (print_include): Cast the result of `strlen' to int
1660 when comparing against a signed value.
1661 (add_namelet): Likewise.
1662
ab3a6dd6 16631999-05-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
34ba56fa 1664
b4b63e32
KG
1665 * expr.c (expand_invoke): Mark parameter `nargs' with
1666 ATTRIBUTE_UNUSED.
1667 (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
1668
1669 * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
1670 ATTRIBUTE_UNUSED.
1671
1672 * jcf-reader.c (get_attribute): Cast a value to long
1673 when comparing against a signed expression. Likewise.
1674
34ba56fa
KG
1675 * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
1676 HOST_BITS_PER_CHAR.
1677
138657ec
AH
16781999-05-11 Andrew Haley <aph@cygnus.com>
1679
1680 * parse.y (source_end_java_method): If the current method contains
1681 any exception handlers, force asynchronous_exceptions: this is
1682 necessary because signal handlers in libjava may throw exceptions.
1683 * decl.c (end_java_method): Ditto.
1684
6a09296d
TT
16851999-05-11 Tom Tromey <tromey@cygnus.com>
1686
1687 * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
1688 flags.
1689 * jvspec.c (THREAD_NAME): Removed.
1690 (GC_NAME): Likewise.
1691 (MATHLIB): Likewise.
1692 (WITHLIBC): Likewise.
1693 (GCLIB): Likewise.
1694 (THREADLIB): Likewise.
1695 (MATH_LIBRARY): Likewise.
1696 (lang_specific_driver): Don't add `-l' options to command line.
1697 Instead, add a single --specs option. Recognize `-L' options and
1698 use them to search for spec file.
1699 (find_spec_file): New function.
1700 (SPEC_FILE): New define.
1701
b8b8bc03
DB
1702Tue May 11 11:46:36 1999 Dave Brolley <brolley@cygnus.com>
1703
1704 * lang-options.h: -MD, -MMD, -M and -MM not needed here for
1705 cpplib-enabled build.
1706
c14cff58
PB
17071999-05-05 Per Bothner <bothner@cygnus.com>
1708
1709 * class.c (make_field_value): DECL_INITIAL may be a string literal;
1710 temporarily zero it while calling rest_of_decl_compilation.
1711
1712 * java-tree.h (string_ptr_type_node): Add declaration.
1713 * decl.c: Define and initialize string_ptr_type_node.
1714 * parse.y (patch_string_cst): Use string_ptr_type_node.
1715
1716 * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed.
1717 * parse.y (for_statement): Now unconditionally exit_block.
1718 (finish_labeled_statement): No longer exit_block if for-loop.
1719 (patch_loop_statement): Check harder if the loop is already labeled.
1720
1721 * parse.y (patch_initialized_static_field): Removed function.
1722 (maybe_generate_clinit): Removed special handling for interfaces.
1723 (java_complete_expand_methods): Do a preliminary java_complete_tree
1724 on <clinit> to determine if it can be removed.
1725 (java_complete_expand_method): Remove special handling for <clinit>.
1726 (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION
1727 optimize if we get back empty_stmt_node.
1728 For MODIFY_EXPR, re-do checking of static initializers.
1729 (fold_constant_for_init): Don't return immediate if VAR_DECL.
1730 For VAR_DECL, pass correct context.
1731
1732 * verify.c (verify_jvm_instructions): Better error messages.
1733
a7f0ef91
TT
17341999-05-03 Tom Tromey <tromey@cygnus.com>
1735
1736 * parse-scan.y (interface_declaration): Call
1737 report_class_declaration for interfaces.
1738
b4c92efc
ZW
17391999-04-30 20:54 -0400 Zack Weinberg <zack@rabi.columbia.edu>
1740
1741 * Makefile.in: Remove -v from bison command lines.
1742
7f10c2e2
APB
1743Fri Apr 30 17:54:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1744
1745 * check-init.c (check_init): Exclude a case of error when doing
1746 xrefs.
1747 * class.c (layout_class_method): Don't generate the error message
1748 twice when compiling from source.
1749 * lang-options.h: Added `-Wredundant-modifers' and
1750 `-Wunusupported-jdk11' flags and help text.
1751 * lang.c (lang_decode_option): Added support for
1752 `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
1753 flag_static_local_jdk11 and flag_redundant set accordingly.
1754 * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
1755 * parse.h (EXPR_WFL_ADD_COL): New macro.
1756 (DECL_END_SOURCE_LINE): Likewise.
1757 (DECL_INHERITED_SOURCE_LINE): Likewise.
1758 * parse.y (static_ref_err): New function, prototyped.
1759 (CCB_TK): Now tagged <operator>.
1760 (class_body:): Remember the location of the closing '}' of a class
1761 definition when doing xrefs.
1762 (block:): Likewise.
1763 (block_end:): Likewise.
1764 (create_class): Remember the location of the inherited class
1765 identifier when doing xrefs.
1766 (register_fields): Added test on first operand of `init' before
1767 testing it TREE_CODE.
1768 (method_header): Store the location of the class identifier in the
1769 class decl when doing xrefs.
1770 (finish_method_declaration): Don't combine first/last method line
1771 when doing xref.
1772 (java_check_regular_methods): Warning check on not overriding
1773 methods with default access on other packages move before check on
1774 static methods. Initialization of `aflags' also moved up.
1775 (resolve_expression_name): Call static_ref_err to report the error.
1776 (static_ref_err): New function, implemented.
1777 (resolve_field_access): Returned simplified static field access
1778 when doing xrefs.
1779 (resolve_qualified_expression_name): Check for illegal use of
1780 static fields in a non static context. Call static_ref_err to
1781 report error in various places.
ce6e9147 1782 (java_complete_tree): Do not fold initialized static fields when
7f10c2e2
APB
1783 doing xrefs.
1784 (java_complete_lhs): Likewise.
1785
d2e0d40a
AG
17861999-04-29 Anthony Green <green@cygnus.com>
1787
1788 * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
1789 create internal labels.
1790 (lookup_label): Ditto.
1791
7f1d4866
APB
1792Sat Apr 24 16:50:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1793
1794 * class.c (layout_class_method): Generate <clinit>'s rtl for
1795 interfaces.
1796 * decl.c (complete_start_java_method): Don't call _Jv_InitClass
1797 for interfaces' <clinit>.
1798 * expr.c (lookup_field): Search for fields in interfaces.
1799 (expand_invoke): Fixed indentation.
1800 (expand_java_field_op): Likewise. Use IS_CLINIT.
1801 * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
1802 (IS_CLINIT): New macro.
1803 * parse.y (type_declaration:): Call maybe_generate_clinit after an
1804 interface was parsed.
1805 (maybe_generate_clinit): Don't generate if the current class is an
1806 interface with only fields of primitive types.
1807 (reset_method_name): Use IS_CLINIT.
1808 (java_complete_expand_method): Expand <clinit> when it exists for
1809 interfaces. Use IS_CLINIT.
1810 (resolve_expression_name): Use DECL_CONTEXT instead of
1811 current_class to build static field references.
1812 (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
1813 ARRAY_REF when doing xreferencing.
1814 (check_final_assignment): Fixed typo in leading comment. Use
1815 IS_CLINIT.
1816 (patch_array_ref): Don't fully expand array references when
1817 xreferencing.
1818 (patch_return): Use IS_CLINIT.
1819 (patch_throw_statement): Likewise.
1820
c9eb638e
TT
18211999-04-22 Tom Tromey <tromey@cygnus.com>
1822
1823 * Make-lang.in (JAVA_SRCS): Added check-init.c.
1824
5423609c
APB
1825Wed Apr 21 11:13:36 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1826
1827 * decl.c (predef_filenames, predef_filenames_size): New globals
1828 (init_decl_processing): predef_filenames and predef_filenames_size
1829 initialized.
1830 * java-tree.h (predef_filenames, predef_filenames_size): Declared
1831 extern.
1832 * jcf-parse.c (predefined_filename_p): New function.
1833 (yyparse): Check that files on the command line are specified only
1834 once and issue a warning otherwise.
1835 * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
1836 * parse.y (source_end_java_method): Nullify NOP method bodies, to
1837 avoid a gcc warning with -W -Wall turned on.
1838 (java_expand_classes): Abort if errors were encountered.
1839 (java_complete_lhs): If the cross reference flag is set, wrap
1840 field DECL node around a WFL when resolving expression name.
1841
e8fc7396
APB
1842Mon Apr 19 14:44:48 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1843
1844 * lang.c (lang_decode_option): Fixed returned value when parsing
1845 `-fxref=...' and `-Wall'.
1846 * parse.y (source_end_java_method): Do not generate code when
1847 flag_emit_xref is set.
1848 (resolve_expression_name): Do not build static field access when
1849 flag_emit_xref is set.
5423609c 1850 (resolve_field_access): No special treatment on `length' when
e8fc7396
APB
1851 flag_emit_xref is set. Do not build qualified static field access
1852 when flag_emit_xref is set.
1853 (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
1854 when flag_emit_xref is set.
1855 (patch_assignment): Do not generate array store runtime check when
1856 flag_emit_xref is set.
1857 * xref.c (xref_flag_value): Fixed function declaration
1858 indentation.
1859 (xset_set_data): New function.
1860 * xref.h (xref_set_data): Added prototype for new function.
1861 (typedef struct xref_flag_table): New field data.
1862 (XREF_GET_DATA): New macro.
1863
a3f406ce
TT
18641999-04-19 Tom Tromey <tromey@cygnus.com>
1865
1866 * xref.h (enum): Removed trailing comma.
1867
1868 * parse.y (resolve_qualified_expression_name): Added missing
1869 `break'.
1870
08967681
AG
1871Thu Apr 15 13:08:03 1999 Anthony Green <green@cygnus.com>
1872
1873 * gjavah.c: New prototypes for java_float_finite and
1874 java_double_finite.
1875
b3edebcf
APB
1876Mon Apr 12 18:27:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1877
e8fc7396 1878 * parse.y (patch_unaryop): Fixed ++/-- operator check on array
b3edebcf
APB
1879 references.
1880
0bb07950
JL
1881Tue Apr 6 23:15:52 1999 Jeffrey A Law (law@cygnus.com)
1882
1883 * Makefile.in (TREE_H): Add tree-check.h.
1884 (RTL_H): Add genrtl.h.
1885
2622b947
APB
1886Tue Apr 6 15:15:51 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1887
1888 * parse.y (patch_assignment): Added ArrayStoreException runtime
1889 check.
1890
b399dcd2
PB
18911999-04-06 Per Bothner <bothner@cygnus.com>
1892
ab45646c
PB
1893 * expr.c (pop_type_0): New function.
1894 (pop_type): Use pop_type_0.
1895 * java-tree.h (pop_type_0): New declaration.
1896 * verify.c (verify_jvm_instructions): Check return instructions.
1897
b399dcd2
PB
1898 * parse.y (patch_binop): Don't fold if non-constant and emiting
1899 class files.
1900
4f65832d
KG
1901Mon Apr 5 16:06:09 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1902
1903 * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
1904
1905 * gjavah.c: Include math.h earlier. Include tree.h/java-tree.h.
1906 (main_jcf): Don't define.
1907 (process_file): Don't set `main_jcf'.
1908
1909 * java-tree.h (main_jcf): Don't declare.
1910
1911 * jcf-parse.c (main_jcf): Add static definition.
1912
1913 * lang.c (main_jcf): Don't define.
1914
4504ead1
KG
1915Mon Apr 5 15:43:51 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1916
1917 * class.c (add_method_1): Cast the argument of `bzero' to PTR.
1918
1919 * decl.c (copy_lang_decl): Likewise for `bcopy'.
1920
1921 * jcf-depend.c: Include "config.h", not <config.h>.
1922
1923 * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
1924 `bcopy' to PTR.
1925
1926 * jcf-path.c: Include "config.h", not <config.h>.
1927
1928 * lex.c: Don't include various system header files.
1929 (java_init_lex): Cast the argument of `bzero' to PTR
1930
1931 * parse-scan.y (java_push_parser_context): Likewise.
1932
1933 * parse.y (java_push_parser_context): Likewise.
1934 (patch_bc_statement): Match format specifier to variable argument.
1935
1936 * xref.c: Don't include <stdio.h>.
1937
d4370213
APB
1938Mon Apr 5 11:24:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1939
1940 * parse.y (struct parser_ctxt *ctxp): Now global.
1941 (declare_local_variables): Use WFL compound value for the
1942 declaration source line value, when doing cross-referencing.
1943
5877286e
TT
19441999-03-31 Tom Tromey <tromey@cygnus.com>
1945
1946 * gjavah.c (print_field_info): Allow constants of other types.
1947 (print_include): Generate include when new name is proper prefix
1948 of already printed name.
1949 (add_namelet): Likewise.
1950 (cxx_keyword_subst): New function.
1951 (print_method_info): Use it.
1952 (print_field_name): New function.
1953 (get_field_name): New function.
1954 (print_field_info): Use get_field_name and print_field_name.
1955
6a28cabc
KG
1956Wed Mar 31 11:00:32 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1957
1958 * Makefile.in (keyword.h): Generate using gperf language 'C', not
1959 'KR-C', so gperf uses the `const' keyword on strings.
1960
1961 * keyword.gperf (java_keyword): Const-ify a char*.
1962
1504b2b4
APB
1963Tue Mar 30 11:31:53 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1964
1965 * parse.y (patch_bc_statement): Fixed identation and a bogus
1966 `printf' format.
1967
1968Tue Mar 30 11:29:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
1969
1970 * parse.y (patch_assignment): Allow static variables in other
1971 classes to be assigned.
1972
152f94fc
KG
1973Sun Mar 28 22:12:10 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1974
1975 * class.c (maybe_add_interface): Remove unused variable
1976 `interface_binfo'.
1977 (make_class_data): Use = for assignment, not ==. Likewise.
1978 (emit_register_classes): Remove unused variable `decl'.
1979
1980 * lex.c: Fix comment so as not to contain an embedded `/*'.
1981
1982 * verify.c (verify_jvm_instructions): Remove unused variable
1983 `self_type'.
1984
f1b0c0d8
PB
1985Sat Mar 27 15:49:18 1999 Per Bothner <bothner@cygnus.com>
1986
1987 * parse.y (complete_loop_body): Rename to finish_loop_body.
1988 (complete_labeled_statement): Rename to finish_labeled_statement.
1989 (complete_for_loop): Rename to finish_for_loop.
1990 (complete_method_declaration): Rename to finish_method_declaration.
1991
1992 * java-tree.h (continue_identifier_node): New global node.
1993 * decl.c: Define and initialize continue_identifier_node.
1994 * parse.y (generate_labeled_block): Remove - no longer needed.
1995 (build_loop_body): Use continue_identifier_node for continue block.
1996 (finish_labeled_statement): Also do pop_labeled_block actions.
1997 (java_complete_lhs): POP_LOOP even if error.
1998 (build_labeled_block): Special handling for continue_identifier_node.
1999 (patch_loop_statement): Re-organize.
2000 (patch_bc_statement): Re-write.
2001
f099f336
APB
2002Sat Mar 27 15:13:21 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2003
2004 * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
2005 using a WFL compound value.
2006 * parse.y (xref.h): Include.
2007 (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
2008 WFL compound value.
2009 (register_fields): Set WFL compound value to lineno if doing
2010 xrefs.
2011 (java_complete_expand_method): Call expand_xref if flag_emit_xref
2012 is set.
2013 * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
2014 * xref.h (expand_xref): Prototype renamed from xref_generate.
2015
2016Sat Mar 27 14:16:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2017
2018 * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
2019 (GET_CURRENT_BLOCK): New macro.
2020 * parse.y (current_static_block): New global variable.
2021 (method_body:): Define action.
2022 (complete_method_declaration): Set current_function_decl to NULL
2023 when work on the current method is done.
2024 (declare_local_variables): Use GET_CURRENT_BLOCK.
2025 (java_method_add_stmt): Likewise.
2026 (java_complete_expand_method): Disable the use of `this' when
2027 expanding <clinit>.
2028 (enter_a_block): If no current method exist, use
2029 current_static_block to link static initializer blocks.
2030 (exit_block): Rewritten to use current_static_block when no current
2031 method decl exists.
2032 (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
2033 (patch_return): Forbid the use of `return' in static initializers.
2034 (patch_throw_statement): Fixed indentation. Issue specific error
2035 for uncaught thrown checked exception in static initializer
2036 blocks. Removed FIXME.
2037
08dc830e
ZW
20381999-03-25 Zack Weinberg <zack@rabi.columbia.edu>
2039
2040 * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
2041 Link gcj from gcc.o.
2042
de0b553f
APB
2043Tue Mar 23 10:48:24 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2044
2045 * parse.y (find_applicable_accessible_methods_list): When dealing
2046 with interface: ensure that a given interface or java.lang.Object
2047 are searched only once.
2048
9ee9b555
KG
2049Tue Mar 23 10:05:27 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2050
2051 * gjavah.c (print_c_decl): Remove unused argument `flags'.
2052
2053 * jcf-dump.c (print_access_flags): Add braces around if-else.
2054
2055 * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
2056 COMBINE_INPUTS.
2057
2058 * lex.c (build_wfl_node): Add static prototype.
2059
2060 * lex.h (build_wfl_node): Remove static prototype.
2061
2062 * parse.y: Include lex.c early enough to declare everything needed.
2063 Ensure calls to `build_wfl_node' pass the proper arguments.
2064 (create_class): Remove unused variable `super_decl'.
2065 (get_printable_method_name): Initialize variable `name'.
2066
8af456c8
APB
2067Mon Mar 22 20:14:26 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2068
2069 * Changelog: Fixed 1999-03-22 typos.
2070 * lang.c (lang_decode_option): Fixed typo in error string in the
2071 XARG section.
2072
235acd35
APB
20731999-03-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
2074
8af456c8 2075 * Makefile.in (JAVA_OBJS): Added entry xref.o.
235acd35
APB
2076 (xref.o): New rule.
2077 * java-tree.h (flag_emit_xref): Declared extern.
8af456c8 2078 * lang.c (xref.h): Included.
235acd35
APB
2079 (flag_emit_xref): New global variable.
2080 (lang_decode_option): Added support for -fxref.
2081 * xref.c: Created.
2082 * xref.h: Likewise.
2083
e541d2b1
MH
20841999-03-21 Manfred Hollstein <manfred@s-direktnet.de>
2085
2086 * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
2087 linked with.
2088
4bcde32e
KG
2089Sun Mar 21 08:30:30 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2090
2091 * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
2092 $(srcdir)/../system.h and $(JAVA_TREE_H).
2093 (jcf-io.o): Depend on $(JAVA_TREE_H).
2094 (mangle.o): Likewise.
2095
2096 * check-init.c (check_cond_init): Add static prototype.
2097
2098 * class.c (build_java_method_type, hashUtf8String,
2099 make_field_value, get_dispatch_vector, get_dispatch_table,
2100 append_gpp_mangled_type, mangle_static_field): Likewise.
2101 (strLengthUtf8): Hide unused definition.
2102 (hashUtf8String): Const-ify.
2103 (make_field_value): Un-ANSI-fy.
2104
2105 * constants.c: Move inclusion of jcf.h above java-tree.h.
2106 (set_constant_entry, find_class_or_string_constant,
2107 find_name_and_type_constant, get_tag_node,
2108 build_constant_data_ref): Add static prototype.
2109
2110 * decl.c (push_jvm_slot, builtin_function,
2111 lookup_name_current_level): Likewise.
2112 (builtin_function): Const-ify.
2113
2114 * except.c (expand_start_java_handler, expand_end_java_handler):
2115 Add static prototype.
2116
2117 * expr.c (flush_quick_stack, push_value, pop_value,
2118 java_stack_swap, java_stack_dup, build_java_athrow,
2119 build_java_jsr, build_java_ret, expand_java_multianewarray,
2120 expand_java_arraystore, expand_java_arrayload,
2121 expand_java_array_length, build_java_monitor, expand_java_pushc,
2122 expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
2123 expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
2124 expand_compare, expand_test, expand_cond, expand_java_goto,
2125 expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
2126 expand_java_field_op, java_push_constant_from_pool): Likewise.
2127
2128 (decode_newarray_type, expand_iinc): Un-ANSI-fy.
2129 (build_java_arraynull_check): Mark parameters `node' and `type'
2130 with ATTRIBUTE_UNUSED.
2131 (note_label): Likewise for parameter `current_pc'.
2132 (expand_java_call, expand_java_ret): Hide unused definition.
2133
2134 * java-tree.h (make_class, build_constants_constructor,
2135 java_set_exception_lang_code, pop_labeled_block, emit_handlers,
2136 init_outgoing_cpool, register_class, emit_register_classes,
2137 java_layout_seen_class_methods): Prototype.
2138 (unicode_mangling_length): Const-ify.
2139 (append_gpp_mangled_name, append_gpp_mangled_classtype,
2140 emit_unicode_mangled_name, format_int, format_uint,
2141 jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
2142 jcf_print_utf8_replace, open_class): Prototype.
2143
2144 * jcf-dump.c: Include "config.h", not <config.h>. Don't include
2145 <stdio.h>. Include tree.h/java-tree.h.
2146 (utf8_equal_string usage, process_class): Add static prototype.
2147 (open_class): Don't prototype this here.
2148 (utf8_equal_string): Match arguments to format specifiers.
2149 (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
2150 TABLE_SWITCH, disassemble_method): Likewise.
2151
2152 * jcf-io.c: Include tree.h/java-tree.h.
2153 (open_class, find_classfile, jcf_print_utf8,
2154 jcf_print_utf8_replace): Const-ify.
2155
2156 * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
2157 parse_class_file): Add static prototype.
2158 (find_in_current_zip): Match definition to existing static
2159 prototype.
2160
2161 * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
2162 (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
2163 finish_jcf_block, define_jcf_label, get_jcf_label_here,
2164 put_linenumber, localvar_alloc, localvar_free, get_access_flags,
2165 write_chunks, adjust_typed_op, generate_bytecode_conditional,
2166 generate_bytecode_return, perform_relocations, init_jcf_state,
2167 init_jcf_method, release_jcf_state, generate_classfile):
2168 Add static prototype.
2169 (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
2170 (make_class_file_name): Const-ify.
2171
2172 * jcf.h (find_classfile): Const-ify.
2173
2174 * jv-scan.c (reset_report): Remove prototype.
2175
2176 * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
2177 (error): Rewrite to allow varargs.
2178
2179 * lang.c (lang_f_options): Const-ify.
2180
2181 * lex.c (java_parse_escape_sequence): Add static prototype.
2182 (java_allocate_new_line): Match definition to existing static
2183 prototype.
2184
2185 * mangle.c Include tree.h/java-tree.h.
2186 (unicode_mangling_length, emit_unicode_mangled_name,
2187 append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
2188
2189 * parse.h (jdep_code): Remove trailing comma in enumeration.
2190 (java_get_line_col): Move prototype outside of !JC1_LITE test.
2191 (reset_report): Add prototype.
2192
2193 * verify.c (push_pending_label, merge_types): Add static
2194 prototypes.
2195
2196 * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
2197
1982388a
APB
21981999-03-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
2199
2200 * parse.y (find_applicable_accessible_methods_list): Extend the
2201 search to superinterfaces when relevant.
2202 (search_applicable_methods_list): New function.
2203
22041999-03-18 Alexandre Petit-Bianco <apbianco@cygnus.com>
2205
2206 * class.c (unmangle_classname): Implemented stricter testing
2207 before setting the QUALIFIED_P flag on an identifier.
2208
8fe57f78
PB
2209Tue Mar 16 15:15:41 1999 Per Bothner <bothner@cygnus.com>
2210
2211 * parse.y (java_complete_lhs): Call force_evaluation_order
2212 after patch_newarray.
2213 (patch_binop): Don't call fold if there are side effects.
2214
642f15d1
APB
22151999-03-16 Alexandre Petit-Bianco <apbianco@cygnus.com>
2216
2217 * parse.y (java_stabilize_reference): Use save_expr instead of
2218 building a SAVE_EXPR node.
2219 (java_complete_lhs): Patch the resulting string of the `+='
2220 operator (if necessary) and complete the RHS after having built
2221 the cast.
2222
c52016e4
PB
2223Mon Mar 15 12:18:29 1999 Per Bothner <bothner@cygnus.com>
2224
2225 * class.c (make_class): Don't set CLASS_P here (because
2226 this function is also called by build_java_array_type).
2227 (push_class): Set CLASS_P here instead.
2228 * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant.
2229
2230 * jcf-dump.c (print_access_flags): Take extra parameter to indicate
2231 context. If the context is class, perfer "super" over "synchronized".
2232 * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface.
2233
2234 * parse.y (create_class): Don't call parser_check_super here;
2235 it is not robust. Always wait until later.
2236
2237 * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to
2238 match what JDK 1.2 does), but don't set ACC_PUBLIC.
2239
b911df12
PB
2240Sat Mar 13 18:16:34 1999 Per Bothner <bothner@cygnus.com>
2241
2242 * lex.c (java_read_char): UNGET invalid non-initial utf8 character.
2243 * lex.h (UNGETC): Change misleading macro.
2244
2aa11e97
APB
22451999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com>
2246
2247 * parse.y (java_stabilize_reference): Return NODE when patching a
2248 COMPOUND_EXPR.
2249 (java_complete_lhs): Put parenthesis around truth values.
2250
22511999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com>
2252
2253 * class.c (layout_class_method): Don't make rtl for interface
2254 methods.
2255 * parse.h (GET_TYPE_NAME): New macro.
2256 * parse.y (if_then_statement:): Fixed indentation.
2257 (if_then_else_statement:): Likewise.
2258 (for_statement:): Fixed spacing.
2259 (try_statement:): Fixed indentation.
2260 (create_interface): Don't force interfaces to be abstract.
2261 (method_header): Abstract methods are OK in interfaces.
2262 (declare_local_variables): Fixed typo in comment.
2263 (java_complete_expand_method): Fixed indentation.
2264 (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
2265 non accessible fields.
2266 (java_stabilize_reference): New function.
2267 (java_complete_lhs): Fixed indentation. Use
2268 java_stabilize_reference in compound assignement. Insert the
2269 cast. If not processing `+' fix string constants before processing
2270 binop.
2271
7e21fe59
KG
2272Fri Mar 12 19:42:55 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2273
2274 * constants.c (find_class_or_string_constant): Cast variable `j'
2275 to a `jword' when comparing against one.
2276
2277 * expr.c (java_lang_expand_expr): Remove unused variables
2278 `has_finally_p' and `op0'.
2279
2280 * gjavah.c (print_field_info): Cast a value to jint when comparing
2281 against one. Likewise for a jlong.
2282 (add_namelet): Likewise cast a `sizeof' to an int when comparing
2283 against a signed quantity.
2284
2285 * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
2286 (print_signature): Don't needlessly dereference variable `str'
2287
2288 * jcf-reader.c (get_attribute): Mark variables `max_stack' and
2289 `max_locals' with ATTRIBUTE_UNUSED.
2290 (jcf_parse_class): Likewise for variable `index'.
2291
2292 * parse.h (reverse_jdep_list): Remove static prototype.
2293
2294 * parse.y (build_jump_to_finally): Remove prototype and definition.
2295 (reverse_jdep_list): Add static prototype.
2296
2297 * typeck.c (convert_ieee_real_to_integer): Remove unused variables
2298 `assignment' and `expr_decl'.
2299
2300 * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
2301
ecef190c
AH
23021999-03-12 Andrew Haley <aph@cygnus.com>
2303
2304 * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
2305 we'll need a directory separator and a null character.
2306
2aee04d2
PB
2307Wed Mar 10 23:20:11 1999 Per Bothner <bothner@cygnus.com>
2308
2309 * jcf-write.c (generate_bytecode_insns): Handle __builtin_fmod, for %.
2310
2aa11e97
APB
2311 Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2312
2313 * parse.y (method_header): Don't set ACC_ABSTRACT flags on
2314 interfaces.
2315
30ca27b4
PB
2316Fri Mar 5 15:17:29 1999 Per Bothner <bothner@cygnus.com>
2317
2318 * lex.c (java_parse_end_comment): Take extra parameter (next char).
2319
2320 * class.c (build_utf8_ref): Fix possible name class/ambiguity.
2321
2322 * class.c (layout_class_method): A static method in a base class
2323 is never overridden, so treat it like it doesn't exist.
2324 However, do complain about private non-static method overriding
2325 public static method.
2326
2327 * parse.y: Don't set unused INITIALIZED_P flag.
2328 * java-tree.h (INITIALIZED_P): Removed no-longer needed flag.
2329
2330 * parse.y (find_expr_with_wfl): Optimize tail-calls.
2331 (build_array_from_name): Re-order &index[string] to &string[index].
2332
2aa11e97 2333 * parse.y (java_complete_lhs): Don't call patch_assignment if rhs is
30ca27b4
PB
2334 error_mark (it might catch more errors, but it is more likely to lose).
2335
8e1f2d4c
KG
2336Sat Mar 6 11:17:16 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2337
2338 * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
2339 (parse-scan.o): Depend on toplev.h.
2340
2341 * class.c (make_method_value): Add prototype. Make it static.
2342 Remove unused second argument, caller changed.
2343
2344 * expr.c (java_lang_expand_expr): Remove unused variable
2345 `return_label'.
2346
2347 * java-tree.h: Don't prototype find_in_current_zip.
2348 Add prototypes for verify_constant_pool, start_java_method,
2349 end_java_method, give_name_to_locals, expand_byte_code,
2350 open_in_zip, set_constant_value, find_constant1, find_constant2,
2351 find_utf8_constant, find_string_constant, find_class_constant,
2352 find_fieldref_index, find_methodref_index, write_constant_pool,
2353 count_constant_pool_bytes and encode_newarray_type.
2354
2355 * jcf-dump.c: Remove unused variable `LONG_temp'.
2356
2357 * jcf-parse.c: Include parse.h.
2358 (jcf_parse_source): Remove unused parameter, all callers changed.
2359 (jcf_figure_file_type): Add static prototype.
2360 (find_in_current_zip): Likewise. Also remove unused parameter,
2361 all callers changed.
2362 (read_class): Initialize variable `saved_pos'.
2363
2364 * jcf-reader.c (jcf_parse_preamble): Mark variables
2365 `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
2366
2367 * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
2368 (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
2369 (java_parse_doc_section): Initialize variable `seen_star'.
2370 (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
2371 (java_lex_error): Mark parameters `msg' and `forward' with
2372 ATTRIBUTE_UNUSED.
2373 (java_get_line_col): Mark parameters `filename' and `line' with
2374 ATTRIBUTE_UNUSED.
2375
2376 * parse-scan.y: Include toplev.h.
2377 (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
2378
2379 * parse.h: use `struct JCF', not plain `JCF'.
2380 (java_parser_context_save_global, java_expand_classes
2381 java_parser_context_restore_global, java_parse): Add prototypes.
2382
2383 * typeck.c (convert_ieee_real_to_integer): Remove unused variable
2384 `node'.
2385
afe81dd6
PB
2386Wed Feb 24 16:13:59 1999 Per Bothner <bothner@deneb.cygnus.com>
2387
2388 * check-init.c (check_init): COPYN takes word count, not bit count.
2389
2d9e5c79
PB
2390Fri Feb 26 14:06:21 1999 Per Bothner <bothner@cygnus.com>
2391
2392 * typeck.c (convert_ieee_real_to_integer): Use save_expr instead of
2393 explicit build_decl. (Avoids crash in reload when optimizing.)
2394
2395Thu Feb 25 21:05:04 1999 Per Bothner <bothner@cygnus.com>
2396
2397 * decl.c (complete_start_java_method): Handle synchronized method
2398 even when compiling from bytecode.
2399
f3d50f42
TT
24001999-02-26 Tom Tromey <tromey@cygnus.com>
2401
686fb236
TT
2402 * gjavah.c (add_class_decl): Only generate `#include' if outer
2403 class is not the name of the class we are processing. Correctly
2404 append `.h' in #include.
2405 (process_file): Clean up newlines around generated `#include's.
2406 (decode_signature_piece): Correctly handle inner classes.
2407 (struct include): New structure.
2408 (all_includes): New global.
2409 (print_include): New function.
2410 (add_class_decl): Use it.
2411 (process_file): Likewise.
2412 (add_class_decl): Generate include for java-array.h if array
2413 seen.
2414 (process_file): Don't generate java-array.h include.
2415
f3d50f42
TT
2416 * gjavah.c (add_namelet): Check for standard package names here.
2417 (add_class_decl): Don't check for standard package names here.
2418
345137c7
TT
24191999-02-25 Tom Tromey <tromey@cygnus.com>
2420
2421 * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
2422 When reading a zip file, only use strncmp if both strings are
2423 bigger than the buffer length. Initialize `k' when looping
2424 through zip file.
2425
bdb59aec
TT
24261999-02-24 Tom Tromey <tromey@cygnus.com>
2427
2428 * gjavah.c (struct namelet): New structure.
2429 (add_namelet): New function.
2430 (print_namelet): New function.
2431 (print_class_decls): Use add_namelet and print_namelet to generate
2432 namespaces and not classes.
2433 (method_printed): New global.
2434 (HANDLE_END_METHOD): Examine method_printed.
2435 (print_method_info): Set method_printed when required. Print
2436 error if function to be ignored is marked virtual. Handle $finit$
2437 method.
2438 (METHOD_IS_FINAL): New macro.
2439 (print_field_info): Use it.
2440 (HANDLE_METHOD): Clear method_printed.
2441 (method_pass): New global.
2442 (HANDLE_END_FIELD): Call add_class_decl on the first pass.
2443 (process_file): Do two passes over both fields and methods.
2444 (HANDLE_METHOD): Examine method_pass.
2445 (root): New global.
2446 (add_class_decl): New function.
2447 (print_class_decls): Don't scan over entire constant pool.
2448
4e2e5821
TT
24491999-02-23 Tom Tromey <tromey@cygnus.com>
2450
2451 * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
2452 disable linking in that case.
2453
a3299934
TT
24541999-02-20 Tom Tromey <tromey@cygnus.com>
2455
2456 * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
2457 not 0x1f.
2458
edd643a9
PB
2459Sun Feb 21 14:56:11 1999 Per Bothner <bothner@cygnus.com>
2460
92ada242
PB
2461 * decl.c (build_result_decl), java-tree.h: New method.
2462 (complete_start_java_method): Handle synchronized methods.
2463 Don't build DECL_RESULT here. (Ordering dependency problem.)
2464 (start_java_method): Call build_result_decl here instead ...
2465 * parse.y (java_complete_expand_method): ... and here.
2466 (expand_start_java_method): Don't call complete_start_java_method here.
2467 (java_complete_expand_method): Call it here instead.
2468 * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to ..
2469 * java-tree.h: ... here.
2470
2471 * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF.
2472 * parse.y (java_complete_lhs): Don't call force_evaluation_order
2473 for ARRAY_REF - it doesn't work when array bounds are checked.
2474 (patch_array_ref): Handle it here instead.
2475
edd643a9
PB
2476 * jcf-write.c (generate_classfile): Emit "Exceptions" attribute.
2477
419ff8e1
PB
2478Fri Feb 19 15:35:01 1999 Per Bothner <bothner@cygnus.com>
2479
2480 Force left-to-right evaluation of binary operations etc.
2481 * expr.c (force_evaluation_order), java-tree.h: New function.
2482 * parse.y (java_complete_lhs): Pass binary operations, procedure
2483 calls, and ARRAY_REFs to force_evaluation_order.
2484 (various): Set TREE_SIDE_EFFECTS more carefully.
2485
2486 Tolerate random (non-UTF8) encoding in comments without complaining.
2487 * lex.c (java_read_char): Return 0xFFFE if bad UTF8 encoding.
2488 (java_is_eol): Handle '\r' followed by '\n' instead of vice versa.
2489
2490 * parse.y (resolve_qualified_expression_name): Handle error_mark.
2491 (java_complete_node case EXPR_WITH_FILE_LOCATION): Likewise.
2492
2493 * parse.y (java_complete_lhs): Ignore an empty statement in a
2494 COMPOUND_EXPR. Don't complain about empty statement after return.
2495
04ed7a0c
PB
2496Fri Feb 19 13:00:56 1999 Per Bothner <bothner@cygnus.com>
2497
2498 * parse.y (obtain_incomplete_type): Don't wrap unknown types
2499 in TREE_LIST - just chain the POINTER_TYPEs together.
2500 (resolve_class): If type already resolved, return decl.
2501 After resolving, update TREE_TYPE(class_type), and name (if array).
2502 * parse.h (do_resolve_class), parse.y: Make non-static.
2503 * class.c (maybe_layout_super_class): Take this_class argument.
2504 Do do_resolve_class if necessary.
2505 (layout_class, layout_class_methods): Adjust calls appropriately.
2506 * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
2507 JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention.
2508 * typeck.c (build_java_array_type): Don't call layout_class.
2509
fad22e3b
APB
2510Wed Feb 17 15:47:20 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2511
2512 * parse.y (check_pkg_class_access): Allow private class access
2513 within the same package.
2514 (strip_out_static_field_access_decl): New function.
2515 (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
2516 operator argument before testing its nature.
2517
ececaeae
PB
2518Wed Feb 3 12:38:43 1999 Per Bothner <bothner@cygnus.com>
2519
2520 * java-tree.def (FINALLY_EXPR): Removed. (Now uses TRY_FINALLY_EXPR.)
2521 (TRY_EXPR): Simplify - it no longer has a finally clause.
2522 * check-init.c (check_init): Handle TRY_FINALLY_EXPR.
2523 Simpler handling of TRY_EXPR, which no longer has a finally clause.
2524 * expr.c (java_lang_expand_expr): Likewise.
2525 * java-tree.h (CATCH_EXPR_GET_EXPR): Removed - no longer needed.
2526 * parse.h (java_get_catch_block), parse.y: Removed - no longer needed.
2527 * parse.y (java_complete_lhs): Add support for TRY_FIANLLY_EXPR.
2528 (build_try_statement): Remove finally parameter and handling.
2529 (build_try_finally_statement): New function.
2530 (patch_try_statement): No longer need to support finally clause.
2531 (try_statement): Update grammar action rules.
2532 * jcf-write.c (generate_bytecode_insns): Handle TRY_FINALLY_EXPR.
2533 Simpler handling of TRY_EXPR, which no longer has a finally clause.
2534
43c5ec70
AH
25351998-11-26 Andrew Haley <aph@viagra.cygnus.co.uk>
2536
2537 * jcf-parse.c (get_constant): Add braces around computation of 'd'
2538 when REAL_ARITHMETIC is not defined. [Oct 26 fix got overwritten -PB]
2539
7e57923c
AH
25401999-02-17 Andrew Haley <aph@cygnus.com>
2541
2542 * class.c (build_utf8_ref): Back out broken patch which was
2543 intended to to output signatures using '.' as a separator.
2544
2545 * class.c (make_class_data): Output signatures using '.' as a
2546 separator, rather than '/'.
2547 (mangled_classname): Likewise.
2548 (make_field_value): Likewise.
2549 (make_method_value): Likewise.
2550 * constants.c (alloc_class_constant): Likewise.
2551 * expr.c (build_invokeinterface): Likewise.
2552
e3884b71
APB
2553Thu Feb 11 21:25:51 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2554
2555 * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
2556 of an ancient workaround.
2557
e860aea3
JL
2558Wed Feb 10 23:27:33 1999 Jeffrey A Law (law@cygnus.com)
2559
2560 * jvspec.c (xmalloc): Kill the prototype. It does not belong
2561 here anymore.
2562
fa2bb9fd
APB
25631999-02-10 Alexandre Petit-Bianco <apbianco@cygnus.com>
2564
2565 * lex.c (yylex): Encode \0 as UTF8.
2566
0ffe9eea
TT
25671999-02-10 Tom Tromey <tromey@cygnus.com>
2568
00368bdd
TT
2569 * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
2570 * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
2571 (libgcj_zip): Renamed.
2572 * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
2573 LIBJAVA_ZIP_FILE.
2574 (jcf_path_init): Use LIBGCJ_ZIP_FILE.
2575
0ffe9eea
TT
2576 * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
2577 (GC_NAME): Renamed -lgc to -lgcjgc.
2578
09ed0f70
APB
2579Tue Feb 9 19:31:09 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2580
2581 * lex.c (java_lang_cloneable): Initialize.
2582 * parse.y (java_lang_cloneable): New static variable.
2583 (qualify_ambiguous_name): Take CONVERT_EXPR into account when
2584 doing one more qualification round.
2585 (valid_ref_assignconv_cast_p): Reject null source or
2586 destination. Allow an array to be cast into java.lang.Cloneable.
2587 (patch_cast): Swapped two first arguments to first call to
2588 valid_ref_assignconv_cast_p.
2589
34f4db93
APB
2590Mon Feb 8 11:50:50 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2591
2592 * parse.h: DECL_P renamed JDECL_P.
2593 * parse.y: DECL_P replaced by JDECL_P.
2594 (build_array_from_name): Always use pointer's type.
2595 (patch_bc_statement): Extra code to search continue target in a
2596 for loop. Fixed comments. Continue target is current loop when
2597 unlabeled.
2598
93089423
AH
25991999-02-05 Andrew Haley <aph@cygnus.com>
2600
2601 * class.c (make_class_data): The superclass of an interface should
2602 be null, not class Object.
2603
2604 * lex.c (java_lex): Sign extend hex literals.
2605
954d8a5d
AH
26061999-02-04 Andrew Haley <aph@cygnus.com>
2607
2608 * class.c (build_utf8_ref): Output signatures using '.' as a
2609 separator, rather than '/'.
2610 (make_class_data): Likewise.
2611
3204fae4
ME
2612Wed Feb 3 22:50:17 1999 Marc Espie <Marc.Espie@liafa.jussieu.fr>
2613
2614 * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
2615 mkstemp.o. Get them from libiberty now.
2616
6d6dbe51
JL
2617Tue Feb 2 19:49:12 1999 Jeffrey A Law (law@cygnus.com)
2618
2619 * jcf-io.c: Do not include sys/stat.h or sys/wait.h
2620
b0f780c3
KG
2621Tue Feb 2 20:04:50 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2622
2623 * jvspec.c (xmalloc): Fix the prototype to match the one obtained
2624 from libiberty.h
2625
bb31662f
PB
2626Tue Feb 2 10:39:47 1999 Per Bothner <bothner@cygnus.com>
2627
2628 Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
2629 * jcf-write.c (generate_bytecode_return): New function.
2630 (generate_bytecode_insns): Use it, for RETURN_EXPR.
2631
2632 * jcf-write.c (generate_bytecode_insns): For REAL_CST that is 0 or 1,
2633 generate special [fd]const_[01] instructions.
2634
2635 * jcf-parse.c (yyparse): Don't emit_register_classes if -fsyntax-only.
2636
2637 * verify.c (verify_jvm_instructions): Do INVALIDATE_PC after
2638 handling OPCODE_lookupswitch or OPCODE_tableswitch.
2639
f044fba9
PB
2640Mon Feb 1 20:44:47 1999 Per Bothner <bothner@cygnus.com>
2641
2642 * parse.y (patch_method_invocation): Handle calling static methods,
2643 even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
2644
2645 * parse.y (java_complete_lhs): Don't complain about unreachable
2646 exit condition in a do-while statement.
acd663ee
APB
2647
2648Fri Jan 29 18:19:02 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2649
2650 * lex.c (java_read_char): Fixed utf8 decoding.
2651 (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
2652 range.
2653 * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
2654 comments. Local variable `all_primitive' is gone. Broadened
2655 acceptance of `0' to floating point targets. `long' can now be
2656 widened to `double' or `float'.
2657 (valid_method_invocation_conversion_p): Added leading
2658 comment. Fixed tabulation.
2659 (build_string_concatenation): Optimize out left or right empty
2660 string constants.
f044fba9 2661
36be4b99
PB
2662Thu Jan 28 18:51:26 1999 Per Bothner <bothner@cygnus.com>
2663
2664 * jcf-write.c (localvar_alloc): Only emit entry for
2665 LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
2666 (generate_bytecode_insns): Only call put_linenumber if
2667 debug_info_level > DINFO_LEVEL_NONE.
2668 * jvspec.c (lang_specific_driver): If no -O* or -g* option
2669 is specified, add -g1 (for compatibility wih javac).
2670
9594b1b2
HPN
2671Thu Jan 28 09:17:51 1999 Hans-Peter Nilsson <hp@axis.se>
2672
2673 * java/Makefile.in: Add missing dependencies for jcf-dump.o,
2674 gjavah.o, check-init.o, jv-scan.o
2675
9caaf519
KG
2676Mon Feb 1 09:50:48 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2677
2678 * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
2679
2680 * gjavah.c: Include config.h and system.h.
2681
2682 * javaop.h (inline): Don't define, its handled by system.h.
2683 (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
2684 from `inline' to `static inline'.
2685
2686 * jcf.h (inline): Don't define, its handled by system.h.
2687
2688 * lex.c (inline): Likewise.
2689
ba140e41
ZW
2690Sun Jan 31 20:34:29 1999 Zack Weinberg <zack@rabi.columbia.edu>
2691
2692 * lang-specs.h: Map -Qn to -fno-ident.
2693
4c7f1c63
RH
2694Fri Jan 29 16:51:56 1999 Richard Henderson <rth@cygnus.com>
2695
2696 * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
2697
061ac426
TT
26981999-01-29 Tom Tromey <tromey@cygnus.com>
2699
2700 * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
2701 then cast it to Object before calling `append' method.
2702
f2693f2f
PB
2703Thu Jan 28 14:45:39 1999 Per Bothner <bothner@cygnus.com>
2704
2705 * check-init.c (check_bool2_init, check_bool_init, check_init):
2706 Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
2707 * jcf-write.c (generate_bytecode_insns): Likewise.
2708
0b4d333e
APB
2709Thu Jan 28 11:50:11 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2710
2711 * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
2712 * parse.y (patch_cast): Allow a boolean to be cast into a
2713 boolean.
2714
2715Wed Jan 27 10:19:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2716
2717 * parse.y: (class_declaration:): Fixed indentation.
2718 (class_member_declaration:): Extra `;' after field declaration now
2719 accepted.
2720 (interface_declaration:): Removed debug messages in error reports.
2721 (patch_binop): Nodes created and returned inherit the orignal
2722 node's COMPOUND_ASSIGN_P flag value.
2723 (patch_cast): Fix cast from char to floating point.
2724
1b18747f
AH
2725Mon Jan 25 17:39:19 1999 Andrew Haley <aph@cygnus.com>
2726
2727 * except.c, java-except.h (expand_resume_after_catch): new
2728 function.
2729 * expr.c (java_lang_expand_expr): call expand_resume_after_catch
2730 to branch back to main flow of control after a catch block.
2731
d4476be2
KG
2732Sat Jan 23 23:02:43 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2733
2734 * Makefile.in (parse.o): Depend on $(CONFIG_H) and
2735 $(srcdir)/../system.h.
2736 (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
2737 (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
2738 (jcf-write.o): Likewise.
2739 (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
2740 (mangle.o): Depend on $(srcdir)/../toplev.h.
2741 (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
2742 (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
2743
2744 * class.c: Include output.h and parse.h.
2745 (mangled_classname): Add the `const' keyword to a char*.
2746 (find_named_method): Hide unused function definition.
2747 (build_utf8_ref): Change type of variable `c' to unsigned char.
2748 Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
2749 (build_class_ref): Add the `const' keyword to a char*.
2750 (layout_class_method): Remove unused variable `buf'.
2751
2752 * decl.c (find_local_variable): Remove unused variable `rtl'.
2753 (pushdecl): Likewise for variables `different_binding_level' and
2754 `oldglobal'.
2755 (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
2756 (maybe_build_cleanup): Likewise for parameter `decl'.
2757
2758 * except.c (expand_start_java_handler): Mark parameter `range'
2759 with ATTRIBUTE_UNUSED.
2760
2761 * expr.c: Include except.h.
2762 (pop_type): Remove unused variable `i'.
2763 (pop_value): Likewise for variables `n_words' and `i'.
2764 (expand_java_arrayload): Likewise for variable `convert'.
2765 (java_lang_expand_expr): Likewise for variables `op0', `type',
2766 `mode', `unsignedp', `node' and `elements'.
2767 (expand_byte_code): Likewise for variables `prev_eh_ranges' and
2768 `eh_ranges'.
2769 (process_jvm_instruction): Add a `const' qualifier to a char*.
2770
2771 * gjavah.c (output_directory): Add the `const' keyword to a char*.
2772 (temp_directory): Likewise.
2773 (print_c_decl): Likewise.
2774 (print_method_info): Likewise.
2775 (decode_signature_piece): Likewise.
2776 (print_mangled_classname): Likewise.
2777
2778 * java-except.h: Provide prototypes for maybe_start_try,
2779 maybe_end_try and add_handler.
2780
2781 * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
2782 (parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2.
2783 (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
2784 init_expr_processing, push_super_field, init_class_processing,
2785 can_widen_reference_to, class_depth, verify_jvm_instructions,
2786 maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
2787 set_local_type, merge_type_state, push_type, load_type_state,
2788 add_interface, find_in_current_zip, append_gpp_mangled_classtype,
2789 emit_unicode_mangled_name): Add prototypes.
2790
2791 * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
2792 (print_signature_type): Use ISDIGIT, not isdigit.
2793 (print_signature): Remove unused variable `j'.
2794
2795 * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
2796 int when comparing against one.
2797
2798 * jcf-parse.c: Include toplev.h.
2799
2800 * jcf-write.c: Likewise. Don't include <string.h> or <sys/stat.h>.
2801 (localvar_free): Remove unused variable `i'.
2802 (generate_bytecode_conditional): Likewise for variable `kind'.
2803
2804 * jv-scan.c: Include config.h and system.h. Remove redundant
2805 OS header and gansidecl.h includes.
2806 (warning): Add the `const' keyword to a char*. Also add
2807 ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not
2808 __STDC__, when determining whether to use ANSI-isms.
2809 (fatal): Likewise. Also add ATTRIBUTE_UNUSED.
2810 (xmalloc): Don't redundantly prototype here.
2811 (main): Remove unused parameter `envp'. Also fix the arguments
2812 passed to function `fatal' to match the format specifier.
2813
2814 * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
2815
2816 * mangle.c: Include toplev.h.
2817 (emit_unicode_mangled_name): Declare parameter `len'.
2818
2819 * parse.y (parse_warning_context): Add the `const' keyword to a
2820 char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check
2821 `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
2822 (issue_warning_error_from_context): Add the `const' keyword to
2823 a char*.
2824 (parse_error_context): Likewise. Also check `ANSI_PROTOTYPES'
2825 not `__STDC__' for whether to use ANSI-isms.
2826
2827 * typeck.c (incomplete_type_error): Mark parameters `value' and
2828 `type' with ATTRIBUTE_UNUSED.
2829 (parse_signature_type): Use ISDIGIT, not isdigit.
2830
2831 * verify.c (check_pending_block): Add the `const' keyword to a char*.
2832 (verify_jvm_instructions): Likewise. Remove unused variables
2833 `field_name' and `default_val'.
2834
2835 * zextract.c: Include config.h and system.h. Remove redundant
2836 OS header includes.
2837
2838 * zipfile.h: Prototype `read_zip_archive'.
2839
fff02f07
AH
2840Thu Jan 21 16:00:06 1999 Andrew Haley <aph@cygnus.com>
2841
2842 * typeck.c (convert): Allow conversions to void type: some
2843 optimizations in gcc do this.
2844
2845Thu Jan 21 15:21:49 1999 Andrew Haley <aph@cygnus.com>
2846
2847 * typeck.c (convert_ieee_real_to_integer): New function.
2848 (convert): When not using fast-math and using hardware fp, convert
2849 an IEEE NaN to zero.
2850
73333a87
AH
28511999-01-18 Andrew Haley <aph@cygnus.com>
2852
2853 * parse.y (patch_binop): Do a type conversion from signed to
2854 unsigned and then back to signed when a ">>>" is found.
2855
d8fccff5
APB
2856Sun Jan 17 22:34:22 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2857
2858 * java-tree.h: (check_for_initialization): Added prototype.
2859 * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
2860 * parse.y (do_resolve_class): Removed unused locals.
2861 (read_import_dir): Likewise.
2862 (resolve_qualified_expression_name): Array creation
2863 expressions are valid primary expressions.
2864 (qualify_ambiguous_name): Likewise.
2865 (patch_synchronized_statement): Removed unused local.
2866
82770562
JL
2867Sun Jan 17 21:55:42 1999 Jeffrey A Law (law@cygnus.com)
2868
ef2b940d
JL
2869 * Makefile.in (zextract.o): Add dependencies.
2870
82770562
JL
2871 * Makefile.in: Do not put ^Ls at the start of a line.
2872
2a4dc31b
PB
2873Fri Jan 15 20:16:20 1999 Per Bothner <bothner@cygnus.com>
2874
2875 * expr.c (process_jvm_instruction): Coerce to correct Throwable
2876 sub-type the result of the call that gets the exception value.
2877
2878 * parse.y (java_complete_expand_methods): If flags_syntax_only,
2879 don't call finish_class.
2880
2881 * parse.y (java_check_regular_methods): If METHOD_PRIVATE,
2882 clear found before continuing.
2883
2884 * verify.c (verify_jvm_instructions): On an array load, allow
2885 and handle top of stack to be TYPE_NULL.
2886
2887 * gjavah.c (generate_access): Translate Java package private or
2888 protected access to C++ public, but with a comment.
2889
96847892
AH
28901999-01-13 Andrew Haley <aph@cygnus.com>
2891
2892 * expr.c (generate_name): Name prefix changed to avoid clashes
2893 with assembler temp labels.
2894
2895 * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
2896 MODIFY_EXPR. Without this, code for the assignement may not be
2897 generated at all and the synchronized statement will read an
2898 uninitialized variable.
2899
ba179f9f
APB
2900Wed Jan 13 01:24:54 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
2901
2902 * class.c (maybe_layout_super_class): Fixed returned value.
2903 * lex.c: Added 1999 to the copyright.
2904 (java_init_lex): Initialize java_lang_imported.
2905 * lex.h: Added 1999 to the copyright.
2906 * parse.h: Added 1999 to the copyright.
2907 (REGISTER_IMPORT): Fixed typo in trailing macro.
2908 (CURRENT_OSB): New macro.
2909 (struct parser_ctxt): New fields osb_depth, osb_limit.
2910 * parse.y (java_lang_id): New global variable.
2911 (type_import_on_demand_declaration): Don't import java.lang.* twice.
2912 (array_creation_expression:): Use CURRENT_OSB.
2913 (dims:): Uses a stack to keep track of array dimensions.
2914 (cast_expression:): Use CURRENT_OSB.
2915 (find_expr_with_wfl): Return NULL if node found doesn't meet the
2916 conditions.
2917 (register_fields): Fixed typos in comment.
2918 (check_method_redefinition): Fixed comment indentation.
2919 (java_check_regular_methods): Set saved found wfl to NULL after
2920 having reinstalled it in the previously found DECL_NAME.
2921
b6186fe6
RH
2922Sun Jan 10 13:36:14 1999 Richard Henderson <rth@cygnus.com>
2923
2924 * gjavah.c (java_float_finite): Use a union to do type punning.
2925 (java_double_finite): Likewise.
2926
fe053cfc
PB
2927Sat Jan 9 11:25:00 1999 Per Bothner <bothner@cygnus.com>
2928
2929 * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL
2930 on CONSTRUCTOR (since that trashes TREE_CST_RTL).
2931 (patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF.
2932 (register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on
2933 CONSTRUCTOR (which causes expand_expr to call output_constant_def).
2934 * expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT.
2935
b82daa87
PB
2936Fri Jan 8 15:48:03 1999 Per Bothner <bothner@cygnus.com>
2937
2938 * check-init.c (check_init): If compiling to native, we don't
2939 see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw).
2940
5c280133
TT
29411999-01-08 Tom Tromey <tromey@cygnus.com>
2942
2943 * parse-scan.y (variable_declarator_id): Set or increment
2944 bracket_count.
2945 (bracket_count): New global.
2946 (formal_parameter): Handle case where bracket pairs trail variable
2947 declarator id.
2948
5e1db167
AH
29491999-01-07 Andrew Haley <aph@viagra.cygnus.co.uk>
2950
2951 * jcf-parse.c (yyparse): variable len changed from a char to an
2952 int to prevent overflow.
2953
db84cc46
PB
2954Wed Jan 6 17:19:46 1999 Per Bothner <bothner@cygnus.com>
2955
2956 * java-tree.h: Declare read_class.
2957 * jcf-parse.c (read_class): New function.
2958 (load_class): Now just call read_class.
2959
2960 * java-tree.h (java_parse_abort_on_error): Only return if new errors.
2961 * jcf-parse.c (parse_source_file): Declare save_error_count,
2962 which is needed by java_parse_abort_on_error macro,
2963 * parse.y (java_layout_classes, java_expand_classes): Likewise.
2964
2965 * parse.y (register_fields): Set TREE_STATIC flag of NEW_ARRAY_INIT
2966 constructor, if initializing a static field.
2967 (patch_new_array_init): Set TREE_CONSTANT if it is.
2968 * expr.c (java_lang_expand_expr): For a static array constructor
2969 of primitive elements, allocate the array itself statically.
2970 Disabled until we can set the vtable field statically.
2971
2972 * check-init.c: New file. Checks for definite assignment.
2973 * Makefile.in (JAVA_OBJS): Add check-init.o.
2974 * parse.y (java_complete_expand_method): Call check_for_initialization.
2975 * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY): Moved to java-tree.h.
2976
8c4ea1fd
GS
2977Wed Jan 6 14:53:10 1999 Graham <grahams@rcp.co.uk>
2978
2979 * parse.y : include system.h instead of including
2980 standard headers directly with the exception of <dirent.h>.
2981
0d34ccb7
PB
2982Wed Jan 6 16:20:06 1999 Per Bothner <bothner@cygnus.com>
2983
2984 * lex.h: Moved static function declarations to lex.c,
2985 to shut up some -Wall warnings.
2986 * lex.c: Static function declarations moved here.
2987 * jcf-dump.c: Small fixes to shut up -Wall warnings.
2988
5b5d821c
KG
2989Tue Jan 5 22:15:40 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2990
2991 * Make-lang.in ($(GCJ).o): Depend on prefix.h.
2992
e402ca98
PB
2993Tue Dec 22 11:25:19 1998 Per Bothner <bothner@cygnus.com>
2994
2995 * expr.c (process_jvm_instruction): Do load_type_state after JSR.
2996 * verify.c (verify_jvm_instructions): Fix off-by-one error.
2997
2998 * jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings.
2999 (localvar_alloc): Change return type to void,
3000 (emit_unop): Remove unused variable size.
3001
3002 * jcf-write.c (struct jcf_block): Add new union.
3003 (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros.
3004 (call_cleanups): New functions.
3005 (struct jcf_partial): New fields num_finalizers and return_value_decl.
3006 (generate_bytecode_insns): Support CLEANUP_POINT_EXPR and
3007 WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
3008 * lang.c (lang_init): Call using_eh_for_cleanups.
3009 * parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer
3010 completing operands to patch_synchronized_statement.
3011 Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
3012 (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
3013 WITH_CLEANUP_EXPR instead of TRY_EXPR.
3014
62481348
JC
3015Sun Dec 20 16:15:44 1998 John F. Carr <jfc@mit.edu>
3016
3017 * Make-lang.in: Comment out control-Ls; they upset some makes.
3018
847fe791
TT
30191998-12-18 Tom Tromey <tromey@cygnus.com>
3020
3021 * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
3022 consistently.
3023
d5ff227d
TT
30241998-12-17 Tom Tromey <tromey@cygnus.com>
3025
fa322ab5
TT
3026 * parse.y (DIR_SEPARATOR): New define.
3027 (check_class_interface_creation): Use it.
3028
d5ff227d
TT
3029 * parse-scan.y (report_main_declaration): Recognize
3030 `java.lang.String' in argument to main.
3031
83a86272
PB
3032Wed Dec 16 16:18:59 1998 Per Bothner <bothner@cygnus.com>
3033
3034 * parse.y (create_interface): Remove bogus test.
3035
f868ca8f
PB
3036Wed Dec 16 14:42:19 1998 Per Bothner <bothner@cygnus.com>
3037
3038 * jcf-parse.c (get_constant): Set TREE_TYPE for string constants.
3039 (HANDLE_CONSTANTVALUE): If flag_emit_class_files, call get_constant.
3040
0252081c
TT
30411998-12-16 Tom Tromey <tromey@cygnus.com>
3042
3043 * parse-scan.y (qualified_name): Use correct sprintf format.
3044
06d84d69
TT
30451998-12-15 Tom Tromey <tromey@cygnus.com>
3046
3047 * gjavah.c (print_field_info): Changed how most negative number is
3048 printed.
3049
659ad450
PB
3050Mon Dec 14 18:49:29 1998 Per Bothner <bothner@cygnus.com>
3051
3052 * parse.y (fold_constant_for_init): New function.
3053 (resolve_expression_name): Don't replace static final
3054 constant-initialized fields by its value.
3055 (java_complete_lhs): New. Same as java_complete_tree, except does
3056 not replace static final constant-initialized fields by their values.
3057 (register_fields): If there is an initializer, set DECL_INITIAL and
3058 MODIFY_EXPR_FROM_INITIALIZATION_P.
3059 (java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs.
3060 Only call patch_initialized_static_field if
3061 MODIFY_EXPR_FROM_INITIALIZATION_P.
3062 (patch_initialized_static_field): If not valid constant, clear
3063 DECL_INITIAL.
3064
3065 * parse.y (lookup_field_wrapper): Fix thinko.
3066
3067 * parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION,
3068 set and restore global lineno.
3069
11b89622
TT
30701998-12-14 Tom Tromey <tromey@cygnus.com>
3071
3072 * gjavah.c (print_field_info): If value to print is the smallest
3073 value of its size, then print as hex to avoid later warnings from
3074 C++ compiler.
3075
8c2dfb32
TT
30761998-12-14 Tom Tromey <tromey@cygnus.com>
3077
3078 * gjavah.c (decompile_method): Decompile `return null'.
3079 (process_file): Generate `#pragma interface'.
3080 (method_declared): New global.
3081 (print_method_info): Set it.
3082 (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
3083 (print_method_info): Handle abstract methods.
3084
ba02c53a
PB
3085Sun Dec 13 17:31:40 1998 Per Bothner <bothner@cygnus.com>
3086
3087 * parse.y (patch_method_invocation): If class_decl is null
3088 (e.g. an array type), use original type.
3089
3090 * parse.y (check_thrown_exceptions): Temporary hack to suppress
3091 errors about uncaught exception from clone (of array, specifically).
3092
cb975f38
TT
30931998-12-13 Tom Tromey <tromey@cygnus.com>
3094
3095 * gjavah.c (decompile_method): Handle all types of `return'
3096 opcode. Decompile `return this' and `return'.
3097 (method_access): New global.
3098 (print_method_info): Set it.
3099 (decompile_method): Don't decompile a synchronized method.
3100
92c068d1
TT
31011998-12-13 Tom Tromey <tromey@cygnus.com>
3102
3103 * jcf-reader.c (jcf_parse_one_method): Recognize
3104 HANDLE_END_METHOD.
3105 * gjavah.c (HANDLE_END_METHOD): New macro.
3106 (HANDLE_CODE_ATTRIBUTE): New macro.
3107 (decompile_method): New function.
3108 (print_method_info): Don't print `;\n' at end of function decl.
3109 Include java-opcodes.h.
3110 (decompiled): New global.
3111
0b245181
PB
3112Sat Dec 12 20:13:19 1998 Per Bothner <bothner@cygnus.com>
3113
3114 * class.c (build_class_ref): Handle PRIMTYPE.class if
3115 flag_emit_class_files.
3116 * expr.c (expand_java_field_op): Don't optimize java.lang.XXX.TYPE
3117 if flag_emit_class_files.
3118 * parse.y (java_complete_tree): Pre-liminary support for
3119 COMPONENT_REF - only to handle PRIMCLASS.TYPE.
3120
3121 * parse.y (patch_synchronized_statement): Don't call monitorexit
3122 unless block CAN_COMPLETE_NORMALLY. Propagate that flag properly.
3123
3124 * java-tree.h (DECL_LOCAL_STATIC_VALUE): Removed - no longer used.
3125
3126 * zipfile.h (opendir_in_zip): New declaration.
3127 * jcf-io.c (saw_java_source): Moved to jcf-parse.c.
3128 (opendir_in_zip): New function, using code from open_in_zip.
3129 (open_in_zip): Call opendir_in_zip.
3130 (find_class): Remove no-longer-used do_class_file parameter,
3131 but add source_ok parameter. Change logic so if we find a .java file,
3132 we don't look for .class in later classpath emtries.
3133 * jcf-parse.c (load_class): Pass saw_java_source to find_class.
3134 (jcf_figure_file_type): Only call open_in_zip if correct magic number.
3135 * gjavah.c: Update call to find_class.
3136 * jcf-dump.c: Likewise.
3137
3138 * jcf-write.c (put_linenumber): Handle duplicate line numbers.
3139 (generate_bytecode_insns): For EXPR_WITH_FILE_LOCATION, do
3140 nothing if body is empty_stmt_node.
3141 Various little fixes so SP gets correctly adjusted.
3142 For NEW_ARRAY_INIT, handle IGNORE_TARGET.
3143 For CALL_EXPR, test if static first.
3144 (generate_classfile): Ignore fields that are DECL_ARTIFICIAL,
3145 such as the ones we create for Object and Class.
3146 Set and restore current_function_decl.
3147 * parse.y: Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
3148 (note_possible_classname): New function.
3149 (read_import_entry): Removed. Merged with read_import_dir.
3150 (read_import_dir): Don't call find_class - that only gives us
3151 the first classpath entry having the needed package.
3152 Use the struct buffer data structure from buffer.h.
3153 (read_import_dir, find_in_imports_on_demand): The remembered
3154 class names now use '.' (not '/') as package separator.
3155
3156 * parse.y (java_complete_expand_methods): Call write_classfile
3157 here, and not in java_expand_classes (which only gets first class).
3158
9dd939b2 3159Sat Dec 12 19:46:04 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
1287b91a
APB
3160
3161 * parse.y (<type_declaration>): Do maybe_generate_clinit last.
3162 (register_fields): If a static fields has an initializer, just
3163 chain it on ctxp->static_initialized, and handle later.
3164 (java_complete_expand_methods): Force <clinit> first.
3165 (resolve_expression_name, resolve_field_access): Just get DECL_INITIAL
3166 - it's already been completed.
3167 (patch_initialized_static_field): New function.
3168 (java_complete_field): Call it.
3169
05f9acdc
PB
3170Sat Dec 12 19:21:11 1998 Per Bothner <bothner@cygnus.com>
3171
3172 * expr.c (encode_newarray_type, build_new_array): New functions.
3173 * java-tree.h: Declare build_new_array.
3174 * jcf-write.c (patch_newarray): Use build_new_array.
3175
3176 * expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT.
3177 * jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT.
3178
3179 * parse.y (patch_new_array_init): Re-organize.
3180 Now is passed the actual array (pointer) type of the value.
3181 Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
3182 (patch_array_constructor): Removed - merged into patch_new_array_init.
3183 (java_complete_tree): Update patch_new_array_init.
3184
3185 * jcf-write.c (find_constant_index): New function.
3186 (generate_bytecode_insns): Use find_constant_index.
3187 (generate_classfile): Use find_constant_index for ConstantValue.
3188
78857b4e
TT
31891998-12-11 Tom Tromey <tromey@cygnus.com>
3190
3191 * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
3192 * decl.c (init_decl_processing): Renamed dtable -> vtable.
3193 * class.c (make_class_data): Renamed dtable -> vtable, and
3194 dtable_method_count -> vtable_method_count.
3195
9dd939b2 3196Thu Dec 10 20:00:54 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4a5f66c3
APB
3197
3198 * decl.c (long_zero_node, float_zero_node, double_zero_node): New
3199 global variables, initialized.
3200 * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
3201 Declared new global variables.
3202 * lex.c (java_lex): Return long_zero_node, float_zero_node,
3203 double_zero_node, integer_zero_node upon direct matching.
3204 * parse.y (purify_type_name): Added function prototype.
3205 (duplicate_declaration_error_p): Consider new_type as potentially
3206 being a incomplete type. Use purify_type_name on type string.
3207 (method_header): saved_type: unused variable removed. Don't figure
3208 return type if method name is invalid.
3209 (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
3210 processed by patch_unaryop.
3211 (patch_unaryop): Fixed typo in comment. Re-convert pre/post
3212 increment/decrement node into its original type after binary
3213 numeric promotion on its operands.
3214
1179ebc2
APB
3215Thu Dec 10 11:02:49 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3216
3217 * parse.y (array_initializer:): Array init operand is NULL_TREE
3218 instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
3219 now an error. Fixed indentation problems.
3220 (patch_string): Handle error_mark_node as an argument.
3221 (patch_new_array_init): Fixed indentation problems.
3222 (array_constructor_check_entry): Removed check on null wfl_value.
3223 Return an error if wfl_value's walk returns an error.
3224
f8976021
APB
3225Wed Dec 9 15:37:05 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3226
3227 * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
3228 * lex.c (java_lex): Remember column position before advancing one
3229 token. Retain location information on OCB_TK.
3230 * lex.h (typedef struct java_lc): Added new field.
3231 * parse.h (GET_SKIP_TYPE): New macro.
3232 (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
3233 * parse.y (build_new_array_init, patch_new_array_init,
3234 patch_array_constructor, maybe_build_array_element_wfl,
3235 array_constructor_check_entry): New function prototypes.
3236 (switch_block:): Tagged <node>.
3237 (OCB_TK): Tagged <operator>.
3238 (array_initializer:): Installed actions.
3239 (variable_initializer): Build location information on element if
3240 necessary.
3241 (switch_statement:): Fixed indentation typo.
3242 (switch_block:): Redefined default action.
3243 (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
3244 (patch_assignment): Removed duplicate code.
3245 (maybe_build_array_element_wfl, build_new_array_init,
3246 patch_new_array_init, patch_array_constructor,
3247 array_constructor_check_entry): New functions.
3248
ac825856
APB
3249Mon Dec 7 15:13:52 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3250
3251 * parse.y (array_initializer): Tagged <node>.
3252 (variable_initializer:): Use default rule.
3253 (array_initializer:): Defined actions.
3254 (variable_initializers:): Likewise.
3255 (resolve_qualified_expression_name): Use DECL_CONTEXT to build
3256 non-static field accesses.
3257 (patch_invoke): Fixed indentation typo.
3258 (java_complete_tree): Likewise.
3259 (build_labeled_block): Changed leading comment. Generate an error
3260 in case of duplicate loop labels.
3261 (patch_conditional_expr): Patch results of string concatenation
3262 operations.
3263
2dfaf550
PB
3264Sun Dec 6 13:45:00 1998 Per Bothner <bothner@cygnus.com>
3265
3266 * constants.c (find_methodref_index): When the class is an interface,
3267 generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
3268
3269 * decl.c (finit_identifier_node): Use "$finit$", rather than
3270 "<finit>" (which Sun's verifier rejects).
3271 * parse.y (maybe_generate_finit): Leave out meaningless final flag.
3272 (generate_field_initialization_code): Removed.
3273 (fix_constructors) Don't add call to $finit$ here (wrong order).
3274 (patch_method_invocation): Add $finit$ call here.
3275
3276 * java-tree.h (CALL_USING_SUPER): New macro.
3277 * parse.y (patch_invoke): Remove im local variable.
3278 (patch_method_invocation, patch_invoke): Don't pass super parameter.
3279 (patch_invoke): Use CALL_USING_SUPER instead of from_super parameter.
3280 (resolve_qualified_expression_name): Maybe set CALL_USING_SUPER.
3281
3282 * jcf-write.c (get_access_flags): Fix typo ACC_PUBLIC -> ACC_FINAL.
3283
3284 * parse.y (java_complete_tree): Don't complain about unreachable
3285 statement if it is empty_stmt_node.
3286
3287 * jcf-write.c (find_constant_wide): New function.
3288 (push_long_const): Use find_constant_wide.
3289
3290 * jcf-write.c (generate_bytecode_insn): Fix bug in switch handling.
3291 (generate_bytecode_insn): Use correct dup variant for MODIFY_EXPR.
3292 Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
3293 Emit invokeinterface when calling an interface method.
3294 Emit invokespecial also when calling super or private methods.
3295
3296 * jcf-write.c (generate_classfile): Emit ConstantValue attributes.
3297
0f0d3319
PB
3298Sun Dec 6 13:21:18 1998 Per Bothner <bothner@cygnus.com>
3299
3300 * jcf-dump.c (INVOKE): If invokeinterface, print number of args.
3301
1886c9d8
APB
3302Thu Dec 3 17:11:12 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3303
3304 * java-tree.h (java_layout_seen_class_methods): New function
3305 prototype.
3306 (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
3307 * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
3308 * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
3309 * parse.y (method_declarator:): Defined action.
3310 (issue_warning_error_from_context): input_filename saved, set to
3311 the appropriate value and restored after java_error is called.
3312 (build_unresolved_array_type): Fixed comment.
3313 (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
3314 (method_header): Deal with return type the same way type are
3315 handled for fields and method's parameters and local variables
3316 types are handled.
3317 (check_method_redefinition): Removed extra CR.
3318 (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
3319 (java_layout_seen_class_methods): New function.
3320 (java_layout_classes): Call java_layout_seen_class_methods.
3321
52e01aa6
PB
3322Thu Dec 3 15:56:50 1998 Per Bothner <bothner@cygnus.com>
3323
3324 * parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY.
3325
66af84e4
PB
3326Thu Dec 3 15:08:30 1998 Per Bothner <bothner@cygnus.com>
3327
3328 * jcf-dump.c (main): Fix error message.
3329 * jcf-path.c (add_entry): Style fix.
3330
c3f2a476
APB
3331Wed Dec 2 15:52:25 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3332
3333 * class.c (layout_class_method): Call build_java_argument_signature
3334 on constructors too.
3335 * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
3336 (patch_method_invocation): Define a primary when resolving an
3337 expression name. Augmented comment on code checking illegal `this'
3338 usage. Loosened it test by accepting NEW_CLASS_EXPR.
3339
82371d41
APB
3340Tue Dec 1 13:53:24 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3341
3342 * class.c (layout_class_method): Don't report error on non-static
3343 overriding static if the method is private.
3344 * java-tree.h (finish_class): Prototype added.
3345 * lex.c (java_get_line_col): Handle col argument -2 value.
3346 * parse.h: All static method declarations moved to parse.y.
3347 * parse.y: Now contains all static method declarations previously
3348 found in parse.h.
3349 (find_expr_with_wfl, missing_return_error,
3350 unreachable_stmt_error): New functions.
3351 (java_get_real_method_name): Identify constructors bearing class
3352 names in source code compiled classes only.
3353 (java_complete_expand_methods): Call missing_return_error.
3354 (invocation_mode): Private methods invoked as static methods.
3355 (java_complete_tree): Call unreachable_stmt_error.
3356
de80f416
TT
33571998-12-01 Tom Tromey <tromey@cygnus.com>
3358
3359 * Makefile.in (+target): Removed.
3360 (+xmake_file): Likewise.
3361 (+tmake_file): Likewise.
3362 (.NOEXPORT): Removed duplicate.
3363
45254bf6
KG
3364Fri Nov 27 13:20:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3365
3366 * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
3367
3368 * jv-scan.c: Fix xmalloc prototype. Provide an xmalloc definition.
3369
3370 * jvgenmain.c: Remove the xmalloc prototype, we get it from
3371 libiberty.h. Provide an xmalloc definition.
3372
3373 * jvspec.c: Remove the xmalloc prototype.
3374
3375 * parse-scan.y: Include config.h and system.h. Don't include
3376 OS headers or gansidecl.h. Don't prototype xmalloc/xstrdup.
3377 Provide an xstrdup definition.
3378
ceff9b14 3379Thu Nov 26 22:03:58 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
076b41ee 3380
ceff9b14
AO
3381 * jcf-path.c (add_entry): Recognize ".jar" too.
3382 * lang-specs.h: Likewise.
076b41ee 3383
c5941a9f
PB
3384Thu Nov 26 12:44:07 1998 Per Bothner <bothner@cygnus.com>
3385
3386 * jcf-write.c (generate_bytecode_insns): In Call_EXPR, handle
3387 soft_monitorenter_node, soft_monitorexit_node, throw_node.
3388
3389 * jcf-write.c (generate_bytecode_insns):
3390 Handle pre/post-increment/decrement of long.
3391
3392 * jcf-write.c (generate_bytecode_insns):
3393 Handle missing exception handler (finally for synchronized).
3394
00abfc00
PB
3395Wed Nov 25 09:47:15 1998 Per Bothner <bothner@cygnus.com>
3396
df8940cf
PB
3397 * java-tree.h (end_params_node): Declare global.
3398 * decl.c (end_params_node): New global.
3399 (init_decl_processing, start_java_method): Use end_params_node for
3400 end of list of parameter types. Follows correct gcc conventions.
3401 * expr.c (pop_argument_types, pop_arguments): Likewise.
3402 * lang.c (put_decl_node): Likewise.
3403 * typeck.c (various places): Likewise.
3404 * class.y (various places): Likewise.
3405 * parse.y (various places): Likewise.
3406
3407 * parse.y (java_complete_tree): Move CAN_COMPLETE_NORMALLY.
3408 (build_jump_to_finally): Add missing CAN_COMPLETE_NORMALLY.
3409
3410 * class.c: Add #include flags.h, remove no-longer needed declaration.
3411
3412 * class.c (layout_class_method): Remove commented-out code, re-format.
3413 Don't add vtable entry (or index) for private methods.
3414 * expr.c (expand_invoke): A private method is implicitly final.
3415 * class.c (make_class_data): If inlining or optimizing,
3416 skip private methods.
3417
3418 * class.c (finish_class): New function. Calls existing methods,
3419 but alls emits deferred inline functions.
3420 * jcf-parse.c (parse_class_file): Call finish_class.
3421 * parse.y (java_complete_expand_methods): Likewise.
3422
3423 * expr.c (build_java_binop): Explicit default, to silence -Wall.
3424
00abfc00
PB
3425 * expr.c (CHECK_PC_IN_RANGE): Add void cast to kill warnings.
3426
de7b168e
ME
3427Wed Nov 25 00:50:58 1998 Marc Espie <espie@quatramaran.ens.fr>
3428
3429 * jcf-write.c (generate_bytecode_conditional): Fix typo.
3430
23a79c61
APB
3431Tue Nov 24 17:06:38 1998 Per Bothner <bothner@cygnus.com>
3432
3433 * (generate_classfile): Always write class access flag with
3434 ACC_SUPER set.
3435
3436Tue Nov 24 16:34:33 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3437
3438 * class.c (maybe_layout_super_class): New function.
3439 (layout_class): Reorganized. Loop on class methods dispatched into
3440 a new function. Call maybe_layout_super_class.
3441 (layout_class_methods, layout_class_method): New functions.
3442 * expr.c (expand_java_NEW): Call layout_class_methods on loaded
3443 class.
3444 (expand_invoke): Likewise.
3445 * java-tree.h (all_class_list): New global variable declared.
3446 (layout_class_methods, layout_class_method): New function
3447 prototypes.
3448 (LAYOUT_SEEN_CLASS_METHODS): New macro.
3449 * jcf-parse.c (all_class_list): New global variable.
3450 (load_class): Extended what class_or_name can be. Use parser
3451 context mechanism to save globals before calling jcf_parse.
3452 (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
3453 is set on the file name.
3454 (jcf_parse): Layout class methods when Object is loaded, otherwise
3455 record class in all_class_list for delayed method layout.
3456 (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
3457 * lang.c (put_decl_node): Decode <init> into the decl context
3458 class name.
3459 * lex.c (java_allocate_new_line): Use xmalloc.
3460 * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
3461 pointers, not TREE_LIST elements.
3462 (struct parser_ctxt): Fixed comment indentations, added comments
3463 and reordered some fields.
3464 (java_check_methods): Function prototype removed.
3465 * parse.y (java_push_parser_context): Use xmalloc.
3466 (java_parser_context_restore_global): Pop extra pushed ctxp only
3467 when there's nothing next.
3468 (maybe_create_class_interface_decl): Fixed comment, add new
3469 created class decl to all_class_list.
3470 (method_header): Use GET_REAL_TYPE on argument's types.
3471 (method_declarator): Use GET_REAL_TYPE, change type to the real
3472 type in TREE_LIST dependency node. Build argument list with the
3473 real type.
3474 (create_jdep_list): Use xmalloc. Removed allocation error message.
3475 (obtain_incomplete_type): Fixed leading comment. Broadened
3476 incoming argument meaning.
3477 (register_incomplete_type): Use xmalloc. Removed allocation error
3478 message.
3479 (safe_layout_class): Fixed leading comment.
3480 (jdep_resolve_class): Reversed if statement condition and switch
3481 if and else bodies.
3482 (resolve_and_layout): Fixed leading comment. Broadened incoming
3483 argument meaning.
3484 (complete_class_report_errors): New local variable name, for
3485 clarity. purify_type_name used for all error cases.
3486 (java_get_real_method_name): Stricter check on constructors.
3487 (java_check_regular_methods): Reverse methods list only if not
3488 already laid out. Layout artificial constructor.
3489 (java_check_methods): Deleted.
3490 (source_start_java_method): Obtain incomplete type for patchable
3491 method arguments.
3492 (java_layout_classes): Fixed leading comment. Use
3493 LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
3494 statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
3495 before returning. Fixed comments.
3496 (java_expand_classes): Check for errors up front.
3497 (patch_method_invocation): Class to search is resolved and laid
3498 out.
3499
818347b4
PB
3500Tue Nov 24 12:57:13 1998 Per Bothner <bothner@cygnus.com>
3501
3502 * expr.c (java_lang_expand_expr): Add missing emit_queue.
3503
3504 * javaop.h (int8): Removed - not used.
3505 (jbyte): Redefine portably with correct signedness.
3506
3507 * jcf-write.c (generate_bytecode_insns): Don't free sw_state.cases.
3508
3509 * jcf-write.c (generate_bytecode_insns): Fix typo
3510 OPCODE_getstatic to OPCODE_getfield.
3511
3512 * java-tree.def (CASE_EXPR, DEFAULT_EXPR): Kind is 'x', not '1'.
3513 * parse.y (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR,
3514 set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
3515
1c7f3673
APB
3516Thu Nov 19 11:16:55 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3517
3518 * jcf-parse.c (jcf_parse_source): Function returned type is
3519 void. Added prototype.
3520 (jcf_parse): Function returned type is void.
3521 (yyparse): Remove call to fclose on the last parsed file.
3522
3523 * java-tree.h (jcf_parse): Changed jcf_parse prototype.
3524
c877974e
APB
3525Wed Nov 18 23:54:53 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3526
3527 * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
3528 (layout_class): Cope with methods featuring WFL in decl names.
3529 * decl.c (unqualified_object_id_node): New global variable,
3530 initialized.
3531 (build_decl_no_layout): Removed.
3532 * expr.c (build_primtype_type_ref): Handle Double.
3533 (java_lang_expand_expr): Fixed indentations.
3534 * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
3535 (flag_wall, flag_redundant, flag_not_overriding,
3536 flag_static_local_jdk1_1, unqualified_object_id_node): Global
3537 variable declarations.
3538 (build_decl_no_layout): Removed prototype.
3539 (java_get_real_method_name): Added prototype.
3540 (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
3541 (java_parse_abort_on_error): Macro now just returns.
3542 * jcf-parse.c (jcf_parse_source): Check fclose returned
3543 value. Call emit_register_classes if java_report_errors returns
3544 zero.
3545 * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
3546 flag_static_local_jdk1_1): New integer flags.
3547 (lang_decode_option): New flags set here.
3548 * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
3549 (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
3550 the flag_redundant variable.
3551 (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
3552 when parsing java.lang.Object class.
3553 (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
3554 NULL_TREE to build.
3555 (resolve_qualified_expression_name): Fixed indentation.
3556 (patch_array_ref): Changed prototype.
3557 (not_initialized_as_it_should_p): Prototype removed.
3558 (java_report_errors): Added function prototype.
3559 * parse.y (formal_parameter:): Changed error message for not yet
3560 supported final parameters.
3561 (class_type_list:): Set both PURPOSE and VALUE of created
3562 TREE_LIST to be class_type.
3563 (primary_no_new_array:): Handle class literals on primitive types.
3564 (parse_warning_context): Reinstalled correct force_error and
3565 do_warning flags setups.
3566 (java_report_errors): Changed prototype. Return java_error_count
3567 value.
3568 (variable_redefinition_error): Consider treating variable type as
3569 a fake pointer.
3570 (create_interface): Warn about redundant abstract modifier if
3571 flag_redundant is set. Changed error message.
3572 (lookup_field_wrapper): Save/restore globals before/after looking
3573 up field.
3574 (duplicate_declaration_error_p): Consider treating declaration
3575 type as a fake pointer.
3576 (register_fields): Extract real type from dependency node. Check
3577 for duplicate field declaration after type adjustment. Use
3578 DECL_INITIAL to store static final initialized values.
3579 (method_header): Extract real function type from dependency node.
3580 (check_abstract_method_header): Use GET_METHOD_NAME.
3581 (obtain_incomplete_type): Layout fake pointer type.
3582 (safe_layout_class): Don't try to check for methods before layout.
3583 (java_complete_class): Don't check for correct throws clause
3584 elements inheritance here.
3585 (resolve_and_layout): Broadened name parameter meaning.
3586 (reset_method_name): Use GET_METHOD_NAME.
3587 (java_get_real_method_name): New function.
3588 (java_check_regular_methods): Don't check methods in
3589 java.lang.Object. Verify lineage of throws clause elements. Use
3590 flag_no_overriding in warning report.
3591 (check_throws_clauses): Don't check if class was from
3592 bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
3593 (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
3594 (declare_local_variables): Use flag_static_local_jdk1_1 to report
3595 warning on unsupported final local variables. Use build_decl
3596 instead of build_decl_no_layout. Get real local variable type from
3597 dependency node.
3598 (source_start_java_method): Get real parameter type from
3599 dependency node. Call build_decl instead of build_decl_no_layout.
3600 (java_layout_classes): Reverse tree and layout type and class as
3601 required. Mark class as loaded when done.
3602 (resolve_field_access): Fixed indentation. Restricted condition
3603 leading to static field access code generation. Set field_type
3604 decl's TREE_TYPE if QUAL_DECL_TYPE not available.
3605 (resolve_qualified_expression_name): Initialize type_found to
3606 null. Handle static field resolved during qualification. Fixed
3607 layout on non primitive field decl types.
3608 (not_accessible_p): Fixed typo in comment.
3609 (patch_method_invocation): Resolve and layout class to search from
3610 type.
3611 (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
3612 layout non primitive type, if necessary. Make method node only to
3613 report errors.
3614 (find_applicable_accessible_methods_list): Consider WFL'ed method
3615 decl names. Fixed indentation.
3616 (argument_types_convertible): Resolve and layout target type if
3617 necessary.
3618 (java_complete_tree): Fixed indentation problems. Rewrote
3619 CALL_EXPR thrown exceptions check. Re-installed further processing
3620 of the assignment in certain cases.
3621 (patch_assignment): Call maybe_build_primttype_type_ref to perform
3622 inlining on class literals.
3623 (valid_builtin_assignconv_identity_widening_p): Cope with constant
3624 0 literal.
3625 (valid_method_invocation_conversion_p): Likewise.
3626 (patch_string): Temporary disable forbidden use of `this' in
3627 explicit constructor invocations when doing string concatenation
3628 within their scope.
3629 (patch_unaryop): Added comment. Reinstalled code to disable
3630 further check on assignment operation with cast expression RHS.
3631 (patch_switch_statement): Fixed indentation.
3632 (build_try_statement): Call build_decl instead of
3633 build_decl_no_layout.
3634 (patch_synchronized_statement): Likewise.
3635 (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
3636 IS_UNCHECKED_EXPRESSION_P.
3637 (check_thrown_exceptions_do): Changed leading comment. Resolve and
3638 layout argument exception type.
3639 (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
3640 of IS_UNCHECKED_EXPRESSION_P.
3641
1c7f3673
APB
3642Wed Nov 18 14:21:48 1998 Anthony Green <green@cygnus.com>
3643
3644 * jcf-parse.c (yyparse): Open class file in binary mode.
3645
411efd21
PB
3646Sun Nov 15 17:14:17 1998 Per Bothner <bothner@cygnus.com>
3647
3648 * jvgenmain.c: Need to #include "gansidecl.h" (to get PROTO).
3649
3650 * jcf-write.c (perform_relocations): Move check out one loop.
3651
8773d9d5
AG
3652Sun Nov 15 15:09:56 1998 Anthony Green <green@hoser.cygnus.com>
3653
3654 * Make-lang.in: Fix reference to srcdir.
3655 * jv-scan.c: Add missing xmalloc prototype.
3656 * jvgenmain.c: Ditto.
3657
9bbc7d9f
PB
3658Sun Nov 15 14:36:29 1998 Per Bothner <bothner@cygnus.com>
3659
3660 * decl.c (error_mark_node), java-tree.h: New global.
3661 * parse.y: Use empty_stmt_node instead of size_zero_node.
3662 (build_if_else_statement): If missing else, use empty_stmt_node.
3663
3664 * parse.y (not_initialized_as_it_should_p): Removed, with its callers.
3665 (java_complete_expand_method): Complain if return is missing.
3666 (java_check_regular_methods): Comment out incorrect error check.
3667 (not_accessible_p): Fix incorrect handling of protected methods.
3668 (patch_method_invocation): Pass correct context to not_accessible_p.
3669 (find_applicable_accessible_methods_list): Likewise.
3670 (qualify_ambiguous_name): If ARRAY_REF, it's an expression name.
3671 (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, set
3672 TREE_TYPE (to void_type_node); otherwise expand_expr crashes.
3673 (patch_if_else_statement): Fix setting of CAN_COMPLETE_NORMALLY.
3674
3675 * jcf-write.c (CHECK_OP, CHECK_PUT): Add some error checking.
3676 (push_int_const): Remove reundant NOTE_PUSH.
3677 (generate_bytecode_insns - case STRING_CST): Do NOTE_PUSH.
3678 (- case SWITCH_EXPR): Fix code generation bug.
3679 (- case PREDECREMENT_EXPR etc): Remove redundant NOTE_PUSH.
3680 (generate_classfile): More robust for abstract methods.
3681
175135a6
AG
3682Sun Nov 15 13:52:39 1998 Anthony Green <green@cygnus.com>
3683
3684 * Makefile.in: jv-scan and jvgenmain all require libiberty.
3685 * Make-lang.in: Ditto.
3686
3687 * jv-scan.c: Remove xmalloc and xstrdup definitions.
3688 * jvgenmain: Ditto.
3689
0ef38928
PB
3690Sun Nov 15 14:10:56 1998 Per Bothner <bothner@cygnus.com>
3691
3692 * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro.
3693
3694 * jcf-io.c (find_class): Simpler/cleaner structure fixes a bug.
3695
a2f44beb
PB
3696Sat Nov 14 17:19:18 1998 Per Bothner <bothner@cygnus.com>
3697
3698 Allow uses of interface types to verify. This is not really
3699 type-safe, but it matches what Sun does, and is OK as long as
3700 there are appropriate run-time checks.
3701 * verify.c (merge_types): If merging two interface types,
3702 just set the result to java.lang.Object.
3703 * expr.c (pop_type): Any interface is matches by java.lang.Object.
3704
928962ae
TT
37051998-11-13 Tom Tromey <tromey@cygnus.com>
3706
df66b566
TT
3707 * gjavah.c (main): Handle --output-class-directory argument.
3708 * jvspec.c (lang_specific_driver): Translate `-d' into
3709 -foutput-class-dir.
3710 * jcf.h (jcf_write_base_directory): Declare.
3711 * lang.c (lang_decode_option): Recognize -foutput-class-dir.
3712 * lang-options.h: Mention -foutput-class-dir.
3713 * jcf-write.c (jcf_write_base_directory): New global.
3714 (make_class_file_name): Put generated .class file into `-d'
3715 directory, or into source directory if -d not given. Function now
3716 static.
3717 (write_classfile): Free class file name. Handle case where class
3718 file name is NULL.
3719 (DIR_SEPARATOR): New macro.
3720 Include <sys/stat.h>
3721
928962ae
TT
3722 * Makefile.in (prefix): New macro.
3723
14dd5b38
PB
3724Thu Nov 12 14:15:07 1998 Per Bothner <bothner@cygnus.com>
3725
421fb085
PB
3726 * parse.y (patch_invoke): Do less if flag_emit_class_files.
3727 * expr.c (build_known_method_ref): Don't check flag_emit_class_files
3728 here (done in patch_invoke instead).
3729 (case_identity): Moved here from parse.y.
3730
3731 * java-tree.h (CAN_COMPLETE_NORMALLY): New macro.
3732 * parse.y (java_complete_tree etc): Maybe set CAN_COMPLETE_NORMALLY.
3733 * parse.y (java_complete_tree): Re-order COMPOUND_EXPR in BLOCK
3734 so they can be efficiently scanned without recursion.
3735 Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
3736 * expr.c (java_lang_expand_expr): Expand statements of COMPOUND_EXPR
3737 in BLOCK iteratively, rather than recursively.
3738
3739 * parse.y (do_unary_numeric_promotion): New function.
3740 (patch_unaryop, patch_binop, patch_array_ref): Use it.
3741
3742 * parse.y (patch_newarray): Various fixes.
3743
3744 Re-do handling of switch statements (for proper block scoping).
3745 * parse.y: Add just a single block for the enture switch block,
3746 but don't create any "case blocks".
3747 (group_of_labels): Rmeoved unneeded non-terminal.
3748 CASE_EXPR and DEFAULT_EXPR are added to current block.
3749 * expr.c (java_lang_expand_expr): Inline SWITCH_EXPR here.
3750 Now also need to handle CASE_EXPR and DEFAULT_EXPR.
3751 * java-tree.h (SWITCH_HAS_DEFAULT): New macro.
3752 * parse.y (wfl_operator, print_int_node): Make non-static.
3753 (java_complete_tree): CASE_EXPR and DEFAULT_EXPR are now processed
3754 as part of recursive scan of block.
3755 (java_expand_switch ): Removed - inlined into java_lang_expand_expr.
3756 (patch_switch_statement): Most tests move dinto java_complete_tree.
3757
3758 * parse.y: Make various production be non-typed (void).
3759 * parse.y (parse_error): Merged into issue_warning_error_from_context.
3760 * parse.y (add_stmt_to_compound): Don't create/change extra node.
3761 (patch_method_invocation_stmt): Renamed to patch_method_invocation.
3762
3763 * jcf-write.c (struct jcf_handler): New type.
3764 (struct jcf_switch_state): New type.
3765 (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC): New relocation kinds.
3766 (alloc_handler, emit_unop, emit_reloc): New functions.
3767 (adjust_typed_op): Add extra parameter ("max type" offset).
3768 (emit_switch_reloc, emit_case-reloc): New function.
3769 (generate_bytecode_conditional): Handle REAL_TYPE comparisons.
3770 (generate_bytecode_insns): Support REAL_CST, switch statements,
3771 exception handling, method calls, object/array creation, and more.
3772
14dd5b38
PB
3773 * class.c: Remove some unused variables.
3774 * constants.c (find_string_constant): New function.
3775 (count_constant_pool_bytes): Fix to correctly handle wide constants.
3776 * decl.c (complete_start_java_method): Don't _Jv_InitClass
3777 if flag_emit_class_files.
421fb085 3778
dfded5c3
TT
37791998-11-12 Tom Tromey <tromey@cygnus.com>
3780
733b3a87
TT
3781 * jcf-io.c (find_class): Added explanatory comment.
3782
3783 * jcf-path.c (add_entry): Look for `.zip' at end of filename. Add
3784 trailing slash to `.zip' entries.
3785
dfded5c3
TT
3786 * jvspec.c (lang_specific_driver): Correctly handle case where
3787 GC_NAME not defined.
3788
aaff4ee4
TT
37891998-11-11 Tom Tromey <tromey@cygnus.com>
3790
3791 * jvspec.c (GC_NAME): New define.
3792 (lang_specific_driver): Use GC_NAME. Add GC_NAME to command line
3793 if required.
3794 * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
3795
b62d42fe
PB
3796Wed Nov 11 19:08:52 1998 Per Bothner <bothner@cygnus.com>
3797
3798 * jcf-dump.c (TABLE_SWITCH): Fix typos.
3799
233f10d3
TT
38001998-11-11 Tom Tromey <tromey@cygnus.com>
3801
3802 * jcf-dump.c (main): Correctly recognize `--'-style long options.
3803
5e942c50
APB
3804Tue Nov 10 12:34:03 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3805
3806 * class.c (is_compiled_class): Call safe_layout_class for class
3807 compiled from source.
3808 * conver.h (convert_to_integer, convert_to_real,
3809 convert_to_pointer): Added prototypes.
3810 * decl.c (init_decl_processing): Non longer push the decls of
3811 `methodtable', `constants', `Class', `Field', `dispatchTable'
3812 `jexception' and `Method'.
3813 * expr.c (build_invokeinterface): New function.
3814 (expand_invoke): static variable CLASS_IDENT now in
3815 build_invokeinterface. Use build_invokeinterface.
3816 (expand_java_field_op): Moved code to inline
3817 java.lang.PRIMTYPE.TYPE into a function.
3818 (build_primtype_type_ref): New function.
3819 * java-tree.def (INSTANCEOF_EXPR): New tree code.
3820 * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
3821 FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
3822 (DECL_CONSTRUCTOR_P): Fixed typo in comment.
3823 (DECL_LOCAL_STATIC_VALUE): New macro.
3824 (build_invokeinterface, build_primtype_type_ref): New function
3825 prototypes.
3826 (java_parse_abort_on_error): Macro rewritten.
3827 * jcf-parse.c (current_method): Add comment to declaration.
3828 (parse_zip_file_entries, process_zip_dir, void parse_source_file):
3829 Function prototypes fixed.
3830 (jcf_parse_source): push/pop parser context. save/restore global.
3831 (parse_source_file): Fixed leading comment. Now take a
3832 IDENTIFIER_NODE as an argument. Doesn't check methods, layout
3833 classes and pop the parser context anymore.
3834 (yyparse): Push parser context, save globals, parse the source
3835 file, restore globals and pop the parser context when processing a
3836 source file.
3837 * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
3838 * lex.c (java_parse_doc_section): New function.
3839 (java_lex): Call java_parse_doc_section when appropriate. Build an
3840 operator around INSTANCEOF_TK.
3841 * lex.h (java_lineterminator, java_sprint_unicode,
3842 java_unicode_2_utf8, java_lex_error, java_store_unicode):
3843 Prototypes rewritten.
3844 (java_parse_escape_sequence, java_letter_or_digit_p,
3845 java_parse_doc_section, java_parse_end_comment, java_get_unicode,
3846 java_read_unicode, java_store_unicode, java_read_char,
3847 java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
3848 Added function prototypes.
3849 * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
3850 define.
3851 (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
3852 New macros
3853 (struct parser_ctxt): New fields: deprecated,
3854 current_parsed_class_un, gclass_list.
3855 (fix_method_argument_names, issue_warning_error_from_context,
3856 resolve_package, lookup_package_type): New function prototypes.
3857 (resolve_expression_name): Fixed function prototype.
3858 (find_applicable_accessible_methods_list): Fixed indentation, added
3859 extra argument in prototype.
3860 (check_final_assignment, build_null_of_type, check_deprecation,
3861 check_method_redefinition, reset_method_name,
3862 java_check_regular_methods, java_check_abstract_methods,
3863 maybe_build_primttype_type_ref): New function prototype.
3864 * parse.y (conver.h): Include.
3865 (INSTANCEOF_TK): Tagged <operator>.
3866 (single_type_import_declaration): Use REGISTER_IMPORT macro.
3867 (relational_expression:): Build binop for instanceof.
3868 (java_push_parser_context): Remember ctxp->gclass_list across
3869 contexts.
3870 (java_pop_parser_context): Simply return if no context
3871 exists. Remember gclass_list across contexts.
3872 (issue_warning_error_from_context): New function.
3873 (parse_error_context): Don't setup ctxp->elc here. Call
3874 issue_warning_error_from_context instead.
3875 (parse_warning_context): Likewise.
3876 (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
3877 setup. Link new class/interface to ctxp->gclass_list.
3878 (add_superinterfaces): Register interface as incomplete if not
3879 loaded.
3880 (create_class): Remember class unqualified name in
3881 ctxp->current_parsed_class_un. Check class deprecation.
3882 (register_fields): Check field deprecation. Remember static final
3883 field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
3884 processing INIT.
3885 (method_header): New local variable ORIG_ARG. Use unqualified
3886 current class name for check on constructor errors. Promote return
3887 type if of record type. Argument list fix moved in
3888 fix_method_argument_names, called here. Check method deprecation.
3889 (fix_method_argument_names): New function.
3890 (method_declarator): Promote record typed arguments.
3891 (safe_layout_class): Check class methods before layout.
3892 (java_complete_class): Compute field layout when patched.
3893 (do_resolve_class): Try to load class after having it renamed
3894 after the package name.
3895 (get_printable_method_name): Use DECL_CONTEXT.
3896 (reset_method_name): New function.
3897 (check_method_redefinition): Use reset_method_name.
3898 (java_check_regular_methods): New local variable
3899 SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
3900 names for error report. Check for compile-time error when method
3901 found has default (package) access.
3902 (java_check_abstract_methods): Now takes an interface DECL node as
3903 an argument. Also reinstall real name on unchecked
3904 overriding/hiding methods for error report.
3905 (java_check_methods): Fixed leading comment. Get classes to verify
3906 from ctxp->gclass_list. Use CHECK_METHODS macro and set
3907 CLASS_METHOD_CHECKED_P on class verification.
3908 (lookup_java_method2): Get real method name if necessary.
3909 (find_in_imports): Don't check package class access here.
3910 (resolve_package, lookup_package_type): New functions.
3911 (java_layout_classes): Fixed leading comment. Take classes to be
3912 laid out from ctxp->gclass_list.
3913 (java_complete_expand_methods): Don't expand native and abstract
3914 methods.
3915 (java_expand_classes): New function.
3916 (resolve_expression_name): Use additional argument ORIG. Retrieve
3917 values of static final field of primitive types.
3918 (resolve_field_access): Handles static final field of promotive
3919 type.
3920 (resolve_qualified_expression_name): Handle STRING_CST as
3921 primaries and package name resolution. Check deprecation on found
3922 decls. Set where_found and type_found on non static field resolved
3923 during qualification. Layout non primitive field decl types.
3924 (check_deprecation): New function.
3925 (maybe_access_field): Simplified.
3926 (patch_method_invocation_stmt): Local variable CLASS_TYPE
3927 removed. Reverse method's argument when primary is a type. Don't
3928 use CLASS_TYPE to report problems, use IDENTIFIER_WFL
3929 instead. Include abstract class in the list of class searchable
3930 for constructors. Use DECL_CONTEXT of found method for access
3931 checks. Check method deprecation.
3932 (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
3933 converting arguments. Handle INVOKE_INTERFACE.
3934 (lookup_method_invoke): Search constructor using existing
3935 infrastructure (don't rely on lookup_java_constructor anymore).
3936 (find_applicable_accessible_methods_list): Extra argument flag
3937 LC. Now include constructor in the search.
3938 (qualify_ambiguous_name): Conditional expression are primaries.
3939 (not_initialized_as_it_should_p): static final are always
3940 initialized.
3941 (java_complete_tree): Pass extra NULL argument to
3942 resolve_expression_name. Stricter test to carry on patching
3943 assignments. New case for INSTANCEOF_EXPR.
3944 (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
3945 (check_final_assignment, maybe_build_primttype_type_ref): New
3946 functions.
3947 (patch_assignment): Detect resolved static finals and carry normal
3948 assignment error check on them. Inline PRIMTYPE.TYPE read access.
3949 (try_builtin_assignconv): Access constant 0 on all primitive
3950 types.
3951 (valid_builtin_assignconv_identity_widening_p): Accept identical
3952 types. Accept all promoted type on int type.
3953 (valid_ref_assignconv_cast_p): Accept a null pointer to be
3954 assigned to a reference.
3955 (valid_method_invocation_conversion_p): Accept to check null
3956 pointers.
3957 (build_binop): Merge declaration and initialization of local
3958 variable BINOP.
3959 (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
3960 numeric types. Improved validity test for qualify operators on
3961 references.
3962 (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
3963 and PREINCREMENT_EXPR. Also detect resolved static finals of a
3964 primitive type and issue the appropriate error message.
3965 (resolve_type_during_patch): Mark class loaded when resolved.
3966 (patch_cast): Allow null to be cased to reference types.
3967 (build_null_of_type): New function.
3968 (patch_array_ref): Handle array on references correctly.
3969 (patch_return): Removed unused local variable MODIFY. Force
3970 boolean to be returned as integers. Allows null to be returned by
3971 a function returning a reference.
3972 * typeck.c (convert_to_integer, convert_to_real,
3973 convert_to_pointer): Prototypes moved to convert.h
3974 (lookup_argument_method): Use method real name, if necessary.
3975
9cfceb60
TT
39761998-10-30 Tom Tromey <tromey@cygnus.com>
3977
66d88624
TT
3978 * class.c (build_class_ref): Changed name of primitive classes to
3979 start with `_Jv_'.
3980
9cfceb60
TT
3981 * class.c (make_class_data): Renamed fields: nmethods to
3982 method_count, method_count to dtable_method_count. Always set
3983 `state' field to 0.
3984 * decl.c (init_decl_processing): Likewise.
3985
22eed1e6
APB
3986Wed Oct 28 08:03:31 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
3987
3988 * class.c (layout_class): Don't mangle <finit>, produce
3989 __finit<class> instead. Don't verify artificial methods.
3990 * decl.c (finit_identifier_node): New declared global.
3991 (init_decl_processing): finit_identifier_node initialized.
3992 * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
3993 * java-tree.h (finit_identifier_node): Declared as extern.
3994 (struct lang_decl): New field called_constructor.
3995 (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
3996 (CLASS_HAS_FINIT_P): New macro.
3997 (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
3998 explicit constructor invocation.
3999 (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
4000 CALL_SUPER_CONSTRUCTOR_P): New macros.
4001 (write_classfile): Added prototype.
4002 * jcf-parse.c (jcf_parse_source): Parse and remember for
4003 generation if the file was seen on the command line.
4004 (parse_source_file): Don't write the class file here.
4005 (yyparse): Loop on files rewritten. Set current_jcf.
4006 (parse_zip_file_entries): Parse class file only if it was found.
4007 * lang.c (init_parse): Don't open command line provided filename
4008 here.
4009 (lang_parse): Don't set main_jcf anymore.
4010 * parse.h (ABSTRAC_CHECK): Capitalized arguments.
4011 (JCONSTRUCTOR_CHECK): New macro.
4012 (JBSC_TYPE_P): New macro.
4013 (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
4014 (COMPLETE_CHECK_OP_2): New macro.
4015 (struct parse_ctxt): New field explicit_constructor_p.
4016 (check_class_interface_creation): Fixed prototype indentation.
4017 (patch_method_invocation_stmt): Prototype reflects added argument.
4018 (patch_invoke): Likewise.
4019 (complete_method_declaration, build_super_invocation,
4020 verify_constructor_circularity,
4021 build_this_super_qualified_invocation, get_printable_method_name,
4022 patch_conditional_expr, maybe_generate_finit, fix_constructors,
4023 verify_constructor_super, create_artificial_method,
4024 start_artificial_method_body, end_artificial_method_body,
4025 generate_field_initialization_code): New function prototypes.
4026 * parse.y: Fixed leading comment
4027 (constructor_header:, constructor_body:, block_end:): Rules tagged
4028 <node>.
4029 (type_declaration:): Call maybe_generate_finit.
4030 (method_declaration:): Action for method_body: placed in new
4031 function complete_method_declaration, called here.
4032 (constructor_declaration:): Defined actions. Removed leading
4033 FIXME.
4034 (constructor_header:): New rule with action.
4035 (constructor_body:): Rule rewritten using block_begin: and
4036 block_end:. Defined actions.
4037 (constructor_declarator:, explicit_constructor_invocation:):
4038 Defined actions.
4039 (block:): Use new rules block_begin: block_end:.
4040 (block_begin:, block_end:): New rules and actions.
4041 (block_statements:): Fixed error message for explicit
4042 constructors.
4043 (method_invocation:): Call build_this_super_qualified_invocation
4044 if primary is `this' or `super' was seen.
4045 (conditional_expression:): Action defined.
4046 (extra_ctxp_pushed_p): New static global flag.
4047 (java_parser_context_save_global): Create parser context if
4048 necessary. Use extra_ctxp_pushed_p to remember it.
4049 (java_parser_context_restore_global): Pop extra parser context if
4050 one exists.
4051 (build_array_from_name): Array on primitive types are marked
4052 loaded.
4053 (register_fields): Restore new name in field initializer
4054 expression if type was altered. Non static fields initialized upon
4055 declaration marked initialized.
4056 (maybe_generate_finit): New function.
4057 (maybe_generate_clinit): Use create_artificial_method,
4058 start_artificial_method_body, end_artificial_method_body. Generate
4059 debug info for enclosed initialization statements.
4060 (method_header): Fixed leading comment. Check constructor
4061 flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
4062 accordingly.
4063 (complete_method_declaration, constructor_circularity_msg,
4064 verify_constructor_circularity): New functions.
4065 (get_printable_method_name): New function.
4066 (check_method_redefinition): Don't rename <finit> methods. Fix
4067 declared constructor names. Error message for
4068 constructors modified.
4069 (java_check_regular_methods): Local variable seen_constructor
4070 renamed saw_constructor. Skip verification on constructors. Create
4071 default constructor with create_artificial_method.
4072 (java_check_methods): Removed unnecessary empty line.
4073 (create_artificial_method, start_artificial_method_body,
4074 end_artificial_method_body): New functions.
4075 (java_layout_classes): Changed leading comment. Reverse fields
4076 list if necessary. Always layout java.lang.Object if being
4077 defined.
4078 (java_complete_expand_methods): Verify constructor circularity.
4079 (java_complete_expand_method): Call fix_constructor on
4080 constructors. Local variable no_ac_found removed. Restore
4081 bindings if method body expansion failed.
4082 (fix_constructors, verify_constructor_super,
4083 generate_field_initialization_code): New function.
4084 (java_expand_classes): Fixed leading comment. Write class file
4085 here.
4086 (resolve_expression_name): Check for illegal instance variable
4087 usage within the argument scope of an explicit constructor
4088 invocation.
4089 (resolve_qualified_expression_name): Pass extra from_super flag
4090 when invoking patch_method_invocation_stmt. New case for
4091 conditional expression when used as a primary. Check for error
4092 when acquiring super.
4093 (patch_method_invocation_stmt): Added extra argument super. New
4094 local variable is_static_flag. Set class_to_search according to
4095 the nature of the constructor invocation. Don't add `this'
4096 argument when expanding NEW_CLASS_EXPR. Check for illegal method
4097 invocation within the argument scope of explicit constructor
4098 invocation. Set is_static according to is_static_flag. Provide
4099 extra `super' argument to patch_invoke invocation.
4100 (patch_invoke): New argument from_super. Loop on arguments
4101 indentation fixed. Pass from_super to invocation_mode. New switch
4102 case INVOKE_SUPER. Fixed error message in switch default case.
4103 Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
4104 value.
4105 (invocation_mode): Return INVOKE_SUPER mode when appropriate.
4106 (lookup_method_invoke): Fixed prototypes in candidates list. Error
4107 message takes constructors into account.
4108 (find_applicable_accessible_methods_list): Fixed indentation.
4109 (qualify_ambiguous_name): Take explicit constructor invocation
4110 into account. Deal with a conditional expression as a primary to
4111 a method call.
4112 (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
4113 case. Added extra argument to patch_method_invocation_stmt.
4114 Register calls made to explicit constructor `this'. Don't call
4115 save_expr in ARRAY_REF case when emitting class files. Check for
4116 illegal use of this when expanding explicit constructor invocation
4117 arguments.
4118 (complete_function_arguments): Set and reset parser context
4119 explicit_constructor_p field value when appropriate.
4120 (build_super_invocation, build_this_super_qualified_invocation):
4121 New functions.
4122 (patch_assignment): Fixed typo.
4123 (patch_unaryop): Check on final fields occurs only when a decl
4124 exits.
4125 (patch_return): Take constructors into account.
4126 (patch_conditional_expr): New function.
4127 * typeck.c (build_java_signature): Removed unnecessary empty line.
4128
e626b840
JL
4129Wed Oct 28 00:46:15 1998 Jeffrey A Law (law@cygnus.com)
4130
4131 * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
4132
571d54d5
TT
41331998-10-28 Tom Tromey <tromey@cygnus.com>
4134
4135 * decl.c (init_decl_processing): Renamed fields.
4136 * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
4137 interface_len, msize fields.
4138
4139 * class.c (make_class_data): Removed subclass_head and
4140 subclass_next fields.
4141 * decl.c (init_decl_processing): Removed subclass_head and
4142 subclass_next fields.
4143
5ed948ce
JL
4144Wed Oct 28 00:46:15 1998 Jeffrey A Law (law@cygnus.com)
4145
4146 * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
4147 * mangle.c (emit_unicode_mangled_name): Similarly.
571d54d5 4148
0d17a080
NC
4149Mon Oct 26 12:17:23 1998 Nick Clifton <nickc@cygnus.com>
4150
4151 * jcf-parse.c (get_constant): Place braces around code to compute
4152 'd' when REAL_ARITHMETIC is not defined.
4153
937293e9
L
4154Sun Oct 25 14:58:05 1998 H.J. Lu (hjl@gnu.org)
4155
4156 * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
4157 dependency.
4158
45ae5597
TT
41591998-10-23 Tom Tromey <tromey@cygnus.com>
4160
4161 * lang-specs.h: `.zip' files are input to jc1.
4162
172b2240
PB
4163Thu Oct 22 23:01:54 1998 Per Bothner <bothner@cygnus.com>
4164
4165 * jvspecs.c: Add (but don't enable) support for combining multiple
4166 .class and .java input filenames to a single jc1 invocation.
4167 Add support for -C flag (copile to .class files).
4168 Translate -classpath and -CLASSPATH arguments.
4169 * lang-specs.h: Don't set %2 spec.
4170
8603f9c5
TT
41711998-10-22 Tom Tromey <tromey@cygnus.com>
4172
71f6a8e2
TT
4173 * jcf-path.c (add_entry): Don't add trailing separator if entry is
4174 a .zip file.
4175 (add_path): Don't add trailing separator to non-empty path
4176 elements.
4177
4178 * lang.c (lang_decode_option): Check for -fclasspath and
4179 -fCLASSPATH before examining other `-f' options.
4180
f7670760
TT
4181 * java-tree.h (finalize_identifier_node): Don't declare.
4182 * class.c (make_class_data): Don't push "final" field.
4183 * decl.c (init_decl_processing): Don't push "final" field.
4184 (finalize_identifier_node): Removed.
4185 (init_decl_processing): Don't set finalize_identifier_node.
4186
257fafbb
TT
4187 * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
4188
4189Sun Oct 11 10:31:52 1998 Anthony Green <green@cygnus.com>
4190
4191 * Make-lang.in (java): Depend on jcf-dump and jv-scan.
4192 (JV_SCAN_SOURCES): New macro.
4193 (JCF_DUMP_SOURCES): Likewise.
4194 (jcf-dump$(exeext)): New target.
4195 (jv-scan$(exeext)): New target.
4196
41971998-10-22 Tom Tromey <tromey@cygnus.com>
4198
4199 * Makefile.in (LEX): Removed.
4200 (LEXFLAGS): Likewise.
4201 (SET_BISON): New macro.
4202 (BISON): Removed.
4203 ($(PARSE_C)): Use SET_BISON. Run bison from srcdir to avoid
4204 spurious diffs in parse.c.
4205 ($(PARSE_SCAN_C)): Likewise.
4206 (PARSE_DIR): New macro.
4207 (PARSE_C): Use it.
4208 (PARSE_SCAN_C): Likewise.
4209 (PARSE_RELDIR): New macro.
4210
4211 * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
4212
8603f9c5
TT
4213 * jcf-io.c (find_class): Use saw_java_source to determine when to
4214 look for `.java' file.
4215 * jcf-parse.c (saw_java_source): New global.
4216 (yyparse): Set it if `.java' file seen.
4217
4218 * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
4219 (GCJH_SOURCES): Likewise.
4220 * Makefile.in (datadir): New macro.
4221 (libjava_zip): Likewise.
4222 (JAVA_OBJS): Added jcf-path.o.
4223 (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
4224 (../gcjh$(exeext)): Likewise.
4225 (jcf-path.o): New target.
4226 * java-tree.h (fix_classpath): Removed decl.
4227 * jcf-parse.c (fix_classpath): Removed.
4228 (load_class): Don't call fix_classpath.
4229 * parse.y (read_import_dir): Don't call fix_classpath.
4230 * lex.h: Don't mention classpath.
4231 * lex.c (java_init_lex): Don't initialize classpath.
4232 * jcf-io.c (classpath): Removed global.
4233 (find_class): Use jcf_path iteration functions. Correctly search
4234 class path for .java file.
4235 (open_in_zip): New argument `is_system'.
4236 * jcf-dump.c (main): Call jcf_path_init. Recognize all new
4237 classpath-related options.
4238 * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
4239 and -I.
4240 (lang_init): Call jcf_path_init.
4241 * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
4242 * lang-specs.h: Handle -I. Minor cleanup to -M options.
4243 Correctly put braces around second string in each entry.
4244 * gjavah.c (main): Call jcf_path_init. Recognize all the new
4245 classpath-related options.
4246 (help): Updated for new options.
4247 * jcf.h: Declare functions from jcf-path.c. Don't mention
4248 `classpath' global.
4249 * jcf-path.c: New file.
4250
4251 * jcf-depend.c: Include jcf.h.
4252
4253 * jcf-write.c (localvar_alloc): Returns `void'.
4254 (localvar_free): Removed unused variable.
4255
4256 * lang.c (OBJECT_SUFFIX): Define if not already defined.
4257 (init_parse): Use OBJECT_SUFFIX, not ".o".
4258
866e9df8
APB
4259Wed Oct 21 07:54:11 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4260
4261 * class.c (emit_register_classes): Renamed from
4262 emit_register_class.
4263 * java-tree.h (emit_register_classes): Prototype renamed from
4264 emit_register_class.
4265 * jcf-parse.c (yyparse): Call emit_register_classes once before
4266 returning.
4267 * parse.y (java_expand_classes): No longer register classes.
4268
b351b287
APB
4269Tue Oct 20 09:15:38 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4270
4271 * class.c (is_compiled_class): New local variable
4272 seen_in_zip. Identify classes found in currently compiled source
4273 file(s).
4274 * decl.c (complete_start_java_method): Fixed typo.
4275 * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
4276 HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
4277 (CLASS_P): Moved around.
4278 (java_parse_abort_on_error): Macro moved from jcf-parse.c
4279 * jcf-parse.c (java_parse_abort_on_error): Macro moved to
4280 java-parse.h
4281 (jcf_parse_source): Changed leading comment. Removed unnecessary
4282 fclose and CLASS_FROM_SOURCE_P marking.
4283 (parse_source_file): New local variables remember_for_generation
4284 and filename. Mark parsed file name identifier node. Removed block
4285 executed when parse_only was null. Set remember_for_generation.
4286 Use it as an argument to java_pop_parser_context.
4287 (yyparse): New local variables several_files, list, next node and
4288 current_file_list. Split ampersand separated file names into
4289 current_file_list. Iterate through the list and parse accordingly.
4290 * parse.h (java_pop_parser_context): New function prototype.
4291 * parse.y (ctxp_for_generation): New static global variable.
4292 (java_pop_parser_context): New argument generate. Link popped ctxp
4293 to ctxp_for_generation list accordingly.
4294 (java_complete_expand_methods): Fixed indentation.
4295 (java_expand_classes): New function.
4296
f9d48c82
PB
4297Sat Oct 17 11:25:21 1998 Per Bothner <bothner@cygnus.com>
4298
4299 * Makefile.in: Link with libiberty.a instead of memmove.o.
4300
c583dd46
APB
4301Fri Oct 16 10:59:01 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4302
4303 * lex.c (setjmp.h): No longer included.
4304 * lex.h (setjmp.h): Included.
4305 * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
4306 (duplicate_declaration_error_p): Renamed from
4307 duplicate_declaration_error.
4308 (build_array_from_name): New function prototype.
4309 * parse.y (setjmp.h): No longer included.
4310 (variable_declarator_id): Define action.
4311 (build_array_from_name): New function.
4312 (duplicate_declaration_error_p): Renamed from
4313 duplicate_declaration_error. Fixed leading comment.
4314 (register_fields): Main `for' loop reorganized. Uses
4315 SET_TYPE_FOR_RESOLUTION and build_array_from_name.
4316 (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
4317 build_array_from_name.
4318 (resolve_class): Set CLASS_LOADED_P on newly build array dimension
4319 types.
4320 (read_import_dir): Don't try to skip `.' and `..'.
4321 (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
4322 build_array_from_name. Main `for' loop reorganized.
4323 (resolve_qualified_expression_name): When building access to a
4324 field, use the type where the field was found, not its own type.
4325 (maybe_access_field): Use field DECL_CONTEXT if the type where the
4326 field was found is null.
4327 (qualify_ambiguous_name): Sweep through all successive array
4328 dimensions.
4329
0a2138e2
APB
4330Wed Oct 14 18:21:29 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4331
4332 * java-tree.h (pop_labeled_block, lang_printable_name,
4333 maybe_add_interface, set_super_info, get_access_flags_from_decl,
4334 interface_of_p, inherits_from_p, fix_classpath,
4335 complete_start_java_method, emit_handlers, init_outgoing_cpool,
4336 make_class_data, register_class, alloc_name_constant): New
4337 function prototypes.
4338 * lang.c (lang_decode_option): Set argc argument unused. Fixed
4339 indentation. Added cast to remove warning.
4340 (lang_printable_name): Set v argument unused.
4341 (lang_print_error): Added argument to lang_printable_name call.
4342 (java_dummy_print, print_lang_decl, print_lang_type,
4343 print_lang_identifier, lang_print_xnode): All argument marked
4344 unused.
4345 * lex.c (java_unget_unicode): Removed unnecessary argument.
4346 (java_allocate_new_line): Unused local variable is gone.
4347 (java_read_char): Added parenthesis in expressions to remove
4348 warnings. Added final return statement.
4349 (java_read_unicode): Added parenthesis in expression to remove
4350 warning.
4351 (java_parse_end_comment): Fixed java_unget_unicode invocation.
4352 (java_parse_escape_sequence): Likewise.
4353 (java_lex): Unused local variables are gone. Fixed
4354 java_unget_unicode invocation.
4355 * lex.h (set_float_handler): Prototype added when JC1_LITE not
4356 defined.
4357 * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
4358 lang_printable_name invocation in macro.
4359 (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
4360 Likewise.
4361 (duplicate_declaration_error): Suppressed unused argument in
4362 prototype.
4363 (identical_subpath_p): Function declaration is gone.
4364 (patch_invoke): Suppressed unused argument in prototype.
4365 (patch_cast, build_labeled_block, check_thrown_exceptions):
4366 Likewise.
4367 * parse.y (setjmp.h): Included
4368 (toplev.h): Likewise.
4369 (field_declaration:): Suppressed unused local
4370 (label_decl:): Fixed build_labeled_block invocation.
4371 (java_pop_parser_context): Put extra parenthesis around assignment
4372 in if.
4373 (yyerror): Suppressed unused local variables.
4374 (variable_redefinition_error): Fixed lang_printable_name
4375 invocation.
4376 (create_interface): Suppressed unused local variables.
4377 (create_class): Likewise.
4378 (duplicate_declaration_error): Suppressed unused argument. Fixed
4379 lang_printable_name invocation.
4380 (register_fields): Suppressed unused local variable. Fixed
4381 duplicate_declaration_error invocation.
4382 (method_header): Suppressed unused local variable.
4383 (method_declarator, parser_check_super): Likewise.
4384 (java_complete_class): Suppressed unused local variable. Fixed
4385 fatal error message.
4386 (complete_class_report_errors): Added default: in switch.
4387 (java_check_regular_methods): Fixed lang_printable_name
4388 invocations.
4389 (check_throws_clauses): Likewise.
4390 (java_check_abstract_methods): Suppressed unused local
4391 variable. Fixed lang_printable_name invocation.
4392 (read_import_entry): Added supplemental return statement.
4393 (read_import_dir): Suppressed unused local variables.
4394 (check_pkg_class_access, declare_local_variables): Likewise.
4395 (source_start_java_method): Suppressed unused extern variable
4396 declarations
4397 (expand_start_java_method): Suppressed unused extern and local
4398 variable declarations.
4399 (java_complete_expand_methods): Likewise.
4400 (java_complete_expand_method): Suppressed unused local variables.
4401 (make_qualified_name): Likewise.
4402 (resolve_qualified_expression_name): Added default: in
4403 switch. Fixed lang_printable_name invocation.
4404 (class_instance_creation_expression): Added parenthesis around
4405 expressions.
4406 (patch_method_invocation_stmt): Fixed lang_printable_name and
4407 patch_invoke invocations.
4408 (check_for_static_method_reference): Fixed lang_printable_name
4409 invocation.
4410 (patch_invoke): Suppressed unused arguments and local variables.
4411 (lookup_method_invoke): Suppressed unused local variables.
4412 (qualify_ambiguous_name): Added default: in switch.
4413 (identical_subpath_p): Function removed.
4414 (patch_assignment): Suppressed unused local variables. Suppressed
4415 unnecessary if statement. Fixed lang_printable_name invocations.
4416 (try_builtin_assignconv): Fixed lang_printable_name invocations.
4417 (valid_ref_assignconv_cast_p): Parenthesis around
4418 expression. Suppressed unused local variables.
4419 (build_binop): Suppressed unused local variables. fixed
4420 lang_printable_name invocations.
4421 (string_constant_concatenation): Suppressed unused local
4422 variables.
4423 (patch_unaryop): Fixed lang_printable_name invocation.
4424 (patch_cast): Suppressed unnecessary argument. Fixed
4425 lang_printable_name invocation.
4426 (patch_array_ref): Fixed lang_printable_name invocation.
4427 (patch_newarray, patch_return, patch_if_else_statement): Likewise.
4428 (build_labeled_block): Suppressed unused argument.
4429 (generate_labeled_block): Fixed build_labeled_block invocation.
4430 (build_loop_body): Suppressed unused local variables.
4431 (patch_loop_statement): Likewise.
4432 (patch_exit): Fixed lang_printable_name invocation.
4433 (patch_switch_statement): Likewise.
4434 (case_identity): First argument marked unused.
4435 (patch_try_statement): Fixed lang_printable_name invocations.
4436 (patch_synchronized_statement, patch_throw_statement): Likewise.
4437 (check_thrown_exceptions): Fixed check_thrown_exceptions and
4438 lang_printable_name invocations.
4439 (check_thrown_exceptions_do): Suppressed unused argument.
4440
fc45c7ef
TT
44411998-10-14 Tom Tromey <tromey@cygnus.com>
4442
4443 * jcf-write.c (write_classfile): Add output class file as target.
4444 * lang-options.h: Added -MD, -MMD, -M, and -MM.
4445 * jcf.h: Added declarations for dependency-tracking functions.
4446 * lang-specs.h: Handle -M, -MM, MD, and -MMD.
4447 * lang.c (lang_decode_option): Recognize -MD and -MMD.
4448 (finish_parse): Call jcf_dependency_write.
4449 (dependency_tracking): New global.
4450 (DEPEND_SET_FILE): New define.
4451 (DEPEND_ENABLE): New define.
4452 (init_parse): Enable dependency tracking if required.
4453 Include "flags.h".
4454 * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
4455 (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
4456 (../gcjh$(exeext)): Likewise.
4457 (jcf-depend.o): New target.
4458 * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
4459 (GCJH_SOURCES): Likewise.
4460 * jcf-io.c (open_class): Call jcf_dependency_add_file. Added
4461 dep_name argument.
4462 (find_classfile): Added dep_name argument.
4463 (find_class): Compute name of dependency.
4464 (open_in_zip): Call jcf_dependency_add_file.
4465 * gjavah.c (output_file): No longer global.
4466 (usage): Don't mention "gjavah".
4467 (help): Likewise.
4468 (java_no_argument): Likewise.
4469 (version): Likewise.
4470 (main): Recognize and handle -M family of options.
4471 (print_mangled_classname): Return is void.
4472 (process_file): Handle case where output is suppressed.
4473 (HANDLE_END_FIELD): Likewise.
4474 (HANDLE_METHOD): Likewise.
4475 * jcf-depend.c: New file.
4476
bcf6c7e3
JL
4477Tue Oct 13 23:34:12 1998 Jeffrey A Law (law@cygnus.com)
4478
4479 * java-tree.def: Add missing newline at EOF.
4480
0a65887a
TT
44811998-10-13 Tom Tromey <tromey@cygnus.com>
4482
4483 * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
4484 (main): Likewise. Exit with SUCCESS_EXIT_CODE at end of
4485 function.
4486 Include <config.h> and "system.h".
4487 (disassemble_method): Undefine RET to avoid clash with
4488 config/i386/i386.h.
4489
b9f7e36c
APB
4490Tue Oct 13 03:50:28 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4491
4492 * decl.c (runtime_exception_type_node, error_exception_type_node):
4493 New global variables.
4494 (init_decl_processing): Initialized.
4495 * expr.c (java_lang_expand_expr): Set caught exception type to
4496 null if catch handler argument doesn't exit.
4497 * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
4498 tree codes.
4499 * java-tree.h (runtime_exception_type_node,
4500 error_exception_type_node): Global variables declared.
4501 (DECL_FUNCTION_THROWS): New macro.
4502 (DECL_FUNCTION_BODY): Modified comment.
4503 (DECL_SPECIFIC_COUNT): Likewise.
4504 (struct lang_decl): New field throws_list.
4505 (IS_UNCHECKED_EXPRESSION_P): New macro.
4506 * lex.c (java_lex): Generate location information for THROW_TK.
4507 * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
4508 EXCEPTIONS_P): New macros.
4509 (enum jdep_code): New value JDEP_EXCEPTION.
4510 (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
4511 BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
4512 PATCH_METHOD_RETURN_ERROR): New macros.
4513 (patch_method_invocation_stmt): Added new argument to prototype.
4514 (patch_synchronized_statement, patch_throw_statement,
4515 check_thrown_exceptions, check_thrown_exceptions_do,
4516 purge_unchecked_exceptions, check_throws_clauses): New function
4517 prototypes.
4518 * parse.y Fixed typo in keyword section.
4519 (throw:): Rule tagged <node>.
4520 (THROW_TK): Keyword tagged <operator>.
4521 (method_header:): Last argument to call to method_header passed
4522 from throws: rule.
4523 (throws:, class_type_list:, throw_statement:,
4524 synchronized_statement:, synchronized:): Defined actions.
4525 (method_header): New local variable current. Register exceptions
4526 from throws clause.
4527 (java_complete_tree): Complete and verify exceptions from throws
4528 clause.
4529 (complete_class_report_errors): Error message on exceptions not
4530 found
4531 (java_check_regular_methods): Fixed typo. Shortcut on private
4532 overriding methods. Changed error message on method
4533 redefinition. Check for throws clause compatibility.
4534 (check_throws_clauses): New function.
4535 (java_check_abstract_methods): Use DECL_NAME for wfl or current
4536 method. Changed error message on method redefinition.
4537 (currently_caught_type_list): New static variable.
4538 (java_complete_expand_methods): Purge unchecked exceptions from
4539 throws clause list. Call PUSH_EXCEPTIONS before walk and
4540 POP_EXCEPTIONS after.
4541 (resolve_qualified_expression_name): Pass new argument as NULL to
4542 patch_method_invocation_stmt.
4543 (patch_method_invocation_stmt): New argument ref_decl. Invoke
4544 PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
4545 argument list when appropriate. Use new argument if non null to
4546 store selected method decl.
4547 (patch_invoke): Convert if necessary args of builtin types before
4548 forming CALL_EXPR. Argument list no longer reversed here.
4549 (invocation_mode): Treat final methods as static methods.
4550 (java_complete_tree): New cases for THROW_EXPR: and
4551 SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
4552 function call.
4553 (complete_function_arguments): No more RECORD_TYPE
4554 conversion. Function parameter nodes no longer saved.
4555 (valid_ref_assignconv_cast_p): Avoid handling null type.
4556 (patch_binop): Fixed null constant reference handling.
4557 (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
4558 BUILD_THROW macros.
4559 (patch_try_statement): Fixed comments. Record caught types in
4560 list, push the list, expand try block and pop the list.
4561 (patch_synchronized_statement, patch_throw_statement,
4562 check_thrown_exceptions, check_thrown_exceptions_do,
4563 purge_unchecked_exceptions): New functions.
4564 * typeck.c (lookup_argument_method): Allow WFL in place of method
4565 DECL_NAME during method definition check
4566
6d6044b0
PB
45671998-10-09 Tom Tromey <tromey@cygnus.com>
4568
4569 * gjavah.c (decode_signature_piece): New function.
4570 (print_c_decl): Use it. Added `name_override' argument.
4571 (print_method_info): Use name_override argument to print_c_decl.
4572 (seen_fields): Removed.
4573 (print_field_info): Don't update seen_fields.
4574 (struct method_name): New structure.
4575 (method_name_list): New global.
4576 (print_method_info): Add new method to list of methods.
4577 (name_is_method_p): New function.
4578 (print_field_info): If field name has same name as method, then
4579 change field name.
4580 (process_file): Parse methods before fields.
4581 (field_pass): New global.
4582 (HANDLE_END_FIELD): Take field_pass into account.
4583
13abbf47
KG
4584Wed Oct 7 12:10:48 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4585
4586 * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
4587 (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
4588
6d6044b0
PB
4589Sat Oct 3 13:29:46 1998 Anthony Green <green@cygnus.com>
4590
4591 * jvspec.c: Fix bug in jvgenmain_spec patch.
4592
4593Fri Oct 2 17:22:52 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4594
4595 * Makefile.in (lang.o:): Install dependency on java-tree.def.
4596 * decl.c (soft_exceptioninfo_call_node): New global variable.
4597 (init_decl_processing): Fixed indentation. soft_badarrayindex_node
4598 takes extra integer argument. soft_exceptioninfo_call_node
4599 initialized.
4600 * except.c (java_set_exception_lang_code): New function
4601 (method_init_exceptions): Called here.
4602 (prepare_eh_table_type): New function.
4603 (expand_end_java_handler): Called here.
4604 * expr.c (build_java_throw_out_of_bounds_exception): Now features
4605 one argument. Modified generation of call to
4606 soft_badarrayindex_node to use new argument.
4607 (build_java_arrayaccess): Pass faulty index value to
4608 build_java_throw_out_of_bounds_exception.
4609 (generate_name): New function.
4610 (java_lang_expand_expr): New local variables node, current,
4611 has_finally_p. Expand TRY_EXPR node.
4612 (process_jvm_instruction): Replace top of the stack with thrown
4613 object reference when entering exception handler.
4614 * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
4615 specific tree codes.
4616 * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
4617 global.
4618 (DECL_SPECIFIC_COUNT): New macro.
4619 (prepare_eh_table_type, java_set_exception_lang_code,
4620 generate_name): New function declarations.
4621 (match_java_method): Declaration deleted.
4622 (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
4623 macros.
4624 * lex.c (TRY_TK, CATCH_TK): Generate location information.
4625 * parse.h (redefinition_error, refine_accessible_methods_list,
4626 can_cast_to_p): Function declaration removed.
4627 (classitf_redefinition_error, variable_redefinition_error,
4628 parse_jdk1_1_error, find_applicable_accessible_methods_list,
4629 find_most_specific_methods_list, argument_types_convertible,
4630 enter_a_block, valid_builtin_assignconv_identity_widening_p,
4631 valid_cast_to_p, valid_method_invocation_conversion_p,
4632 try_reference_assignconv, add_stmt_to_compound,
4633 build_jump_to_finally, build_tree_list, patch_try_statement,
4634 java_get_catch_block): New function declarations.
4635 * parse.y (string_buffer_type): Global variable deleted.
4636 (group_of_labels, catches, catch_clause, catch_clause_parameter,
4637 finally): Rules tagged <node>.
4638 (TRY_TK, CATCH_TK): Token tagged <operator>.
4639 (class_body_declaration:, class_member_declaration:,
4640 formal_parameter:, explicit_constructor_invocation:,
4641 interface_member_declaration:, constant_declaration:,
4642 primary_no_new_array:, class_instance_creation_expression:,
4643 array_creation_expression:): Issue error on unsuported JDK1.1
4644 features.
4645 (try_statement:, catches:, finally:): Define actions.
4646 (catch_clause_parameter): New rule.
4647 (catch_clause:): Use new rule catch_clause_parameter.
4648 (parse_jdk1_1_error): New function.
4649 (redefinition_error): Renamed classitf_redefinition_error.
4650 (variable_redefinition_error): New function.
4651 (check_class_interface_creation): Call
4652 classitf_redefinition_error.
4653 (java_complete_tree): Added error message on JDEP_TYPE: case.
4654 (complete_class_report_errors): Fixed indentation.
4655 (declare_local_variables): Call variable_redefinition_error.
4656 (source_end_java_method): Call java_set_exception_lang_code and
4657 emit_handlers where appropriate.
4658 (java_method_add_stmt): Call add_stmt_to_block.
4659 (add_stmt_to_block): New function.
4660 (lookup_method_invoke): Fixed outside comment. new local variable
4661 candicates. Call find_applicable_accessible_methods_list and
4662 find_most_specific_methods_list when searching for a
4663 method. Modified error report to list possible candidates when
4664 applicable.
4665 (find_applicable_accessible_methods_list,
4666 find_most_specific_methods_list, argument_types_convertible): New
4667 function.
4668 (refine_accessible_methods_list): Function deleted.
4669 (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
4670 expr (if applicable) before calling patch_array_ref.
4671 (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
4672 (enter_block): Fixed comment.
4673 (enter_a_block): New function.
4674 (patch_assignment): Reorganized. Call try_reference_assignconv for
4675 references. Call valid_cast_to_p instead of can_cast_to_p.
4676 (try_reference_assignconv,
4677 valid_builtin_assignconv_identity_widening_p): New functions.
4678 (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
4679 (valid_cast_to_p, valid_method_invocation_conversion_p): New
4680 functions.
4681 (build_string_concatenation): Don't resolve StringBuffer.
4682 (patch_cast): Fixed inverted arguments.
4683 (patch_array_ref): Code to save array expr deleted. Call
4684 valid_cast_to_p instead of can_cast_to_p.
4685 (generate_labeled_block): Call generate_name.
4686 (build_jump_to_finally, build_try_statement, java_get_catch_block,
4687 patch_try_statement): New functions.
4688 * typeck.c (match_java_method): Function deleted.
4689
4690Fri Oct 2 13:48:36 1998 Anthony Green <green@cygnus.com>
4691
4692 * jvspec.c: jvgenmain_spec uses different temporary file names.
4693
4694Fri Oct 2 12:50:19 1998 Anthony Green <green@cygnus.com>
4695
4696 * jvspec.c (lang_specific_driver): Fail if user specifies
4697 --main= when not linking.
4698
4699Mon Sep 28 13:48:33 1998 Tom Tromey <tromey@cygnus.com>
4700
4701 * class.c (make_class_data): Push value for `thread' field.
4702 * decl.c (init_decl_processing): Added `thread' field to class.
4703
4704 * class.c (add_field): Always make static fields externally
4705 visible.
4706
4707Sat Sep 26 08:22:47 1998 Anthony Green <green@cygnus.com>
4708
4709 * expr.c (build_java_athrow,
4710 build_java_throw_out_of_bounds_exception, expand_invoke,
4711 build_newarray, expand_java_multianewarray, build_java_monitor):
4712 Update comments to reflect _Jv_* function names.
4713
4714Fri Sep 25 16:03:02 1998 Per Bothner <bothner@cygnus.com>
4715
4716 * decl.c (complete_start_java_method): DECL_RESULT is always promoted.
4717 * decl.c (start_java_method): Handle PROMOTE_PROTOTYPES target macro.
4718 * parse.y (expand_start_java_method): Likewise.
4719
4720Thu Sep 24 12:20:35 1998 Per Bothner <bothner@cygnus.com>
4721
4722 * expr.c (pop_arguments): Handle PROMOTE_PROTOTYPES target macro.
4723
4724 * class.c (push_class): IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
4725 (add_field): No longer need to convert from RECORD_TYPE to pointer,
4726 * expr.c: Remove no-longer-needed calls to promote_type.
4727 * decl.c (give_name_to_locals): Liekwise.
4728 * jcf-parse.c (get_class_constant): Compensate for new signatures.
4729 * parse.y: Add/remove promote_type calls as appropriate.
4730 * typeck.c (parse_signature_type): Returns POINTER_TYPE for objects.
4731 (parse_signature_string): Likewise.
4732 (build_java_array_type): Fix for now signature convenions.
4733
4734 * lex.c (java_lex): Fix (from Alex) for JC1_LITE problem.
4735
4736Wed Sep 23 14:49:35 1998 Tom Tromey <tromey@cygnus.com>
4737
4738 * class.c (init_class_processing): libjava function renamed to
4739 _Jv_RegisterClass.
4740
4741Tue Sep 22 12:00:02 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4742
4743 * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
4744 * java-tree.def: Fixed DEFTREECODE third argument.
4745 (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
4746 CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
4747 * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
4748 (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
4749 JAVA_THIS_EXPR): Now replaced by tree code definitions.
4750 (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
4751 * lang.c (java_tree_code_type, java_tree_code_length,
4752 java_tree_code_name): New arrays.
4753 (lang_init): Append Java tree node definitions to Gcc ones.
4754 * lex.c (expression_obstack): Declared as extern when JC1_LITE
4755 defined.
4756 (java_init_lex): Initialize wfl_append, wfl_string_buffer,
4757 wfl_to_string.
4758 (java_lex): Allow declaration of empty string constants. Retain
4759 location information on CASE_TK and DEFAULT_TK.
4760 * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
4761 JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
4762 Modified to be more robust.
4763 (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
4764 (build_new_invocation, try_builtin_assignconv,
4765 patch_switch_statement, string_constant_concatenation,
4766 build_string_concatenation, patch_string_cst, patch_string,
4767 java_expand_switch): New function declarations.
4768 * parse.y: Rules related to switch and EH tagged <node>.
4769 (label_id): Set to NULL_TREE
4770 (wfl_string_buffer, wfl_append, wfl_to_string): New static global
4771 tree nodes.
4772 (this_or_super:): Fixed indentation.
4773 (statement:, statement_nsi:, statement_without_trailing_substatement:,
4774 statement_expression:): Removed call to RULE on all sub-rules.
4775 (switch_expression:, switch_labels:): New rules.
4776 (switch_statement:, switch_block:, switch_block_statement_groups:,
4777 switch_block_statement_group:, switch_labels:, switch_label:):
4778 Defined actions.
4779 (throw_statement:, synchronized_statement:, try_statement:):
4780 Defined temporary actions.
4781 (class_instance_creation_expression:): Call
4782 build_new_invocation. Fixed indentation.
4783 (field_access): Fixed indentation.
4784 (method_invocation): Likewise.
4785 (make_qualified_primary): Use THIS_EXPR.
4786 (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
4787 resolving from SUPER, set *type_found.
4788 (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
4789 (java_complete_tree): Removed unused local variable `location'. Case
4790 for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
4791 NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
4792 on MODIFY_EXPR: and all binary operator tree code cases. Removed
4793 STRING_CST: case. default: checks for patchable strings.
4794 (complete_function_arguments): Transform string constant or
4795 crafted StringBuffer if necessary.
4796 (build_method_invocation): Fixed comments.
4797 (build_new_invocation): New function.
4798 (patch_assignment): Call try_builtin_assignconv to figure a valid
4799 assignment conversion between builtin types.
4800 (try_builtin_assignconv): New function.
4801 (build_binop): Use URSHIFT_EXPR directly to call build.
4802 (operator_string): Use UNARY_PLUS_EXPR.
4803 (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
4804 operator.
4805 (do_merge_string_cste, merge_string_cste,
4806 string_constant_concatenation, build_string_concatenation,
4807 patch_string, patch_string_cst): New function.
4808 (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
4809 (patch_unaryop): Likewise. New test of valid ++/-- operands.
4810 (build_newarray_node): Use NEW_ARRAY_EXPR.
4811 (build_this): Use THIS_EXPR.
4812 (build_return): Enable debug information on return statement.
4813 (build_if_else_statement): Likewise.
4814 (complete_labeled_statement): Fixed related comment.
4815 (build_loop_body): Fixed comment.
4816 (build_bc_statement): Enable debug information on break/continue
4817 statements.
4818 (patch_bc_statement): Fixed typos. Handle SWITCH statement
4819 context.
4820 (patch_switch_statement, case_identity, java_expand_switch): New
4821 functions.
4822
4823Mon Sep 21 13:21:35 1998 Per Bothner <bothner@cygnus.com>
4824
4825 * buffer.h (BUFFER_INIT): New macro.
4826 * jcf-write.c (struct jcf_partial): New type. Put global stuff here.
4827 Pass (struct jcf_partial *state) to most functions.
4828 (jcf_block, jcf_relocation): New types.
4829 Support labels, branches, conditionals, loops.
4830
4831Mon Sep 21 15:08:48 1998 Tom Tromey <tromey@cygnus.com>
4832
4833 * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
4834
4835Mon Sep 21 13:21:35 1998 Per Bothner <bothner@cygnus.com>
4836
4837 * decl.c (integer_type_node): Make it have INT_TYPE_SIZE.
4838 * verify.c (verify_jvm_instructions): Use int_type_not (32 bits),
4839 not integer_type_node (INT_TYPE_SIZ bits).
4840
4841 * parse.y (patch_if_else_statement): Accept promoted_boolean_type_node.
4842
4843 * jcf-reader.c (get_attribute): New HANDLE_EXCEPTION_TABLE hook.
4844 * jcf-dump.c (print_exception_table): New function.
4845 (disassemble_method): Better handling of wide instructions.
4846 Make more robust for bad input.
4847
4f01de5c
JL
4848Wed Sep 30 20:53:51 1998 Jeffrey A Law (law@cygnus.com)
4849
4850 * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
4851 FreeBSD.
4852
da4f7dc1
JL
4853Thu Sep 17 19:45:01 1998 Jeffrey A Law (law@cygnus.com)
4854
4855 * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
4856
4a4a4682
TT
4857Thu Sep 17 16:21:52 1998 Tom Tromey <tromey@cygnus.com>
4858
4859 * Makefile.in ($(PARSE_H)): Removed target.
4860
e6a480d3
JL
4861Thu Sep 17 01:57:07 1998 Jeffrey A Law (law@cygnus.com)
4862
4863 * Makefile.in (JAVA_OBJS): Add memmove.o
4864 (memmove.o): New target & rules.
4865
6d6044b0
PB
4866Tue Sep 15 23:21:55 1998 Tom Tromey <tromey@cygnus.com>
4867
4868 * expr.c (expand_invoke): Don't generate a call to the class init
4869 code.
4870
1f43f4b4
JL
4871Mon Sep 14 10:14:47 1998 Jeffrey A Law (law@cygnus.com)
4872
4873 * Makefile.in: Add many missing dependencies.
4874 * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
4875 as appropriate.
4876 * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
4877 * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
4878
6d6044b0
PB
4879Fri Sep 11 14:05:21 1998 Per Bothner <bothner@cygnus.com>
4880
4881 * decl.c (complete_start_java_method): If method is static (and
4882 not private) call _Jv_InitClass.
4883 * expr.c (expand_invoke): Don't call build_class_init.
4884
4885 * jvspec.c (jvgenmain_spec): Fix spec for generated .o file.
4886
76f42086
JL
4887Thu Sep 10 10:33:31 1998 Jeffrey A Law (law@cygnus.com)
4888
4889 * Make-lang.in (GCJ): Define before using.
4890
71d05349
JL
4891Wed Sep 9 21:23:10 1998 Jeffrey A Law (law@cygnus.com)
4892
4893 * gjavah.c (java_no_argument): Renamed from no_argument to avoid
4894 losing due to namespace pollution in GNU getopt.h
4895
232e6c7c
TT
4896Wed Sep 9 13:33:39 1998 Tom Tromey <tromey@cygnus.com>
4897
4898 * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
4899 (java.all.cross): Likewise.
4900 (java.rest.encap): Likewise.
4901
e742fecc
JL
4902Tue Sep 8 10:34:05 1998 Jeffrey A Law (law@cygnus.com)
4903
4904 * gjavah.c (print_class_decls): Fix thinko in arglist
4905 * jcv-io.c (find_classfile): Similarly.
4906
5db17173
JL
4907Mon Sep 7 13:59:49 1998 Jeffrey A Law (law@cygnus.com)
4908
4909 * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
4910
6d6044b0
PB
4911Sat Sep 5 16:08:01 1998 Tom Tromey <tromey@cygnus.com>
4912
4913 * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
4914 (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
4915 * Makefile.in (PARSE_C): New macro.
4916 (PARSE_H): Likewise.
4917 (PARSE_SCAN_C): Likewise.
4918 ($(PARSE_C)): Target renamed from parse.c.
4919 ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
4920 (clean): Remove parse-scan.c as well.
4921 (parse.o): Depend on $(PARSE_C).
4922
4923Sat Sep 5 08:48:40 1998 Anthony Green <green@cygnus.com>
4924
4925 * README, license.terms: Removed.
4926
4927 * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
4928 decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
4929 javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
4930 jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
4931 keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
4932 lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
4933 verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
4934 and Java trademark attribution.
4935
4936Fri Sep 4 10:42:05 1998 Tom Tromey <tromey@cygnus.com>
4937
4938 * Makefile.in: Use gcjh, not gjavah.
4939 * config-lang.in (stagestuff): Use gcjh, not gjavah.
4940 * Make-lang.in: Changed gjavah to gcjh everywhere.
4941
4942Thu Sep 3 18:04:09 1998 Per Bothner <bothner@cygnus.com>
4943
4944 * gjavah.c: Support new -prepend -add -append flags.
4945 (print_method_info): Method is not virtual if class is final.
4946
9dd939b2 4947Thu Sep 3 12:03:53 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6d6044b0
PB
4948
4949 * jv-scan.c: Fixed copyright assignment.
4950 * keyword.gperf: Likewise.
4951 * keyword.h: Likewise.
4952 * lex.c: Fixed copyright assignment.
4953 (java_lex): Push unicode back when parsing '<'.
4954 * lex.h: Fixed copyright assignment.
4955 * parse-scan.y: Likewise.
4956 * parse.h: Fixed copyright assignment.
4957 (build_debugable_stmt, complete_for_loop): New function prototypes.
4958 * parse.y: Fixed copyright assignment.
4959 (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
4960 size_zero_node when completing a loop with no exit condition.
4961 (for_statement_nsi:): Define action.
4962 (for_init:, for_update:): Return size_zero_node when empty.
4963 (declare_local_variables): Call build_debugable_stmt.
4964 (build_debugable_stmt): New function.
4965 (build_loop_body): Build debugable statement around loop
4966 condition part.
4967 (complete_loop_body): Take into account the debugable statement
4968 around the EXIT_EXPR.
4969 (complete_loop_body): New function.
4970 (patch_exit_expr): Fixed condition inversion.
4971
4972Wed Sep 2 11:53:58 1998 Tom Tromey <tromey@cygnus.com>
4973
4974 * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
4975 name of thread define.
4976 * jvspec.c (THREAD_NAME): New macro.
4977 (GCLIB): Likewise.
4978 (THREADLIB): Likewise.
4979 (lang_specific_driver): Recognize attempt to link with thread
4980 library or gc library. Recognize -ljava on command line so it
4981 isn't linked against more than once.
4982
4983Wed Sep 2 11:28:35 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4984
4985 * parse-scan.y (report_main_declaration): Name of the class
4986 containing `main' can be a qualified name.
4987
4988Mon Aug 31 13:25:58 1998 Tom Tromey <tromey@cygnus.com>
4989
4990 * config-lang.in: Changed gjavac to gjc everywhere.
4991 * Make-lang.in: Changed gjavac to gjc everywhere.
4992
4993Thu Aug 27 02:28:27 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
4994
4995 * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
4996 (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
4997 and install the files.
4998 * Makefile.in (JAVA_OBJS_LITE): New variable.
4999 (compiler:): Now include jv-scan as a dependency.
5000 (../jv-scan$(exeext), parse-scan.c): New targets.
5001 (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
5002 * config-lang.in (compilers): Removed gcj, gjavah from the list.
5003 * jcf-parse.c (parse_source_file): Call java_layout_classes and
5004 check for errors even if parse_only.
5005 * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
5006 defined.
5007 (yylex): New function. Uses java_lex body.
5008 (java_lex): Removed commented out statement. Remove local variable
5009 literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
5010 appropriate. Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
5011 DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
5012 SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
5013 if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
5014 SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
5015 where appropriate.
5016 (java_lex_error): Empty if JC1_LITE is defined.
5017 (java_get_line_col): Return 0 if JC1_LITE is defined.
5018 * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
5019 SET_MODIFIER_CTX): Moved into the section containing the macros
5020 conditionally defined by JC1_LITE.
5021 (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
5022 argument if JC1_LITE is defined.
5023 (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
5024 REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
5025 is defined.
5026 (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
5027 FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
5028 SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
5029 to different values according to JC1_LITE.
5030 * parse.h (int_fits_type_p, stabilize_reference): Prototype not
5031 declared if JC1_LITE set.
5032 (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
5033 defined if JC1_LITE not set.
5034 (struct parser_ctx): Reorganized and skip the jc1 front end part
5035 if JC1_LITE set.
5036 (java_layout_classes): New function definition.
5037 (java_push_parser_context, java_init_lex, yyparse, yylex,
5038 yyerror): Prototype always declared. All other static function
5039 prototypes declared only if JC1_LITE is not set.
5040 * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
5041 declared in parse.h.
5042 (java_layout_classes): New function.
5043 (java_complete_expand_methods): No longer layout the class here.
5044 * parse-scan.y: New file.
5045 * jv-scan.c: New file.
5046
5047Tue Aug 25 10:17:54 1998 Tom Tromey <tromey@cygnus.com>
5048
5049 * gjavah.c (main): Handle -friend option.
5050 (friend_specs): New global.
5051 (generate_access): Handle friend_specs.
5052 (process_file): Likewise.
5053 (MAX_FRIENDS): New macro.
5054 (friend_count): New global.
5055 (print_cxx_classname): Added `prefix' argument. Ignore arrays.
5056 Changed all callers.
5057
5058Mon Aug 24 20:19:27 1998 Per Bothner <bothner@cygnus.com>
5059
5060 * jcf-dump.c (process_class): Move JCF_FINISH use to main,
5061 (main): Handle processing all the entries of a named .zip archive.
5062 * jcf-io.c (jcf_trim_old_input): New function.
5063 * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le): New macros.
5064
5065Mon Aug 24 07:35:13 1998 Per Bothner <bothner@cygnus.com>
5066
5067 * lang.c (flag_assume_compiled): Make default be on.
5068
5069Fri Aug 21 17:29:04 1998 Per Bothner <bothner@cygnus.com>
5070
5071 * jcf-dump.c: Add bunches of flags to control output more.
5072 (process_class): New function; support printing more than one class.
5073 (main): Support new --print-main and --javap flags.
5074 * jcf-reader.c (IGNORE_ATTRIBUTE): New hook.
5075 * jcf.h (CPOOL_INDEX_IN_RANGE): New macro.
5076
5077Thu Aug 20 14:24:47 1998 Per Bothner <bothner@cygnus.com>
5078
5079 Change mangling of dispatch table to match C++ vtable (w/thunks).
5080 * class.c (build_dtable_decl), java-tree.h: New function.
5081 (make_class_data): Call it.
5082 * decl.c (init_decl_processing): Likewise.
5083
5084Wed Aug 19 17:57:07 1998 Warren Levy <warrenl@cygnus.com>
5085
5086 * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
5087 soft_anewarray; adjust args passed.
5088 * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
5089 match _Jv_NewObjectArray.
5090
5091Wed Aug 19 09:33:23 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5092
5093 * decl.c (push_labeled_block, pop_labeled_block): New functions.
5094 * expr.c (loopup_label): Call create_label_decl.
5095 (create_label_decl): New function.
5096 (java_lang_expand_expr): Call expand_start_bindings with argument
5097 set to zero.
5098 * java-tree.h Added space after PROTO in function declarations
5099 when necessary.
5100 (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
5101 (create_label_decl, push_labeled_block): New function
5102 declarations.
5103 * lex.c (label_id): Initialize.
5104 (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
5105 switch.
5106 * parse.h Added space after PROTO in function declarations when
5107 necessary.
5108 (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
5109 LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
5110 LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
5111 PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
5112 macros.
5113 (struct parser_ctxt): New fields current_loop,
5114 current_labeled_block.
5115 (build_if_else_statement, patch_if_else_statement,
5116 add_stmt_to_compound, patch_exit_expr, build_labeled_block,
5117 generate_labeled_block, complete_labeled_statement,
5118 build_bc_statement, patch_bc_statement, patch_loop_statement,
5119 build_new_loop, build_loop_body, complete_loop_body): New function
5120 declarations.
5121 * parse.y (java_warning_count): New global variable.
5122 (label_id): New static variable.
5123 (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
5124 (block:): Return size_zero_node when block is empty.
5125 (empty_statement:): Return size_zero_node.
5126 (statement:): Implement supplemental action when for_statement: is
5127 reduced.
5128 (label_decl:): New rule.
5129 (labeled_statement:): Rewritten using label_decl. Actions
5130 implemented.
5131 (labeled_statement_nsi:): Likewise.
5132 (if_then_statement): Actions implemented.
5133 (while_expression): New rule.
5134 (while_statement:): Rewritten using while_expression. Actions
5135 implemented.
5136 (while_statement_nsi:): Likewise.
5137 (do_statement_begin:): New rule.
5138 (do_statement:): Rewritten using do_statement_begin. Actions
5139 implemented.
5140 (for_statement:): Rewritten using for_begin. Actions implemented.
5141 (for_statement_nsi:): Likewise.
5142 (for_header:, for_begin:): New rules.
5143 (for_init:): Actions implemented.
5144 (statement_expression_list:, break_statement:,
5145 continue_statement:): Likewise.
5146 (yyerror): Count number of issued warning(s).
5147 (java_report_errors): Report error(s) and/or warning(s).
5148 (java_complete_class): Use build_java_argument_signature to
5149 recompute completed method signature.
5150 (java_check_regular_methods): New locals method_wfl and aflags.
5151 Use method_wfl instead of lookup_cl during error reports. Fixed
5152 indentation and modified some error messages. Use
5153 lang_printable_name in method instead of the DECL_NAME. New code
5154 to issue warnings on methods not overriding corresponding methods
5155 private to a different package.
5156 (java_method_add_stmt): Call add_stmt_to_compound.
5157 (add_stmt_to_compound): New function.
5158 (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
5159 LOOP_EXPR, EXIT_EXPR and COND_EXPR.
5160 (build_if_else_statement, patch_if_else_statement,
5161 build_labeled_block, generate_labeled_block,
5162 complete_labeled_statement, build_new_loop, build_loop_body,
5163 complete_loop_body, patch_loop_statement, build_bc_statement,
5164 patch_bc_statement, patch_exit_expr): New functions.
5165 * typeck.c (build_java_signature): Build argument signature before
5166 enclosing it in between parenthesis.
5167
5168Mon Aug 17 17:44:24 1998 Warren Levy <warrenl@cygnus.com>
5169
5170 * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
5171 (JAVA_OBJS): Added reminder comment
5172
5173Thu Aug 13 10:01:45 1998 Nick Clifton <nickc@cygnus.com>
5174
5175 * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
5176 be interpreted as a long long.
5177
5178Thu Aug 13 14:34:07 1998 Warren Levy <warrenl@cygnus.com>
5179
5180 * decl.c (init_decl_processing): Use _Jv_InitClass, not
5181 soft_initialise_class. Use _Jv_NewMultiArray, not
5182 soft_multianewarray. Use _Jv_ThrowBadArrayIndex, not
5183 soft_badarrayindex. Use _Jv_CheckCast, not soft_checkcast. Use
5184 _Jv_CheckArrayStore, not soft_checkarraystore. Use
5185 _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
5186
5187Wed Aug 12 14:23:13 1998 Per Bothner <bothner@cygnus.com>
5188
5189 * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
5190 length_identifier_node): New global tree node constants.
5191 * parse.y (kw_super, kw_this, kw_length): Removed globals.
5192 Replace uses by super_identifier_node etc.
5193 * lex.c (kw_super, kw_this, kw_length): Don't initialize.
5194
5195 * parse.y (resolve_field_access): Don't special-case ".length" if
5196 flag_emit_class_files.
5197 (patch_array_ref): Leave as ARRAY_REF if flag_emit_class_files.
5198 * jcf-write.c (generate_bytecode_insns): Handle ARRAY_REF opcode
5199 and ARRAY.length.
5200
5201Tue Aug 11 11:31:55 1998 Per Bothner <bothner@cygnus.com>
5202
5203 * decl.c (init_decl_processing): Remove unused method_type_node fields.
5204 * class.c (make_method_value): Remove init for removed fields.
5205
5206 * class.c (layout_class): Use build_java_argument_signature.
5207 * java-tree.h (TYPE_ARGUMENT_SIGNATURE): New macro.
5208
5209 * typeck.c (push_java_argument_signature): Removed. Merged into ...
5210 (build_java_argument_signature): Use TYPE_ARGUMENT_SIGNATURE cache.
5211 (build_java_signature): Don't use push_java_argument_signature.
5212
5213 * typeck.c (lookup_argument_method): New function.
5214 * parse.y (java_check_regular_methods): Use lookup_argument_method
5215 instead of lookup_java_method2 followed by lookup_java_method.
5216
5217 * parse.y (check_method_redefinition): Minor optimization.
5218
5219 * jcf-write.c (generate_bytecode_insns): Handle RETURN_EXPR,
5220 MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
5221
5222Mon Aug 10 09:57:15 1998 Tom Tromey <tromey@cygnus.com>
5223
5224 * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
5225 c-pragma.o.
5226
5227 * gjavah.c (java_float_finite): Use K&R-style definition.
5228 (java_double_finite): Likewise.
5229 (generate_access): Now returns void. Changed all callers.
5230 (last_access_generated): Removed.
5231 (process_file): Only make a single pass over the .class file.
5232
5233Wed Jul 29 17:50:23 1998 Per Bothner <bothner@cygnus.com>
5234
5235 * class.c (get_dispatch_table): Add extra dummy vtable entry,
5236 for compatibility for G++ (with -fvtable-thunks).
5237 * expr.c (build_invokevirtual): Add one for extra dummy vtable entry.
5238
5239 * gjavah.c (process_file): Use public inheritance for super-class.
5240
5241Wed Jul 29 13:19:03 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5242
5243 * lex.c (java_init_lex): Initialize ctxp->package.
5244 * parse.h (struct parser_ctxt): package and package_len replaced
5245 by tree package, an identifier node. Field method_decl_list is
5246 gone. Fixed comments.
5247 (lookup_field_wrapper, merge_qualified_name, not_accessible,
5248 class_in_current_package): New function prototypes.
5249 * parse.y (array_type:): Set class loaded flag on primitive type
5250 arrays.
5251 (package_declaration:): Assign ctxp->package to the
5252 identifier node.
5253 (method_invocation:): Handle invocation of method qualified by
5254 `super'.
5255 (single_type_import_declaration:): Removed ambiguity check.
5256 (java_pop_parser_context): New local variable `next'. Reset and
5257 set IMPORT_CLASSFILE_NAME flags on current and previous import
5258 list.
5259 (java_accstring_lookup): Use new local macro COPY_RETURN.
5260 (lookup_field_wrapper): New function.
5261 (parser_qualified_classname): Use merge_qualified_name.
5262 (parser_check_super_interface): Broaden error message.
5263 (do_resolve_class): Check for qualified class name in the current
5264 compilation unit if appropriate.
5265 (process_imports): Check for already defined classes.
5266 (check_pkg_class_access): Got rid of call to
5267 get_access_flags_from_decl.
5268 (java_complete_expand_methods): Call safe_layout_class based on
5269 the current class size.
5270 (make_qualified_primary): Build a WFL qualification on primary if
5271 none exists.
5272 (merge_qualified_name): New function.
5273 (make_qualified_name): Use merge_qualified_name.
5274 (resolve_expression_name): Use safe_lookup_field.
5275 (resolve_field_access): Got rid of call to get_access_flags_from_decl.
5276 (resolve_qualified_expression_name): Likewise. Check on resolved
5277 element accessibility.
5278 (not_accessible_p, class_in_current_package): New functions.
5279 (maybe_access_field): Got rid of call to get_access_flags_from_decl.
5280 (patch_method_invocation_stmt): Merged common pieces. Check
5281 accessibility of invoked method.
5282 (check_for_static_method_reference): Add returned type in error
5283 message.
5284 (invocation_mode): Get rid of bogus check on PRIVATE methods.
5285 (refine_accessible_methods_list): Merged two conditions in test.
5286 (java_complete_class): Sanity check on stabilize_ref gone.
5287 * zextract.c (read_zip_archive): Cast lseek second argument to long.
5288
5289Tue Jul 28 21:39:22 1998 Per Bothner <bothner@cygnus.com>
5290
5291 * class.c (hashUtf8String): Fix - use new JavaSoft specification.
5292
5293Fri Jul 24 10:43:25 1998 Tom Tromey <tromey@cygnus.com>
5294
5295 * gjavah.c (F_NAN): Removed.
5296 (F_NAN_MASK): New macro.
5297 (F_POSITIVE_INFINITY): Removed.
5298 (F_NEGATIVE_INFINITY): Likewise.
5299 (java_float_finite): Rewrote.
5300 (D_NAN_MASK): Renamed.
5301 (java_double_finite): Rewrote.
5302 (D_POSITIVE_INFINITY): Removed.
5303 (D_NEGATIVE_INFINITY): Likewise.
5304
5305 * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
5306 If verbose, print underlying representation of value in hex.
5307
5308Fri Jul 24 14:14:32 1998 Per Bothner <bothner@cygnus.com>
5309
5310 * buffer.h, buffer.c: New files.
5311 * Makefile.in (JAVA_OBJS): Add buffer.o.
5312
5313 Support locals variables and writing their debug entries to .class.
5314 * jcf-write.c: Simplify some by user new buffer type.
5315 (vode_buffer_grow): Removed.
5316 (struct localvar_info): New type.
5317 (localsvars, localvartable): New buffers.
5318 (localvar_alloc, localvar_free): New functions.
5319 (generate_bytecode_insns): Handle local variables.
5320 (generate_classfile): Write LocalVariableTable attribute.
5321
5322Fri Jul 24 13:46:59 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5323
5324 * jcf-io.c (open_in_zip): Check the zipfile magic number.
5325 * zipfile.h (ZIPMAGIC): New macro.
5326
5327Fri Jul 24 10:43:25 1998 Tom Tromey <tromey@cygnus.com>
5328
5329 * Makefile.in (gjavah.o): Updated dependencies.
5330 (jcf-dump.o): Likewise.
5331 (all.indirect): Use ../gjavah.
5332 (../gjavah$(exeext)): Likewise.
5333 (clean): Don't remove gjavah.
5334 (clean): Remove parse.c, not java/parse.c.
5335 * Make-lang.in (java): Added gjavah.
5336 (gjavah$(exeext)): New target.
5337 (GJAVAH_SOURCES): New macro.
5338 (java.all.build): Added gjavah.
5339 (java.all.cross): Likewise.
5340 (java.rest.encap): Likewise.
5341 * config-lang.in (compilers, stagestuff): Added gjavah.
5342
5343Thu Jul 23 18:33:56 1998 Tom Tromey <tromey@cygnus.com>
5344
5345 * gjavah.c (java_float_finite): New function.
5346 (java_double_finite): Likewise.
5347 (F_POSITIVE_INFINITY): New macro.
5348 (F_NEGATIVE_INFINITY): Likewise.
5349 (F_NAN): Likewise.
5350 (D_POSITIVE_INFINITY): Likewise.
5351 (D_NEGATIVE_INFINITY): Likewise.
5352 (D_NAN): Likewise.
5353 (print_field_info): Use java_float_finite and java_double_finite.
5354
5355Thu Jul 23 15:28:24 1998 Per Bothner <bothner@cygnus.com>
5356
5357 * parse.y (method_header): Name "this" implicit argument.
5358
5359Wed Jul 22 15:47:30 1998 Per Bothner <bothner@cygnus.com>
5360
5361 * jcf-write.c: Write out LineNumberTable attribute in .class file.
5362 (linenumber_buffer, linenumber_ptr, linenumber_limit): New statics.
5363 (put_linenumber): New function.
5364 (generate_bytecode_insns, generate_classfile): Write line numbers.
5365
5366Wed Jul 22 14:39:00 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5367
5368 * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
5369 (lookup_name, build_known_method_ref, build_class_init,
5370 build_invokevirtual, invoke_build_dtable, match_java_method,
5371 build_field_ref, pushdecl_force_head, build_java_binop,
5372 binary_numeric_promotion, build_decl_no_layout,
5373 build_java_arrayaccess, build_newarray, build_anewarray,
5374 build_java_array_length_access, build_java_arraynull_check): New
5375 extern function prototypes.
5376 (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
5377 JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
5378 java-tree.h.
5379 * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
5380 to NULL
5381 * jcf.h (jcf_out_of_synch): New extern function prototype.
5382 * parse.h: Static/global function implemented in parse.y
5383 prototyped and declarations moved at the end of the file.
5384 (DECL_P): Check that the argument isn't null.
5385 (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
5386 JAVA_THIS_EXPR): No longer defined here. See java-tree.h
5387 (QUAL_DECL_TYPE): New macro.
5388 (PARAMS): Macro definition removed.
5389 * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
5390 (return_statement:): Call build_return.
5391 (field_access:): Call make_qualified_primary in sub rule.
5392 (method_invocation:): Build method invocation and call
5393 make_qualified_primary when processing primaries.
5394 (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
5395 get_type_from_signature.
5396 (java_check_regular_method): Extra integer 0 argument when calling
5397 lookup_java_method2.
5398 (lookup_java_interface_method2): Extra method DECL argument when
5399 calling lookup_java_interface_method2.
5400 (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
5401 COMPOUND_EXPR node.
5402 (java_complete_expand_method): Layout current class iff not
5403 already done. Don't process interface's methods.
5404 (java_complete_expand_method): Use super class only if it
5405 exists. Use current class otherwise.
5406 (make_qualified_primary): New function.
5407 (resolve_expression_name): Process qualified expression or
5408 expression from primary the same way.
5409 (resolve_expression_name): Two last arguments to
5410 resolve_field_access are now NULL_TREEs.
5411 (resolve_field_access): New variable is_static. Local field must
5412 be DECLs. is_static computed on field DECLs only. Append code in
5413 where_found to the field access if necessary. Use QUAL_DECL_TYPE
5414 to initialize field_type.
5415 (resolve_qualified_expression_name): New local variable,
5416 previous_call_static and is_static. Handle primaries with function
5417 calls, casts, array references and `this'. `super' now handled as
5418 `(super_class)this'. Use is_static to clarify boolean expressions.
5419 Added code to handle case where a proper handle is required to
5420 access a field. Use QUAL_DECL_TYPE where applicable.
5421 (maybe_access_field): New function.
5422 (patch_method_invocation_stmt): New arguments primary, where,
5423 is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
5424 deleted. Use `where' as a type to search from if specified. Check
5425 for static method reference where forbidden. Append primary or
5426 current_this to the argument list if not calling constructor nor
5427 static methods.
5428 (check_for_static_method_reference): New function.
5429 (patch_invoke): Layout the class on which new is done if
5430 necessary.
5431 (lookup_method_invoke): Changed format to report errors on
5432 methods.
5433 (qualify_ambiguous_name): New local variable this_found. Now
5434 handle things from primaries. Method call are considered
5435 expression names.
5436 (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
5437 changed into NULLs.
5438 (not_initialized_as_it_should_p): Comply with the new DECL_P.
5439 (java_complete_tree): New case fo RETURN_EXPR. Process function
5440 call arguments in separate function.
5441 (complete_function_arguments): New function.
5442 (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
5443 anymore.
5444 (patch_assignment): Take the return function slot into account as
5445 a RHS. Distinguish assignment from a return.
5446 (valid_ref_assignconv_cast_p): Use build_java_argument_signature
5447 when checking methods in interfaces.
5448 (resolve_type_during_patch): NULL argument to unresolve_type_p
5449 instead of NULL_TREE.
5450 (patch_newarray): Fixed typo in comment.
5451 (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
5452 (build_return, patch_return): New functions.
5453 * typeck.c (lookup_java_constructor): Fixed typo in comment.
5454
5455Tue Jul 21 12:10:04 1998 Per Bothner <bothner@cygnus.com>
5456
5457 * constants.c (find_name_and_type_constant, find_fieldref_index,
5458 find_methodref_index): New methods.
5459 * expr.c (build_invoke_non_interface): If flag_emit_class_files,
5460 just return given method. Also, rename to build_known_method_ref.
5461 (expand_invoke): Rename call to build_invoke_non_interface.
5462 * java-tree.h, parse.h: Update prototype.
5463 * parse.y, decl.c, jcf-parse.c: Suppress calls to back-end functions
5464 (such as expand_expr_stmt) if flag_emit_class_files.
5465 * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
5466 STACK_TARGET, IGNORE_TARGET): New macros.
5467 (code_buffer, code_ptr, code_limit, code_S, code_SP_max): New globals.
5468 (generate_bytecode_insn): New function to generate method's bytecode.
5469 (generate_classfile): Node generate Code attribute for a method.
5470 (code_buffer_grow, push_constant1, push_constant2, push_int_const,
5471 push_long_const, field_op, adjust_typed_op, maybe_wide):
5472 New functions used by generate_bytecode_insn.
5473
5474 * typeck.c (signature_include_return): Remove variable.
5475 (push_java_argument_signature, build_java_argument_signature): New.
5476 (build_java_signature): Use push_java_argument_signature.
5477 * parse.y: Use build_java_argument_signature instead of fiddling
5478 with signature_include_return.
5479
5480Fri Jul 17 09:48:51 1998 Tom Tromey <tromey@cygnus.com>
5481
5482 * gjavah.c (print_c_decl): Always generate JArray<>* for array
5483 types.
5484
5485 * Makefile.in (all.indirect): Added gjavah$(exeext).
5486 (gjavah$(exeext)): Added $(exeext).
5487 (clean): Likewise.
5488
5489Thu Jul 16 15:29:20 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5490
5491 * class.c (layout_class): Call to java_layout_parsed_class replace
5492 by safe_layout_class.
5493 * expr.c (build_java_array_length_access): Removed static storage
5494 class in the function definition.
5495 (build_java_arraynull_check): Likewise.
5496 Also fixed typos in two comments.
5497 * lex.c (java_init_lex): Initialize static global kw_length.
5498 (java_lex): Use BUILD_OPERATOR on RETURN_TK.
5499 * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
5500 java_lex_error.
5501 (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
5502 * parse.h (resolve_no_layout): New static function declaration.
5503 (get_identifier_in_static): Declaration removed.
5504 (java_layout_parsed_class): Function name declaration changed to
5505 safe_layout_class.
5506 (build_newarray_node, patch_newarray, resolve_type_during_patch,
5507 not_initialized_as_it_should_p, build_this): New static function
5508 declarations.
5509 (pushdecl_force_head, build_java_binop, int_fits_type_p,
5510 binary_numeric_promotion, stabilize_reference,
5511 build_decl_no_layout, build_java_arrayaccess): Extern function
5512 declarations moved into their own section.
5513 (build_newarray, build_anewarray, build_java_array_length_access,
5514 build_java_arraynull_check): New extern function declarations.
5515 (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
5516 (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
5517 fake tree codes.
5518 (CALL_CONSTRUCTOR_P): New macro.
5519 * parse.y (kw_length): New static global tree node.
5520 (return_statement): Tagged <node>.
5521 (RETURN_TK): Tagged <operator>.
5522 (variable_declarator_id:): Build variable declaration with an
5523 empty initialization value if a syntax error was found in the
5524 initialization part of the variable declaration.
5525 (statement_without_trailing_substatement:): return_statement: now
5526 uses the default rule.
5527 (return_statement:): Temporarily fixed to return NULL_TREE.
5528 (primary_no_new_array:): Call build_this when THIS_TK was parsed.
5529 (class_instance_creation_expression:): Class creation rules now
5530 call build_method_invocation upon reduction.
5531 (array_creation_expression:): Rules call build_newarray_node upon
5532 reduction.
5533 (dim_exprs:): Build a list of dimension expressions.
5534 (dim_expr:): Store location of the OSB_TK in the dimension
5535 expression node.
5536 (method_invocation:): Added a new error rule.
5537 (build_unresolved_array_type): WFL argument may also be an array
5538 on a primitive type. Name of the argument changed to reflect this.
5539 (method_declarator): Insert argument type at the beginning of the
5540 argument type list and later reverse the list.
5541 (unresolved_type_p): Argument 'returned' may be optionally
5542 NULL_TREE.
5543 (java_layout_class_from_source): Function renamed
5544 safe_layout_class.
5545 (resolve_and_layout): Now call resolve_no_layout and
5546 safe_layout_class.
5547 (resolve_no_layout): New function.
5548 (purify_type_name): New function.
5549 (complete_class_report_errors): Call purify_type_name during error
5550 report on a type not found.
5551 (process_imports): error_found local variable doesn't need to be
5552 initialized to zero.
5553 (declare_local_variables): New local type_wfl. Fixed typo in error
5554 message. type_wfl assigned to unresolved type and used to register
5555 incomplete type. Build a WFL around the variable initialization
5556 statement so that debug info can be generated on it.
5557 (source_start_java_method): Reverse argument list after they've
5558 been processed.
5559 (current_this): New static global variable.
5560 (java_complete_expand_methods): Set current_this when appropriate.
5561 (resolve_expression_name): Build correct static and non static
5562 field access bearing a simple name.
5563 (resolve_field_access): Resolve the length field of arrays. Handle
5564 f.m() cases.
5565 (patch_method_invocation_stmt): Set the type of the method
5566 invocation to error_mark_node. This value is later overridden by a
5567 valid type, if any. Don't handle qualified constructor invocation
5568 as qualified method invocation. Call lookup_method_invoke with its
5569 new flag. It's no longer necessary to access the selected method
5570 as the value of a tree list. Handle constructor invocation.
5571 (patch_invoke): Reverse argument list when invoking non interface
5572 methods. Insert call to new as the first argument of the
5573 constructor.
5574 (invocation_mode): Return a INVOKE_STATIC is the invoked method is
5575 defined within a final class. Return INVOKE_STATIC if the invoked
5576 method is a constructor.
5577 (lookup_method_invoke): New lc argument is a flag to indicate a
5578 constructor lookup. Now handle constructor lookup. Choose the most
5579 specific method in case several were matching the invocation
5580 requirements. Return a method decl instead of a tree list featuring
5581 one single method decl element.
5582 (refine_accessible_methods_list): New lc flag argument to
5583 indicate that a constructor is being looked up.
5584 (not_initialized_as_it_should_p): New function.
5585 (java_complete_tree): Now process fake tree codes
5586 JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
5587 save_expr on resolved function call arguments. Case on
5588 UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
5589 (patch_assignment): LHS can be a field access expression. When
5590 dealing with reference, lhs_type is the promoted type of the
5591 rhs_type, not the RHS. Use not_initialized_as_it_should_p where
5592 applicable.
5593 (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
5594 (patch_binop): Use not_initialized_as_it_should_p where
5595 applicable.
5596 (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
5597 (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
5598 where applicable.
5599 (resolve_type_during_patch): New function.
5600 (patch_cast): Call resolve_type_during_patch to resolve type and
5601 report error accordingly.
5602 (patch_array_ref): Use not_initialized_as_it_should_p where
5603 applicable. Array base expression is saved before being
5604 used. Promote the type of an array elements if it contains non
5605 builtin types.
5606 (build_newarray_node, patch_newarray, build_this): New functions.
5607
5608Thu Jul 16 10:46:47 1998 Tom Tromey <tromey@cygnus.com>
5609
5610 * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
5611 increment it in `for' statement.
5612 (print_field_info): If number is inf or nan, don't print it.
5613 (print_method_info): If method name is `delete', just ignore it.
5614 (print_c_decl): Special-case jstringArray.
5615
5616 * gjavah.c (help): New function.
5617 (no_argument): New function.
5618 (usage): Changed text.
5619 (main): Rewrote argument handling. Now handles -v, --help,
5620 --version.
5621 (version): New function.
5622 (found_error): New global.
5623 (main): Return found_error.
5624 (generate_access): Set found_error.
5625 (print_c_decl): Likewise.
5626
5627Wed Jul 15 10:36:27 1998 Tom Tromey <tromey@cygnus.com>
5628
5629 * gjavah.c (print_c_decl): Don't print "," when examining field.
5630 Skip type name when looking at "[L" types.
5631 (process_file): Now static.
5632 (generate_access): Now returns int.
5633 (last_access_generated): New global.
5634 (process_file): Clear last_access_generated; make multiple passes
5635 over the class.
5636 (print_field_info): Just return if generate_access returns true.
5637 (print_method_info): Likewise. Also, allow <init> functions to
5638 pass through.
5639 (print_c_decl): Added is_init argument. Print constructors
5640 properly.
5641 (print_cxx_classname): Use UTF8_GET to extract characters from
5642 string.
5643 (print_base_classname): New function.
5644 (print_class_decls): New function.
5645 (process_file): Use it.
5646 (utf8_cmp): New function.
5647
5648Mon Jul 13 14:21:47 1998 Nick Clifton <nickc@cygnus.com>
5649
5650 * lang-options.h: Format changed to match changes in gcc/toplev.c
5651 to implement a --help option.
5652
56531998-07-10 Brendan Kehoe <brendan@cygnus.com>
5654
5655 * decl.c (init_decl_processing): Revert change to dtable_type.
5656
5657Thu Jul 9 18:22:12 1998 Per Bothner <bothner@cygnus.com>
5658
5659 * java-tree.h (CLASS_P): Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
5660
56611998-07-08 Brendan Kehoe <brendan@cygnus.com>
5662
5663 * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
5664
5665 * lang.c (lang_init): Default flag_exceptions to 1, without
5666 checking to see if it's 2 first.
5667
5668Wed Jul 8 03:01:32 1998 Jeffrey A Law (law@cygnus.com)
5669
5670 * constants.c: Include "system.h".
5671 * decl.c: Likewise.
5672 * lang.c (flag_new_exceptions): Get via extern now.
5673 (lang_init_options): New functions. Turn on flag_new_exceptions.
5674
5675Tue Jul 7 12:56:48 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5676
5677 * lex.c (java_lex): Return 0 when we see an invalid character in
5678 the input.
5679
5680 * lex.c (java_read_char): Specify extra argument when calling
5681 java_lex_error.
5682 (java_read_unicode, java_parse_end_comment,
5683 java_parse_escape_sequence): Likewise,
5684 (java_lex): Specify extra argument when calling
5685 java_lex_error. Test that IDs are beginning with a legal character
5686 for IDs. Handle invalid characters with an error message and a
5687 call to java_lex_error.
5688 (java_lex_error): Adjust column position by new argument
5689 `forward'. Issue an error even if in the middle of reporting an
5690 other error.
5691
56921998-07-07 Brendan Kehoe <brendan@cygnus.com>
5693
5694 * jcf-io.c (find_class): Zero out BUFFER before we use it, since
5695 we don't explicitly put a null pointer when we're copying it.
5696
5697Tue Jul 7 09:38:38 1998 Tom Tromey <tromey@cygnus.com>
5698
5699 * gjavah.c (print_cxx_classname): New function.
5700 (super_class_name): Likewise.
5701 (print_super_fields): Removed.
5702 (in_super): Removed.
5703 (print_field_info): Never generate #defines.
5704 (print_c_decl): Changed generated types to match JNI. No longer
5705 print class name before method name.
5706 (print_method_info): Print "static" before static methods.
5707 Print "virtual" before non-final methods.
5708 (usage): Use exit(1), not exit(-1).
5709 (main): Likewise.
5710 (print_field_info): Use %.17g to print a double.
5711 (last_access): New globals.
5712 (process_file): Initialize last_access.
5713 (usage): Now static.
5714 (ACC_VISIBILITY): New define.
5715 (generate_access): New function.
5716 (print_field_info): Call it.
5717 (print_method_info): Likewise. Also, generate information for all
5718 methods, not just native methods. Return void.
5719 (print_c_decl): Return void.
5720 (print_field_info): Return void.
5721
5722Thu Jul 2 16:53:16 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5723
5724 * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
5725 processing the jc1 grammar file. Prefix bison functions and
5726 variables with java_.
5727 (parse.c): Dependencies on parse.h and lex.h
5728 * expr.c (build_java_arrayaccess): Function now global.
5729 * java-tree.h: Comment reorganized to carry on previous
5730 classification effort.
5731 (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
5732 RESOLVE_TYPE_NAME_P): New flags on WFLs.
5733 * jcf-parse.c (parse_source_file): java_parse_source_file renamed
5734 java_parse (new prefix java_ generated by bison).
5735 (java_layout_parsed_class, java_register_parsed_class): Function
5736 call removed.
5737 (yyparse): Removed unnecessary call to init_outgoing_cpool.
5738 * lex.c (static tree wfl_op): Variable deleted.
5739 (java_init_lex): Initialize kw_super and kw_this. Initialize more
5740 ctxp fields to NULL_TREE.
5741 (java_lex): No longer create WFL for operators. Filename caching
5742 mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
5743 created as STRING_CST and later expanded. Removed extra argument
5744 to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
5745 and SUPER.
5746 (build_wfl_node): Removed code in comments.
5747 * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
5748 store token and location data in the current bison token.
5749 * parse.h: Removed pre-processor based symbol prefixes hack. Moved
5750 static/extern function declaration at the beginning of the file.
5751 (struct qualification): Data structure definition deleted.
5752 (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
5753 (qualify_ambiguous_name): Function declaration modified. Function
5754 now returns nothing.
5755 (build_array_ref, patch_array_ref, make_qualified_name,
5756 resolve_qualified_expression_name, maybe_generate_clinit,
5757 resolve_field_access): New static function declarations.
5758 (build_java_arrayaccess): New extern function declaration.
5759 (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
5760 (CALL_EXPR_PRIMARY): Macro deleted.
5761 (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
5762 (struct parser_ctxt): Field initialized_final
5763 removed. non_static_initialized, static_initialized: New fields.
5764 * parse.y (static tree kw_super, static tree kw_this): New global
5765 static.
5766 (%union): tree wfl field of operator member replaced by int
5767 location. WFLs are non longer created for operators.
5768 (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
5769 (qualified_name:): Now calls make_qualified_name to build the
5770 identifier.
5771 (type_declaration:): Consider generating <clinit> when class
5772 parsing completed.
5773 (variable_declarator:): Directly build an assignment node when the
5774 variable is initialized when declared.
5775 (this_or_super:): Build a WFL and set current location when THIS
5776 or SUPER are parsed.
5777 (expression_statement:): Wrap statement around a WFL.
5778 (primary_no_new_array:): Fixed typo. Changed value returned by
5779 THIS_TK because of its new type (temporary).
5780 (dim_exprs:): Temporary fix because of OSB_TK's new type.
5781 (field_access:): Build qualified name with SUPER.
5782 (method_invocation:): Fixed returned value because of SUPER's new
5783 type.
5784 (array_access:): Use OSB_TK location information.
5785 (post_increment_expression:, post_decrement_expression:,
5786 unary_expression:, pre_increment_expression:,
5787 pre_decrement_expression:, unary_expression_not_plus_minus:,
5788 cast_expression:, multiplicative_expression:,
5789 additive_expression:, shift_expression:, relational_expression:,
5790 equality_expression:, and_expression:, exclusive_or_expression:,
5791 inclusive_or_expression:, conditional_and_expression:,
5792 conditional_or_expression:, assignment:): Use new location/token
5793 information available on operators.
5794 (create_class): Set super_decl_type to NULL_TREE when processing
5795 java.lang.Object.
5796 (register_fields): Field initialization is now a MODIFY_EXPR
5797 node. Chain initialization code to the matching lists (according
5798 the the field declaration modifiers).
5799 (maybe_generate_clinit): New function.
5800 (method_header): Don't set method's DECL_NAME to a WFL when adding
5801 methods to java.lang.Object.
5802 (resolve_and_layout): Now can return NULL_TREE if the type
5803 resolution fails. Otherwise, return the class DECL instead of its
5804 TYPE.
5805 (check_method_redefinition): Don't patch method DECL_NAME if it
5806 belongs to java.lang.Object.
5807 (process_imports): Simply assign error_found to the value returned
5808 by check_pkg_class_access.
5809 (declare_local_variables): Don't use their init statements (if
5810 any) when parsing error were previously found. Reuse MODIFY_EXPR
5811 build during parsing as an init statement.
5812 (java_method_add_stmt): Now return the current method body.
5813 (java_layout_parsed_class, java_register_parsed_class): Functions
5814 removed.
5815 (java_complete_expand_methods): Initialize the constant pool on a
5816 per class basis. Layout the classes before expanding their method
5817 bodies. Don't try expand artificial constructor code if error were
5818 found. Make the classes data and register them if no error were
5819 found.
5820 (java_complete_expand_method): Retrieve an artificial constructor
5821 argument list before entering its body. Assign the top block to
5822 the artificial constructor function body and set types of declared
5823 blocks and compound statements to void. Walk method body if not an
5824 artificial constructor.
5825 (make_qualified_name, cut_identifier_in_qualified): New functions.
5826 (resolve_expression_name): Fixed comments. Save/restore the
5827 current class CLASS_LOADED_P flag value. Build non qualified
5828 static field access and handle qualified expression names.
5829 (resolve_field_access, resolve_qualified_expression_name): New
5830 functions.
5831 (patch_method_invocation_stmt): Use the new expression resolution
5832 scheme, calling resolve_field_access when the function call is
5833 resolved as an expression.
5834 (qualify_ambiguous_name): Function rewritten to work on qualified
5835 expression produced by make_qualified_name.
5836 (java_complete_tree): Promote type when function's argument are
5837 RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
5838 the assignment to discover further errors if RHS is a expression
5839 name that fails to evaluate. Declare LHS initialized even though
5840 the assignment failed. Don't use the location variable and removed
5841 extra argument in patch function calls. Now handle the ARRAY_REF
5842 case and build internal string representation when STRING_CSTs are
5843 walked.
5844 (build_method_invocation): Don't wrap function call around a WFL.
5845 (build_assignment): Likewise. Use the operator location
5846 information.
5847 (patch_assignment): Handle array access LHSs. Handle error
5848 provenance, resulting in a better error report.
5849 (build_binop): Use op_location from operator as binop location
5850 information.
5851 (build_unaryop, build_incdec, build_cast): Likewise.
5852 (patch_binop): Extract location information from the node. Fixed
5853 typo in error message.
5854 (patch_unary_op): Extract location information from the node.
5855 (build_array_ref, patch_array_ref): New functions.
5856
5857Wed Jul 1 13:11:36 1998 Tom Tromey <tromey@cygnus.com>
5858
5859 * expr.c (expand_java_INSTANCEOF): Changed calling convention to
5860 match _Jv_IsInstanceOf.
5861 * decl.c (init_decl_processing): Use _Jv_NewArray, not
5862 soft_newarray. Use _Jv_IsInstanceOf, not soft_instanceof.
5863
5864Tue Jun 30 14:12:54 1998 Tom Tromey <tromey@cygnus.com>
5865
5866 * decl.c (init_decl_processing): Functions are now named
5867 _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
5868
5869Mon Jun 29 14:47:10 1998 Per Bothner <bothner@cygnus.com>
5870
5871 * java-tree.h (load_class): Add prototype.
5872 * class.c (is_compiled_class): Add missing arg to load_class.
5873 * expr.c (expand_java_NEW): Call load_class.
5874 * parse.y (process_import): Removed bogus use of void return value.
5875
5876Thu Jun 25 11:50:48 1998 Per Bothner <bothner@cygnus.com>
5877
5878 * decl.c, java-tree.h (soft_athrow_node): Renamed to soft_node.
5879 Function name is "_Jv_Throw" instead of "soft_athrow".
5880 * decl.c, java-tree.h (soft_new_node): Renamed to alloc_object_node.
5881 Function name is "_Jv_AllocObject" instead of "soft_new".
5882 Takes an extra parameter (object size).
5883 * expr.c: Update calls.
5884
5885Wed Jun 24 13:59:02 1998 Per Bothner <bothner@cygnus.com>
5886
5887 * lex.c (java_get_line_col): Handle end-of-file.
5888 * except.c (expand_end_java_handler): Handle null type (i.e. finally).
5889
5890Wed Jun 24 09:22:34 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5891
5892 * lang.c (lang_init): Make -fexceptions the default.
5893 * except.c (maybe_start_try, maybe_end_try): Don't do anything if
5894 exception handling is not turned on.
5895
5896Tue Jun 23 10:17:09 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5897
5898 * lang.c (flag_new_exceptions): Make this this default.
5899 * decl.c (end_java_method): Call emit_handlers.
5900 * except.c (method_init_exceptions): Set language code and version.
5901 (expand_start_java_handler): Enable exception, and call
5902 expand_eh_region_start.
5903 (expand_end_java_handler): Enable exception, and set up catch blocks.
5904 (emit_handlers): New routine to generate the saved handlers.
5905 * java-except.h (emit_handlers): Add prototype.
5906
5907Fri Jun 12 11:31:24 1998 Per Bothner <bothner@cygnus.com>
5908
5909 We used to have three different representations of the constant pool:
5910 the CPool structure, the tree_constant_pool, and the constructures
5911 used to build the Class object (which may need class and string
5912 constants) in compiled code. None were appropriate for compiling
5913 to .class files, so I did a major overhaul.
5914
5915 First, the tree_constant_pool array was removed. Things were
5916 modified to the CPool structure in the JCF could be used.
5917 Second, a "capacity" field was added to the CPool, and functions
5918 written to search for a matching constant, adding one if not found.
5919 The code that generated the Class object was changed to use a CPool.
5920 The actual TREE_LISTs used to build the CONSTRUCTORs used for
5921 the static Class object are now only in build_constants_constructor.
5922 Finally, I wrote code which can generate a .class file (including its
5923 constant pool) from the RECORD_TYPE of a class. This is a big step
5924 on the way to compiling Java source into .class files.
5925
5926 * jcf-write.c: New file. Writes out a RECORD_TYPE as a .class file.
5927 * Makefile.in (JAVA_OBJS): Added jcf-write.o.
5928
5929 * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
5930 CONSTANT_ResolvedString, CONSTANT_ResolvedClass): New macros.
5931 (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
5932 COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
5933 (COMPONENT_REF_CLASS): Replaced by COMPONENT_REF_CLASS_INDEX.
5934 (lang_type): Removed constant_pool field.
5935 * jcf.h (CPool): Renamed size to count. Added field capacity.
5936 (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
5937 CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT): New macros.
5938 Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
5939
5940 * constants.c (current_constant_pool_tags, current_constant_pool_data,
5941 current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
5942 * constants.c (build_constants_constructor): Use new outgoing_cpool.
5943 (set_constant_entry, find_constant1, find_constant2,
5944 find_class_constant, count_constant_pool_bytes, write_constant_pool,
5945 find_utf8_constant, find_class_or_string_constant): New functions.
5946
5947 * jcf-parse.c (load_class): Don't save/restore tree-constant_pool.
5948 (get_constant): Use current_jcf.cpool instead of tree_constant_pool.
5949 (give_name_to_class, get_class_constant): Likewise.
5950 * jcf-parse.c, java-tree.h (tree_constant_pool): Removed.
5951 (get_name_and_type_constant, get_ref_constant): Removed.
5952 * parse.h (parser_ctxt): Remove field tree_constant_pool.
5953 * parse.y: Don't save/restore tree_constant_pool.
5954 * verify.c (verify_jvm_instructions): Update for new approach.
5955 * expr.c (expand_invoke, expand_java_field_op): Likewise.
5956
5957 * lang-options.h: Added -femit-class-file, -femit-class-files.
5958 * lang.c (flag_emit_class_files), java-tree.h: New flag.
5959 (lang_f_options): Added "emit-class-file(s)".
5960
5961 * expr.c (build_java_arrayaccess): Generate more efficient array
5962 bounds checking, by using unsigned compare.
5963
5964 * expr.c (expand_invoke): Re-arrange error checks to make more robust.
5965
5966Wed Jun 10 17:34:42 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5967
5968 * parse.h: New comment on the handling of unresolved type
5969 identifiers. JDEPs are now part of the jdep_code enum.
5970 (typedef struct jdep): Now use enum jdep_code or int, depending on
5971 availability. Both are narrowed down to an 8 bits bitfield.
5972 (CALL_EXPR_PRIMARY): Fixed comment.
5973
5974Wed Jun 10 10:54:39 1998 Tom Tromey <tromey@cygnus.com>
5975
5976 * Make-lang.in (java): Added gjavac and jvgenmain.
5977 (java.start.encap): Depend on gjavac.
5978 (java.rest.encap): Depend on jvgenmain.
5979
5980 * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
5981 (JAVA_CROSS_NAME): Likewise.
5982 (java.all.build): Depend on jvgenmain and gjavac.
5983 (java.all.cross): Depend on jvgenmain and gjavac-cross.
5984 (jvgenmain$(exeext)): New target.
5985 (java.install-common): Wrote.
5986 * config-lang.in (compilers, stagestuff): Added gjavac and
5987 jvgenmain.
5988
5989Wed Jun 10 12:19:04 1998 Dave Brolley <brolley@cygnus.com>
5990
5991 * lang.c (lang_decode_option): New argc/argv interface.
5992
5993Tue Jun 9 18:12:46 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
5994
5995 * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
5996 * decl.c (build_decl_no_layout): New function.
5997 * expr.c (java_lang_expand_expr): Layout declarations found in
5998 blocks before they're pushed.
5999 * jcf-parse.c (load_class): Save current line when parsing class
6000 file.
6001 (parse_source_file): Register class before expanding their
6002 methods.
6003 * lang.c (put_decl_node): Produce `null' when `void *' is
6004 processed.
6005 * lex.c (static tree wfl_op): New static global, for error report
6006 on casts.
6007 (java_init_lex): wfl_operator and wfl_op initialized
6008 here. Filename caching added for wfl_op. Return wfl_op when `(' is
6009 parsed.
6010 * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
6011 patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
6012 build_unresolved_array_type): New static function definitions.
6013 (build_decl_no_layout): New extern function declared.
6014 (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
6015 faulty modifier exists.
6016 (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
6017 (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
6018 (UNARY_PLUS_EXPR): New fake operator.
6019 (struct parser_ctxt): New field osb_number.
6020 * parse.y (static tree wfl_operator): New static WFL for operator
6021 bound error messages.
6022 (DECR_TK, INCR_TK): Moved.
6023 (OP_TK): Tagged <operator>.
6024 (array_type:): Now call build_unresolved_array_type.
6025 (dim_expr:): Count the number of '[' seen.
6026 (post_increment_expression, post_decrement_expression,
6027 pre_increment_expression, pre_decrement_expression,
6028 unary_expression_not_plus_minus, unary_expression:): Actions are
6029 now building the corresponding unary expressions.
6030 (cast_expression:): Actions are now building cast expressions.
6031 (build_unresolved_array_type): New function.
6032 (create_interface): Reset the number of declared interfaces.
6033 (create_class): Likewise.
6034 (method_header): Methods declared within the scope of an interface
6035 are now implicitly set public and abstract.
6036 (java_complete_class): Variable's and parameter's type are patched
6037 with a promoted type.
6038 (declare_local_variables): Resolved non builtin types are promoted
6039 before being used to build a variable decl. Removed type patch
6040 posted on variable initialization statement.
6041 (source_start_java_method): Use build_decl_no_layout to build the
6042 decl of a parameter of incomplete type.
6043 (java_register_parsed_class): Process interfaces too. Call
6044 rest_of_decl_compilation on each processed class declarations.
6045 (java_complete_expand_methods): Don't attempt to expand things in
6046 interfaces.
6047 (java_complete_tree): Process CONVERT_EXPR, even though it always
6048 has a type. Propagate error_mark_node to node's type too. Promote
6049 method's call argument type and return error_mark_node if
6050 argument's completion didn't work. MODIFY_EXPR can have a WFL as a
6051 RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
6052 handle unary operator nodes.
6053 (build_assignment): Added comment.
6054 (print_int_node): New function.
6055 (patch_assignment): New second argument. New error handling. Use
6056 print_int_node. Handle references. Use can_cast_to_p to issue
6057 different error message according to the context and check upon
6058 the initialization of the RHS.
6059 (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
6060 (operator_string): Handle more operators.
6061 (patch_binop): No longer use a function static
6062 wfl_operator. Improved error message on shift distance.
6063 (build_unaryop, build_incdec, build_cast, patch_unaryop,
6064 patch_cast): New functions.
6065
6066Fri Jun 5 18:03:07 1998 Per Bothner <bothner@cygnus.com>
6067
6068 * jvspec.c: New file.
6069 * Make-lang.in: New rules to build gjavac from jvspec.c and ../gcc.c.
6070
6071 * java-tree.h (identifier_subst): Add declaration.
6072
6073Thu Jun 4 13:44:23 1998 Tom Tromey <tromey@cygnus.com>
6074
6075 * jvgenmain.c (main): Generate call to JvRunMain.
6076
6077 * class.c (make_class_data): Push value for "sync_info" field.
6078 * decl.c (init_decl_processing): Push "sync_info" field.
6079
6080Wed Jun 3 20:39:14 1998 Per Bothner <bothner@cygnus.com>
6081
6082 * typeck.c (build_java_array_type): Set TYPE_NAME to actual
6083 Java (source) name, not signature.
6084 Set TYPE_ALIGN to (at least) that of element_type.
6085
6086Tue Jun 2 15:19:19 1998 Per Bothner <bothner@cygnus.com>
6087
6088 * class.c: Moved classname-mangling-rekated code to ...
6089 * mangle.c: ... this new file.
6090 * jvgenmain.c: New program (needs mangle.c) to generate main program.
6091 * Makefile.in: Update for above changes.
6092
6093Mon Jun 1 09:58:36 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6094
6095 * expr.c (truthvalue_conversion): Convert integer and floating
6096 point value to their truth value.
6097 * lex.c (java_lex): Handle the `null' literal.
6098 * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
6099 (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
6100 ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
6101 New macros.
6102
6103 * parse.y: Reorganization/documentation on token declaration.
6104 (binop_lookup[]): New added new tree codes.
6105 (relational_expression): Build corresponding binary operators.
6106 (equality_expression, conditional_and_expression,
6107 conditional_or_expression): Likewise.
6108 (java_complete_class): Fix crash in debug message.
6109 (java_complete_tree): Check initialization of method call
6110 arguments. Further bogus node evaluation to detect more error
6111 during assignments. Handles more binary operators.
6112 (patch_assignment): Use DECL_P.
6113 (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
6114 code.
6115 (operator_string): Handle more case. Compacted source.
6116 (patch_binop): Changed function comment. Checking for
6117 uninitialized first operand takes the compound assignment into
6118 account and uses DECL_P. Checking for uninitialized second operand
6119 delayed to routine's end. Use macros to issue type bound error
6120 messages and issue messages on both operands if their types are
6121 different. Force fixed type into node. Handle all binary
6122 operators.
6123
6124Wed May 27 10:30:31 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6125
6126 * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
6127 * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
6128 build operator node and return tokens.
6129 * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
6130 * parse.h (java_complete_tree): Changed returned type in prototype.
6131 (build_method_invocation, build_assignment, patch_assignment,
6132 patch_binop): New static function declarations.
6133 (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
6134 BUILD_EXPR_WFL): New macros.
6135 * parse.y (enum tree_code binop_lookup[]): New static for token to
6136 TREE_CODE lookup.
6137 (%union): Parser union has new sub-structure `operator'.
6138 (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
6139 PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
6140 ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
6141 ASSIGN_ANY_TK): Tokens tagged `operator'.
6142 (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
6143 AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
6144 MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
6145 REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
6146 (assignment_operator:): Rule tagged `operator'.
6147 (expression_statement:): Re-installed default rule.
6148 (method_invocation:): Sub rules call build_method_invocation.
6149 (postfix_expression:): Don't attempt to resolve name here. Just
6150 return an ID.
6151 (multiplicative_expression:): Sub-rules build corresponding binop
6152 expression node.
6153 (additive_expression:, shift_expression:, and_expression:,
6154 exclusive_or_expression:, inclusive_or_expression:): Likewise.
6155 (assignment:): Sub rule invoke build_assignment.
6156 (assignment_operator:): Default rules on sub rules.
6157 (force_error): Added documentation on this variable.
6158 (declare_local_variables): Build initialization calling
6159 build_assignment.
6160 (expand_start_java_method): Removed unused rtx declaration. Mark
6161 arguments as already initialized.
6162 (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
6163 (java_complete_expand_methods): Don't process next method if
6164 completion of the previous one triggered errors.
6165 (java_complete_expand_method): Call source_end_java_method if no
6166 error were found during completion.
6167 (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
6168 locals declaratilon. Handle names found within a class. Return
6169 error_mark_node when things aren't found.
6170 (patch_method_invocation_stmt): Return error_mark_node on failures.
6171 (patch_invoke): Removed unused local. Return the correct node.
6172 (java_complete_tree): Now returns a value. The BLOCK section binds
6173 local identifiers and the type of a BLOCK is now void. Assign the
6174 result of operand completion on COMPOUND_EXPR. Assign the
6175 encapsulated node of a WFL to the result of its completion, except
6176 when the node is an identifier. Now handle MODIFY_EXPR and several
6177 binary operators. Return error_mark_node on errors.
6178 (build_method_invocation, build_assignment, patch_assignment,
6179 build_binop, operator_string, patch_binop): New functions.
6180 * typeck.c (binary_numeric_promotion): New function.
6181
6182Thu May 21 12:01:04 1998 Per Bothner <bothner@cygnus.com>
6183
6184 * class.c (identifier_subst): New convenience wrapper for ident_subst.
6185 Replace most uses of ident_subst by identifier_subst.
6186
6187 * class.c (push_class_static_dummy_field): Removed function.
6188 (build_class_ref): Find Class object decl by looking up "CNAME.class",
6189 instead of looking got "class" static field. Create that decl here.
6190 (class_identifier_node): Removed; no longer needed.
6191 (init_class_processing): Don't init class_identifier_node.
6192 * jcf-parse.c (jcf_parse): Don't call push_class_static_dummy_field.
6193 Do nreverse 0 times (instead of twice) for Object and Class.
6194 * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
6195
6196Wed May 20 16:35:04 1998 Per Bothner <bothner@cygnus.com>
6197
6198 * jcf-parse.c (parse_class-file): Set lino to smallest line number,
6199 while initializing linenumber_count and linenumber_table.
6200 Do it before init_function_start (which calls emit_line_note).
6201 * expr.c (expand_byte_code): Don't need to clear lineno here.
6202
6203Mon May 18 16:23:32 1998 Tom Tromey <tromey@cygnus.com>
6204
6205 * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
6206 then mangle number as _N_.
6207
6208 * class.c (mangle_class_field): New function.
6209 (build_class_ref): Set assembler name of class reference using
6210 mangle_class_field.
6211 (push_class_static_dummy_field): Likewise.
6212
6213Sun May 17 12:52:35 1998 Michael Tiemann <tiemann@cygnus.com>
6214
6215 * parse.y (source_start_java_method): Use TREE_SET_CODE instead
6216 of assigning to TREE_CODE. The latter method exploits a feature
6217 of GCC that is not ANSI compliant.
6218
6219Thu May 12 13:44:27 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6220
6221 * decl.c (pushdecl_force_head): New function.
6222 (pushlevel): Removed conditional printf.
6223 (complete_start_java_method): Don't enter local variable scope if
6224 function is compiled from source code.
6225 * expr.c: parse.h now included
6226 (java_lang_expand_expr): New function.
6227 * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
6228 printf. Terminate buffer when doing directories.
6229 * jcf-parse.c (parse_source_file): Call lang_init_source before
6230 parsing and before code generation.
6231 * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
6232 use printf if the macro is defined.
6233 * lang.c (lang_init): Install lang_expand_expr hook on
6234 java_lang_expand_expr.
6235 (java_dummy_print): New function.
6236 (lang_init_source): New function.
6237 * lex.c (java_lex): Remember location of an opening brace at the
6238 second nesting level.
6239 (java_is_eol): Unget character seen after a CR if it is EOF.
6240 * parse.h: Now includes lex.h
6241 (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
6242 printf if the macro is defined.
6243 (expand_start_java_method, build_expr_block, enter_block,
6244 exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
6245 New static function declarations.
6246 (pushdecl_force_head): New extern function declaration.
6247 (INCOMPLETE_TYPE_P): New macro.
6248 (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
6249 (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
6250 BLOCK_EXPR_ORIGIN): New macros.
6251 (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
6252 DECL_SOURCE_LINE_LAST): New macros.
6253 (struct parser_ctxt): Removed field current_method_decl, redundant
6254 with the field current_function_decl. Added fields
6255 first_ccb_indent1 and pending_block.
6256 * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
6257 BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
6258 tagged <node>
6259 (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
6260 (compilation_unit:): Cosmetic on sub rule.
6261 (type_declaration:): Cosmetic on sub rules. Added an error rule.
6262 (variable_initializer:): Installed default rule on expression:.
6263 (method_declaration:): method_header: starts a new
6264 method. method_body: installs the function body, absorbs blocks
6265 emitted for temporary variable scopings, pops function's body block
6266 and merges function's last statement lineno in DECL_SOURCE_LINE.
6267 (method_body:): Installed default rules.
6268 (block:): Call enter_block when an opening brace is seen. Absorb
6269 scoping blocks and call exit_block when a closing brace is seen.
6270 (block_statement:): Cosmetic changes.
6271 (method_invocation:): Create WFL around CALL_EXPR node.
6272 (patch_stage): Added comment around definition.
6273 (method_header): Try to use first_ccb_indent1 as the first line of
6274 the method, so BP debug info are emitted at the first opening
6275 brace of the function. If the function has no body, use the
6276 location of the function's name. Override currently defined method
6277 name with the matching WFL so we can point redefinition errors
6278 using the location where the function's name was declared.
6279 (check_abstract_method_header): Interprets DECL_NAME as an
6280 identifier or as a WFL, accordingly.
6281 (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
6282 (check_method_redefinition): Use DECL_NAME as a WFL. Extract
6283 location and name information out of it and reinstall DECL_NAME to
6284 its original identifier node value.
6285 (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
6286 function's source code).
6287 (read_import_dir): Test the value returned by find_class and issue
6288 a fatal accordingly.
6289 (declare_local_variables): Push a new block for the scope of the
6290 new variable(s) if code has been already generated at that nesting
6291 level. Pinpoint redefinition errors using the variable id
6292 WFLs. Generate initialization code if necessary. If the variable
6293 type is incomplete, register a patch on its decl.
6294 (source_start_java_method): Rewritten. Define a new block for the
6295 function's parameters. Build parameter decl out of function's
6296 arguments and register them for a patch if their types are
6297 incomplete.
6298 (expand_start_java_method): Includes the part of
6299 source_start_java_method that was pushing the parameter decls and
6300 completing the method start code.
6301 (source_end_java_method): Removed call the expand_end_bindings and
6302 poplevel (already taken care of). Reinstall function's arguments
6303 and get function's last line of code before calling
6304 expand_function_end.
6305 (java_method_add_stmt): New comment before the function's
6306 code. Complement the second operand of the current COMPOUND_EXPR
6307 if necessary.
6308 (java_complete_expand_methods): Don't generate debug info on line
6309 zero when expanding a generated constructor.
6310 (java_complete_expand_method): Set start and end line numbers for
6311 a artificially generated constructor to one and manually call
6312 enter_block and exit_block when defining it. For all methods:
6313 expand function's start calling the new expand_start_java_method
6314 and invoke java_complete_tree on the effective method's body, if
6315 any.
6316 (resolve_expression_name): Now use lookup_name_in_blocks to search
6317 local variable decls and print out an error when variables are
6318 undefined.
6319 (patch_method_invocation_stmt): Inserted comment before the
6320 function's code.
6321 (lookup_method_invoke): Chain method's arguments using chainon
6322 with the current arg list as a second argument. Inserted missing
6323 IDENTIFIER_POINTER when reporting an error on methods not found.
6324 (refine_accessible_methods_list): Don't retain constructors.
6325 (patch_arguments): Function removed.
6326 (java_complete_tree): Inserted comment before the function's
6327 code. New case for BLOCKs. Moved the WFL case a bit
6328 further. Complete function's arguments.
6329 (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
6330 maybe_absorb_scoping_blocks): New functions.
6331
6332Mon Apr 27 10:50:05 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6333
6334 * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
6335 previously set.
6336 * jcf-parse.c (parse_source_file, java_error_count): New forward
6337 and extern declarations.
6338 (java_parse_abort_on_error): Macro moved.
6339 (jcf_parse_source): fatal called if fopen fails. Now calls
6340 parse_source_file.
6341 (parse_source_file): New parse_only parameter. Reflects the
6342 elimination of the second pass.
6343 (yyparse): parse_source_file called with argument set to 0.
6344 * jcf.h (JCF_ZERO): Sets java_source to zero.
6345 * lex.c (java_init_lex): pass argument is gone. Function modified
6346 to be called once during the analysis of a file.
6347 (java_unget_unicode): Fixed typo in fatal message.
6348 (java_get_line_col): Likewise.
6349 (java_lval): Likewise. String literals no longer built during
6350 second pass.
6351 * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
6352 account.
6353 * parse.h (MODIFIER_WFL): New macro.
6354 (parse_check_super, parser_check_super_interface): Now return int.
6355 (parser_chain_incomplete_item, not_builtin_p,
6356 complete_method_decl): Declarations removed.
6357 (build_method_invocation_stmt, build_invoke): Renamed using the
6358 `patch' instead of `build'
6359 (register-incomplete_type, obtain_incomplete_type,
6360 java_complete_tree, java_complete_expand_method,
6361 unresolved_type_p, create_jdep_list): New function declarations.
6362 (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
6363 END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
6364 (jdep): New typedef on new struct _jdep.
6365 (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
6366 JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
6367 JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
6368 JDEP_RESOLVED_P): New macros.
6369 (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
6370 JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
6371 JDEP_VARIABLE): New enum values and jdep kinds.
6372 (jdeplist): New typedef on struct _jdeplist.
6373 (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
6374 macros.
6375 (CALL_EXPR_PRIMARY): New macro.
6376 (struct parser_ctxt): Fields java_pass, current_method_decl,
6377 method_decl_list deleted. New field jdeplist.
6378 (INCOMPLETE_P): Macro deleted.
6379 * parse.y (single_type_import_declaration:): Removed pass switch.
6380 (type_import_on_demand_declaration): Likewise.
6381 (field_declaration:): Removed pass switch on all sub rules.
6382 (class_declaration:): Call the complete_class_decl removed on
6383 class_body rules.
6384 (method_declaration:): Removed second pass switch. No longer chain
6385 methods decl when method_header reduced.
6386 (method_header:): Sub rules no longer depend on pass switch.
6387 (method_declarator:): Likewise.
6388 (method_body:): Likewise.
6389 (abstract_method_declaration:): Likewise.
6390 (block_statement:): Likewise.
6391 (local_variable_declaration:): Likewise.
6392 (argument_list:): Likewise.
6393 (method_invocation:): Likewise. Call to build_method_invocation_stmt
6394 removed. Partial CLASS_EXPR tree node built instead.
6395 (postfix_expression:): Removed pass switch on all sub rules.
6396 (java_pop_parser_context): Free classd_list content.
6397 (yyerror): Call obstrack_grow0 to finalize error message.
6398 (check_class_interface_creation): Comment modified to reflect new
6399 returned value meaning. Removed second pass switch. Return 1 if an
6400 error was found, 0 otherwise. Adjust pointer on filename if a
6401 leading path separator was found.
6402 (maybe_create_class_interface_decl): Removed first pass switch
6403 when linking the class decl to the class_list. Install a new
6404 jdep_list for the class.
6405 (add_superinterfaces): List of unresolved interfaces is
6406 gone. Unresolved interfaces are directly added to the current
6407 dependencies list.
6408 (create_interface): Second pass shortcut removed.
6409 ctpx->modifier_ctx access through MODIFIER_WFL.
6410 (create_class): Second pass shortcut removed. Call to
6411 register_incomplete_type replaces the call to
6412 parser_chain_incomplete_item.
6413 (complete_class_decl): Function removed.
6414 (duplicate_declaration_error): New way of retrieving redeclared
6415 item type.
6416 (register_fields): Call to lookup_modifier_cl replaced by
6417 MODIFIER_WFL. New way of handling unresolved type, using
6418 unresolved_type_p and obtain_incomplete_type.
6419 register_incomplete_type replaces call to parser_chain_incomplete_item.
6420 (patch_stage): New static global variable.
6421 (method_header): New way of handling unresolved type, using
6422 unresolved_type_p and obtain_incomplete_type. patch_stage used to
6423 indicates that the method decl needs to be patched.
6424 (check_abstract_method_header): Call to lookup_modifier_cl
6425 replaced by MODIFIER_WFL.
6426 (method_declarator): Incomplete argument type are registered
6427 calling register_incomplete_type. Patch on the declared method is
6428 issued in that case.
6429 (unresolved_type_p): New function.
6430 (parser_check_super_interface): New comment to reflect function's
6431 modified returned type (int). Function and has a new argument
6432 this_wfl. Call to parse_error_context uses this_wfl instead of
6433 relying on lookup_cl.
6434 (parser_check_super): Comment reflects function's new returned
6435 type (int). Function returns non zero value on error.
6436 (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
6437 register_incomplete_type, jdep_resolve_class): New functions to
6438 handle incomplete types in declarations.
6439 (java_complete_class): Rewritten to work with the new incomplete
6440 type handling scheme.
6441 (complete_class_report_errors): Likewise.
6442 (complete_method_decl): Removed: it jobs is now handled by
6443 java_complete_class.
6444 (do_resolve_class): Class loaded in not already loaded and not
6445 found in Java source code.
6446 (java_check_regular_methods, java_check_abstract_methods): Don't
6447 call complete_method_decl anymore.
6448 (lookup_modifier_cl, not_builtin_p): Functions deleted.
6449 (read_import_dir): Got rid of the pass number dependency.
6450 (declare_local_variables): New handling of unresolved types (patch
6451 issued).
6452 (source_start_java_method): New parameter level. Function called
6453 with level set to 1 when argument types are potentially
6454 unresolved. Called to complete the job with level set to 2 once
6455 types are complete.
6456 (source_end_java_method): Call to permanent_allocation
6457 removed. Waiting to be replaced by a more suitable obstack
6458 management.
6459 (java_complete_expand_methods, java_complete_expand_method,
6460 java_expand_finals): New functions.
6461 (build_method_invocation_stmt): Renamed
6462 patch_method_invocation_stmt. Extracts function call expression
6463 (wfl) and arguments (args) from CALL_EXPR tree operands.
6464 (build_invoke): Renamed patch_invoke. Fixed typo in fatal
6465 call. Patch the function and argument operand of the CALL_EXPR
6466 tree argument.
6467 (patch_argument, java_complete_tree): New functions.
6468
6469Mon Apr 20 18:26:57 1998 Per Bothner <bothner@cygnus.com>
6470
6471 Recover from missing fields and methods (i.e. error instead of fatal).
6472 * decl.c, java-tree.h (TYPE_identifier_node): New global constant.
6473 * expr.c (expand_invoke): Recover from missing method.
6474 (expand_java_field_op): Recover from missing field.
6475 Inline references to java.lang.{Integer,Char,...}.TYPE.
6476 * typeck.c (get_type_from_signature), java-tree.h: New function.
6477 * class.c (add_method): Use get_type_from_signature.
6478 (build_class_ref): Handle a class that was not found.
6479 * typeck.c (convert): Handle conversion to pointers (for convenience).
6480 * verify.c (verify_jvm_instructions): Use get_type_from_signature
6481 instead of lookup_field to handle missing fields.
6482
6483 * jcf-parse.c (process_zip_dir): Set java_source.
6484
64851998-04-20 Brendan Kehoe <brendan@cygnus.com>
6486
6487 * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
6488
6489Tue Apr 14 15:59:54 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6490
6491 * jcf-parse.c (load_class): Don't change input_filename before
6492 calling jcf_parse_source (but still do it before calling
6493 jcf_parse).
6494 (jcf_parse_source): Assign input_filename after having saved the
6495 parser context.
6496 * lex.c (java_init_lex): Chain a WFL node to the import on demand
6497 list. ctxp->modifier_ctx zeroed according to its new
6498 definition. ctxp->filename initialized. Removed
6499 JAVA_MODIFIER_CTX_UNMARK.
6500 (java_unget_unicode): Update the character based column position.
6501 (java_allocate_new_line): ref_count not used anymore. Always free
6502 ctxp->p_line. Initialize c_line->char_col to 0.
6503 (java_get_unicode): Update the character based column position.
6504 (java_lex): Use ctxp->elc to store current position in source
6505 file, at the beginning of the parsed token. Set modifier_ctx entry
6506 corresponding to the parse modifier to a WFL node. Return a WFL
6507 node when an identifier is parsed.
6508 (java_lex_error): Now uses ctxp->elc to store current position in
6509 source.
6510 (build_wfl_node, java_is_eol, java_get_line_col): New functions.
6511 * lex.h (build_wfl_node): New function definitions.
6512 (struct java_line): ref_count and next fields are gone. New field
6513 char_col.
6514 (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
6515 JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
6516 (JAVA_COLUMN_DELTA): New macro.
6517 (java_lc): New typedef on new struct _java_lc.
6518 * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
6519 (parse_error_context, parse_warning_context): Changed prototypes.
6520 (java_get_line_col): Added as an available global function.
6521 (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
6522 (IC_DECL): Replaced by macro IC_TYPE
6523 (DEPEND_WFL): New macro.
6524 (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
6525 wrong modifier.
6526 (exit_java_complete_class): Removed a commented out statement.
6527 (struct parser_ctxt): Added comments on fields. modifier_ctx is
6528 now an array of tree nodes. Deleted fields line_list and
6529 e_line. New field elc, to replace e_line.
6530 * parse.y (array_type:): Build WFL node.
6531 (qualified_name:): Build a single WFL node out of two. Retain
6532 the location information of the first node in the resulting node.
6533 (package_declaration:): Use package name as a WFL node
6534 (single_type_import_declaration:): Use imported name as a WFL node.
6535 (type_import_on_demand_declaration:): Use root of the imported
6536 packages as a WFL node.
6537 (field_declaration:): Removed unused local variable cl.
6538 (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
6539 (yyerror): New static elc. Removed static error_line, error_pos.
6540 New local code_from_source. Save ctxp->elc into elc at the first
6541 pass. Call java_get_line_col to get a string of the line where
6542 the error occured.
6543 (debug_line): Removed static function.
6544 (parse_error_context, parse_warning_context): Parameter cl is now
6545 a WFL node. Use its value to initialize ctxp->elc.
6546 (redefinition_error): Parameter cl is now a WFL node.
6547 (parse_add_interface): New parameter wfl. No longer call
6548 lookup_cl, use wfl instead.
6549 (check_class_interface_creation): Parameter cl is now a WFL node.
6550 (maybe_create_class_interface_decl): Likewise.
6551 (add_superinterfaces): New function.
6552 (create_interface): Removed local cl, node, super_decl,
6553 super_decl_type. Function now uses id as a WFL node. Better
6554 warning/error report on obsolete or forbidden mix of
6555 modifiers. Now calls add_superinterfaces to register interfaces.
6556 (create_class): Removed local cl, node. Local variable id is used
6557 as a WFL node. Better error report on forbidden modifier
6558 mix. Uses add_superinterfaces to register interfaces.
6559 (find_field): Argument cl is now a WFL node. Now store the WFL
6560 node of a fields that needs to be checked for their
6561 initialization.
6562 (method_header): Local variable node non longer used. Local
6563 variable id replaces cl.
6564 (check_modifiers_consistency): Local variable cl is now a WFL
6565 node.
6566 (method_declarator): Local variable cl replaced by parameter id.
6567 (parser_qualified_name): Now uses parameter name as a WFL node.
6568 (parser_check_super_interface): New parameter wfl, for achieve
6569 greater accuracy during error reports.
6570 (parser_chain_incomplete_item): New parameter named location. Used,
6571 along the decl, to construct the incomplete item node.
6572 (java_complete_class): resolve_class now uses WFL node extracted
6573 from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
6574 where appropriate.
6575 (complete_method_decl): Unresolved function's argument types are WFL.
6576 (resolve_class): Parameter cl is now a WFL node.
6577 (resolve_and_layout): Likewise.
6578 (do_resolve_class): Likewise. Try first to use cl and then do the
6579 lookup on the decl when calling check_pkg_class_access.
6580 (complete_class_report_errors): Use IC_TYPE in place of
6581 TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
6582 instead of doing a lookup over the decl.
6583 (java_check_final): Use WFL info from field tree list.
6584 (lookup_cl): Rewritten and returns a statically defined WFL node.
6585 (lookup_modifier_cl): Now uses information from WFL nodes.
6586 (process_imports): Likewise.
6587 (read_import_dir): name and cl arguments replaced by a single WFL
6588 node. Function modified accordingly.
6589 (find_in_imports_on_demand): Now uses WFL node.
6590 (check_pkg_class_access): cl argument is now a WFL node.
6591 (declare_local_variables): Fixed to use WFL nodes.
6592 (resolve_expression_name): Likewise.
6593 (build_method_invocation_stmt): name_combo argument renamed
6594 wfl. Function modified to use WFL nodes.
6595 (build_invoke): cl used as a WFL node when calling build_expr_wfl.
6596 (lookup_method_invoke): cl is now a WFL node. Added missing
6597 IDENTIFIER_POINTER to class type decl name.
6598
6599Tue Apr 14 15:23:29 1998 Dave Brolley <brolley@cygnus.com>
6600
6601 * lang.c (init_parse): Now returns char* containing the filename.
6602
6603Fri Apr 10 11:36:04 1998 Per Bothner <bothner@cygnus.com>
6604
6605 * class.c (layout_class): Mangle repeated arg types to match cc1plus.
6606
6607 * decl.c, java-tree.h (integer_four_node): New INTEGER_CST node.
6608 * class.c (make_class_data): If flag_assume_compiled, initial class
6609 state is CSTATE_PREPARED; make superclass and interfaces direct
6610 references, rather than constant pool indexes.
6611
6612Thu Apr 9 16:10:56 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6613
6614 * parser.y: Include flags.h. Removed debug variable pl.
6615 (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
6616 (block:): Likewise.
6617 (labeled_statement_nsi:): Generate debug info when reducing
6618 expression_statement:.
6619 (check_pkg_class_access): get_access_flags_from_decl invokation
6620 fixed for new CLASS_* flags location.
6621 (source_end_java_method): Save/restore parser context when
6622 entering/leaving this routine. Restore lineno to its right value
6623 before calling expand_end_bindings.
6624 (build_method_invocation_stmt): build_invoke called with the
6625 current line information.
6626 (build_invoke): New argument cl. Wrap the function call around a
6627 wfl node.
6628 (refine_accessible_methods_list): Changed comment, removed
6629 unnecessary code.
6630 * parse.h: Fixed typo in comments.
6631 (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
6632 (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
6633 (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
6634 parser_ccb_indent.
6635 * lex.c (java_lex): Record the last closing curly bracket of a
6636 function.
6637 * jcf-parse.c (jcf_parse_source): Now calls
6638 java_check_methods. Clarified comment, fixed typo.
6639
66401998-04-09 Dave Brolley <brolley@cygnus.com>
6641
6642 * lang.c (init_parse): Expose for non USE_CPPLIB builds.
6643 (finish_parse): Expose for non USE_CPPLIB builds.
6644
6645Wed Apr 8 13:06:23 1998 Jeffrey A Law (law@cygnus.com)
6646
6647 * lang.c (lang_print_xnode): New function.
6648
6649Fri Apr 3 13:22:41 1998 Per Bothner <bothner@cygnus.com>
6650
6651 * decl.c (class_dtable_decl), java-tree.h: New tree node.
6652 * class.c (get_dispatch_vector, get_dispatch_table): New functions
6653 used to build a class's dispatch table.
6654 (make_class_data): Generate dispatch table if flag_assume_compiled.
6655 Set dtable of class object to address of class_dtable_decl.
6656
6657 * decl.c (int_decl_processing): Make soft_badarrayindex_node
6658 be volatile and have side effects - generates better code.
6659
6660 * class.c, expr.c, parse.y: CLASS_INTERFACE, CLASS_FINAL, etc:
6661 These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
6662
6663 * expr.c (expand_invoke): If class is final, method is
6664 effectively final, so can call it directly.
6665
6666 * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE): New macros.
6667
6668 * Makefile.in, Make-lang.in: Add missing $(exeext)s.
6669
6670Thu Mar 19 16:59:16 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6671
6672 * parse.y (build_method_invocation_stmt): Removed extra argument
6673 to build_invoke.
6674
6675Mon Mar 16 17:25:19 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6676
6677 * expr.c (dtable_indent): Now static global.
6678 (expand_invoke): Now call invoke_build_dtable and
6679 build_invokevirtual.
6680 (invoke_build_dtable, build_invokevirtual): New functions.
6681 * jcf-io.c (find_class): Defer issuing a warning by setting
6682 jcf->outofsynch to 1.
6683 * jcf-parse.c (jcf_out_of_synch): New function.
6684 (load_class): Test this_jcf.outofsynch flag and call
6685 jcf_out_of_synch accordingly.
6686 * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
6687 comment indentation.
6688 * lex.c (java_get_unicode): Fixed code indentation.
6689 (java_lex): Create string literal. Fixed typo. Removed several
6690 premature obstack_free.
6691 * parse.h: New enums for name resolution and invocation mode.
6692 (struct qualification): New data structure.
6693 (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
6694 (do_resolve_class, build_method_invocation_stmt,
6695 breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
6696 debug_line, identical_subpath_p, invocation_mode,
6697 refine_accessible_methods_list, build_invoke,
6698 lookup_method_invoke): New functions declared.
6699 (build_invokevirtual, invoke_build_dtable, match_java_method,
6700 build_field_ref, jcf_out_of_synch): New references to external
6701 functions.
6702 (struct parse_ctxt): Removed artificial_constructor field.
6703 * parse.y: (array_type:): Type defined for this rule.
6704 (class_type:): Installed default rule for interface_type:.
6705 (array_type:): Now build Java array type.
6706 (qualified_name:): Now use obstack_grow0.
6707 (method_declaration:): Skip the artificial constructor added to
6708 the list, if any.
6709 (abstract_method_declaration:): Execute the code only during pass 1.
6710 (block:): Installed default rule in block_statements:.
6711 (block_statement:): Add the statement to the method during pass 2.
6712 (statement_expression): Installed default rule for
6713 method_invocation:.
6714 (argument_list:): Added code to build the argument list.
6715 (method_invocation:): Added call to create the method invocation
6716 node.
6717 (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
6718 (debug_line): New function for debug.
6719 (complete_class_decl): No longer do something during pass 1.
6720 (method_header): Use BUILD_PTR_FROM_NAME.
6721 (parser_qualified_classname): Use obstack_grow0. Removed bogus
6722 obstack_free.
6723 (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
6724 function's main comment.
6725 (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
6726 classes.
6727 (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
6728 (resolve_class): Now works with arrays.
6729 (do_resolve_class, resolve_and_layout): New functions.
6730 (java_check_regular_methods): Reverse method list before and after
6731 having processed it. No longer set ctxp->artificial_constructor.
6732 (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
6733 accordingly. Fixed typo in issued error message. Now use
6734 obstack_grow0.
6735 (find_in_imports_on_demand): Now use obstack_grow0.
6736 (declare_local_variables): Use BUILD_PTR_FROM_NAME.
6737 (source_end_java_method): Call expand_expr_stmt instead of
6738 expand_expr. Calls it before calling expand_function_end.
6739 (java_method_add_stmt): Do nothing if errors were found during
6740 parsing.
6741 (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
6742 (build_method_invocation_stmt, build_invoke, invocation_mode,
6743 lookup_method_invoke, refine_accessible_methods_list,
6744 qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
6745 New functions.
6746 * typeck.c (build_java_signature): Properly end method signature
6747 if return type skipped.
6748 (match_java_method): New function.
6749
6750Mon Mar 16 10:40:47 1998 Per Bothner <bothner@cygnus.com>
6751
6752 * jcf-io.c (find_classfile): If USE_JCF_STDIO, fopen in binary mode.
6753
6754Wed Feb 25 08:55:49 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6755
6756 * expr.c (build_invoke_non_interface): New function.
6757 (methods_ident, ncode_ident): Now static globals.
6758 (expand_invoke): Use build_invoke_non_interface.
6759 * java-tree.h (struct lang_decl): New field function_decl_body.
6760 (DECL_FUNCTION_BODY): New macro.
6761 * jcf-parse.c (jcf_parse_source): Deeper check before setting
6762 CLASS_FROM_SOURCE_P.
6763 (parse_source_file): Fixed typos. Call java_layout_parsed_class
6764 before starting pass 2. Call to java_generate_parsed_class replaced
6765 by java_register_parsed_class.
6766 * lex.c: Fixed typo in header. Some line width related formating.
6767 * lex.h: Some line width related formating.
6768 * parse.h (source_end_java_method, resolve_expression_name,
6769 complete_class_decl, maybe_create_class_interface_decl,
6770 check_class_interface_creation): New static function declarations.
6771 (java_layout_parsed_class, java_method_add_stmt): New function
6772 declarations.
6773 (struct parser_ctxt): Field mark_class_generate removed. New
6774 fields class_list and artificial_constructor.
6775 * parse.y: Fixed typo in header.
6776 (class_declaration:): Call complete_class_decl when class body
6777 parsed.
6778 (method_declaration:): Call source_end_java_method in pass 2 when
6779 the method body is defined.
6780 (postfix_expression:): Do expression name resolution on sub-rule
6781 name during pass 2.
6782 (create_class, create_interface): Merged common pieces.
6783 (check_class_interface_creation, maybe_create_class_interface_decl):
6784 New functions.
6785 (complete_class_decl): New function.
6786 (register_fields): Fixed line width related typo.
6787 (method_header): Correctly skip first argument when fixing
6788 argument line. Changed the loop.
6789 (java_check_circular_reference): Now use ctxp->class_list.
6790 (java_complete_class): Removed start/stop marking.
6791 (java_check_regular_methods): Now takes a class decl as an
6792 argument. Add default constructor if none were encountered.
6793 (java_check_methods): Now use ctxp->class_list. Changed call to
6794 java_check_regular_methods.
6795 (source_start_java_method): Set DECL_ARG_TYPE for each function
6796 arguments.
6797 (source_end_java_method, java_method_add_stmt): New functions.
6798 (java_generate_parsed_class): No longer exists.
6799 (java_layout_parsed_class, java_register_parsed_class): New functions.
6800 (resolve_expression_name): New function.
6801
6802Thu Feb 12 11:54:28 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6803
6804 * jcf-parse.c: (parse_source_file): Check on errors after init lex.
6805 * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
6806 until pass initializations are done. Call read_import_dir with
6807 pass set to 0.
6808 * parse.h: (lookup_modifier_cl): New function declared.
6809 (INTERFACE_FIELD_MODIFIERS): New macro.
6810 (OBSOLETE_MODIFIER_WARNING): New macro.
6811 * parse.y: (register_fields): Class type and current field name in
6812 local variables. Check modifier(s) if adding field(s) to an interface.
6813 (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
6814 and report errors using the faulty modifier line context.
6815 (lookup_modifier_cl): New function.
6816 (read_import_dir): Detect and report default import processing
6817 failure.
6818
68191998-02-11 Brendan Kehoe <brendan@cygnus.com>
6820
6821 Add a pair of -fassume-compiled/-fno-assume-compiled options.
6822 * class.c (is_compiled_class): Return 1 after making sure it
6823 qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
6824 * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
6825 * java-tree.h (flag_assume_compiled): Add decl.
6826 * lang.c (lang_f_options): Add the flag.
6827 (flag_assume_compiled): Add decl, default to 0.
6828
6829Wed Feb 11 11:27:59 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
6830
6831 * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
6832 (is_compiled_class): Likewise.
6833 (layout_class): Likewise.
6834 (layout_class): Detect and lay out classes defined in source code.
6835 (interface_of_p, add_interface_do, may_add_interface): New
6836 function.
6837 (add_interface): Now use add_interface_do.
6838 (add_method_1): New function.
6839 (add_method): Now use add_method_1.
6840 (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
6841 (complete_start_java_method): New function.
6842 (start_java_mehod): Now call complete_start_java_method.
6843 * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
6844 (expand_invoke): Likewise and fixed typo.
6845 *gjava.c: (print_super_field): Use new argument to find_class
6846 DO_CLASS_FILE.
6847 (main): Likewise.
6848 *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
6849 (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
6850 QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
6851 IDENTIFIER_NODE.
6852 (CLASS_COMPLETE_P): New flag on TYPE_DECL.
6853 (add_method_1, push_class): New prototypes.
6854 *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
6855 *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
6856 directory where the class was found.
6857 (find_class): New argument DO_CLASS_FILE. Function find_class
6858 modified accordingly.
6859 *jcf-parse.c: (fix_class_path): New function.
6860 (load_class): Use new VERBOSE argument. load_class now finds and
6861 loads/parses .class/.java files. Save read_state of current_jcf
6862 if necessary.
6863 (java_parser_abort_on_error): New macro.
6864 (jcf_parse_source, parse_source_file): New function.
6865 (jcf_parse): Fixed typo.
6866 (yyparse): Call parse_source_file () only.
6867 (process_zip_dir): Fixed typo, fix zdir->filename_length when
6868 writing the real class name back in the zip directory entry.
6869 (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
6870 (jcf_figure_file_type): Fixed bogus alloc and bcopy.
6871 *jcf.h: (typedef struct JCF): New fields java_source and zipd.
6872 (find_class): Prototype fixed.
6873 *lex.c: Added 1998 time stamp.
6874 Removed all static global variables, moved into the parser
6875 context data structure.. Now include unistd.h if SEEK_SET not
6876 defined.
6877 (java_init_lex): Rewritten.
6878 (java_sneak_unicode): Modified current unicode access in current line.
6879 (java_unget_unicode): Likewise.
6880 (java_allocate_new_line): New allocation management.
6881 (java_read_char): Modified access and storage of unget_utf8_value.
6882 New way of processing current unicode.
6883 (java_store_unicode, java_read_unicode): Fixed typo in declaration.
6884 (java_get_unicode): Now use the parser context.
6885 (java_lineterminator): Likewise.
6886 (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
6887 of the reentrant parser implementation. Function now use the
6888 parser context data structure and java_lval. Fixed production of
6889 the float and double constant "out of range" error message. Fixed
6890 obstack use. Return integer value when hitting a modifier. Now
6891 return type for TRUE, FALSE and other predefined types. Return
6892 identifier as a TREE_LIST list containing the current line context
6893 as the TREE_VALUE sub-node.
6894 (java_unicode_2_utf8): Fixed typo in declaration.
6895 (java_lex_error): Now use the parser context data structure.
6896 *lex.h: Added 1998 time stamp.
6897 (struct java_line): New fields ref_count and next.
6898 (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
6899 JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
6900 (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
6901 *parse.h: Added 1998 time stamp.
6902 (java_parse_source_file): Renamed from parse_source_file.
6903 (YYERROR_NOW, YYNOT_TWICE): Fixed.
6904 (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
6905 INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
6906 JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
6907 THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
6908 END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
6909 CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
6910 (struct parser_ctxt): New data structure to keep the parser context.
6911 *parse.y: Added 1998 time stamp, got rid of static global variables.
6912 (java_error_count, ctxp): New global variables.
6913 (%union): New value field.
6914 (numeric_type, integral_type): Rules removed.
6915 (primitive_type): Rule defined to handle integral, float, double and
6916 boolean types.
6917 (qualified_name, package_declaration,
6918 single_type_import_declaration, type_import_on_demand_declaration,
6919 modifiers, class_declaration, super, interfaces,
6920 interface_type_list, class_body, field_declaration,
6921 field_declaration, variable_declarators, variable_declarator,
6922 variable_declarator_id, method_declaration, method_header,
6923 formal_parameter_list, formal_parameter, method_body, block,
6924 static, interface_declaration, extends_interfaces,
6925 abstract_method_declaration, local_variable_declarators): Rules now
6926 define actions.
6927 (force_error, do_warning): New global statics.
6928 (push_parser_context, parser_context_save_global,
6929 parser_context_restore_global, pop_parser_context): New functions.
6930 (yyerror): Now uses the global parser context. Fixed use of obstack.
6931 (parse_error, parse_error_context, parse_warning_context,
6932 java_accstring_lookup, redefinition_error, check_modifiers,
6933 parser_add_interface, create_interface, create_class, find_field,
6934 duplicate_declaration_error, register_fields, method_header,
6935 check_modifiers_consistency, check_abstract_method_header,
6936 method_declarator, parser_qualified_classname,
6937 parser_check_super_interface, parser_check_super,
6938 parser_chain_incomplete_item, java_check_circular_reference,
6939 layout_class_from_source, java_complete_class,
6940 complete_method_decl, resolve_class, complete_class_report_errors,
6941 java_check_final, check_method_redefinition,
6942 java_check_regular_methods, java_check_abstract_methods,
6943 java_check_methods, lookup_java_interface_method2,
6944 lookup_java_method2, lookup_cl, find_name_in_single_imports,
6945 process_imports, find_in_imports, read_import_entry,
6946 read_import_dir, find_in_imports_on_demand,
6947 check_pkg_class_access, not_builtin_p, declare_local_variables,
6948 source_start_java_method, java_generate_parsed_class): New
6949 functions.
6950 *typeck.c: (signature_include_return): New global variable.
6951 (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
6952 to add the function returned type in the signature.
6953
69541998-02-09 Brendan Kehoe <brendan@cygnus.com>
6955
6956 * jcf-io.c (open_in_zip): Use strncmp and LEN.
6957
6958Thu Jan 29 16:12:13 1998 Dave Brolley <brolley@cygnus.com>
6959
6960 * Make-lang.in (java.info): Added.
6961 (java.install-info): Added
6962
69631998-01-27 Brendan Kehoe <brendan@cygnus.com>
6964
6965 * Makefile.in (clean): Also remove java/parse.c.
6966
69671998-01-26 Brendan Kehoe <brendan@cygnus.com>
6968
6969 Add a pair of -fbounds-check/-fno-bounds-check options.
6970 * lang.c (lang_decode_option): Add code to grok arguments.
6971 (flag_bounds_check): Add decl.
6972 (lang_f_options): New array w/ the option in it.
6973 * java-tree.h (flag_bounds_check): Add decl.
6974 * lang-options.h: New file.
6975 * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
6976 of a static macro value.
6977 (JAVA_ARRAY_EXCEPTION): Delete macro.
6978
6979Fri Jan 23 14:19:47 1998 Per Bothner <bothner@cygnus.com>
6980
6981 * typeck.c (build_java_array_type): Fix two bugs in previous change.
6982 * expr.c (build_anewarray): Add missing promote_type.
6983
6984Thu Jan 22 17:43:45 1998 Per Bothner <bothner@cygnus.com>
6985
6986 Add array types with known length to optimize bounds checking.
6987 * typeck.c (build_java_array_type): Take length parameter.
6988 (java_array_type_length, build_prim_array_type): New functions.
6989 * java-tree.h: Update for new functions.
6990 * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
6991 * class.c: Use build_prim_array_type.
6992 * expr.c (can_widen_reference_to): Handle known-length array types.
6993 (verify_jvm_instructions): Keep track of integer push instructions
6994 followed by newarray/anewarray, so we can build known-length arrays.
6995 (JAVA_ARRAY_DATA_OFFSET): Replace by ...
6996 (java_array_data_offset): New function.
6997 (build_java_array_length_access): New function. Optimize if constant.
6998 (build_java_arrayaccess): Constant fold bounds check.
6999 (expand_java_newarray, expand_java_anewarray): Replaced by ...
7000 (build_newarray, build_anewarray): New functions.
7001 (ARRAY_NEW_NUM, ARRAY_NEW_PTR): Use build_{a,}newarray.
7002 * verify.c (merge_types): Handle known-lengh array types.
7003
7004Mon Jan 19 13:09:25 1998 Per Bothner <bothner@cygnus.com>
7005
7006 * expr.c (expand_byte_code): Fix performace bug, which caused
7007 searching linenumber_table to be linear rather than constant.
7008
7009Fri Dec 12 19:18:42 1997 Per Bothner <bothner@cygnus.com>
7010
7011 * Makefile.in (BISON, BISONFLAGS): Add missing macros.
7012
7013 * decl.c, java-tree.h (soft_fmod_node): New global.
7014 * decl.c (init_decl_processing): Define __builtin_fmod.
7015 * expr.c (build_java_binop): Implement TRUNC_MOD_EXPR for REAL_TYPE
7016 using __builtin_fmod.
7017
7018Thu Dec 4 13:22:59 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7019
7020 * keyword.h: New file, output of keyword.gperf as processed by
7021 gperf.
7022 * lex.c (java_lex_init): Initialize java_error_flag.
7023 * parse.c (YYERROR_NOW): Uses java_error_flag.
7024 * parse.y: New static java_error_flag. Useless definition of
7025 buffer_error gone.
7026 * parse.y (java_error): Portable error recovery using
7027 java_error_flag (not yet completely tuned).
7028
70291997-12-04 Brendan Kehoe <brendan@lisa.cygnus.com>
7030
7031 * Makefile.in (parse.c): Use $(srcdir) for parse.y.
7032
7033Wed Dec 3 18:37:42 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7034
7035 * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
7036 (parse.c, lex.c, keyword.h): New rules for Java source code
7037 front-end.
7038 * parse.c: Renamed into jcf-parse.c.
7039 * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
7040 * keyword.gperf: New file, Java keywords.
7041 * parse.y: New file, Java language grammar.
7042 * parse.h: New file, Java language grammar definitions.
7043 * lex.c: New file, Java language lexer.
7044 * lex.h: New file, Java language lexer definitions.
7045
7046Wed Dec 3 17:00:17 1997 Per Bothner <bothner@cygnus.com>
7047
7048 * decl.c (clinit_identifier_node), java-tree.h: New global.
7049 * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P): Removed.
7050 * verify.c (verify_jvm_instructions): Inline use of removed macros.
7051 * expr.c (expand_java_field_op): Check for invalid assignment
7052 to final field.
7053
7054 * jcf-reader.c (get_attribute): Test for wrong attribute length.
7055
7056Mon Oct 27 17:46:36 1997 Per Bothner <bothner@cygnus.com>
7057
7058 * verify.c (verify_jvm_instructions): When processing a handler,
7059 attempt to set the current_subr to the right value.
7060 (More complicated code combines Sep 17 and Oct 22 versions.)
7061
7062Fri Oct 24 11:36:54 1997 Per Bothner <bothner@cygnus.com>
7063
7064 * class.c (push_class): Figure out (guess) name of source file.
7065 * parse.c (set_source_filename): Set DECL_SOURCE_FILE of class decl.
7066 (give_name_to_class): Don't guess source name; use DECL_SOURCE_FILE.
7067 (parse_class_file): Change return type from int to void.
7068 Call debug_start_source_file/debug_end_source_file.
7069
7070 * expr.c (build_java_binop): Fix masking 2nd operand.
7071 * decl.c (init_decl_processing): Set sizetype first.
7072
7073Wed Oct 22 19:39:05 1997 Per Bothner <bothner@cygnus.com>
7074
7075 * verify.c (verify_jvm_instructions): Don't set current_subr to NULL.
7076 (Revert Sep 17 change.)
7077
7078Tue Oct 21 15:09:02 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7079
7080 * parse.c (process_zip_dir): Skip ZIP entries not bearing the
7081 .class extension in their name and fix thing so we don't process
7082 them parse_zip_file_entries().
7083 (parse_zip_file_entries): Cleaned unused local variables.
7084
7085Mon Oct 20 14:52:42 1997 Per Bothner <bothner@cygnus.com>
7086
7087 * expr.c (can_widen_reference_to): Allows equal array element types.
7088 (expand_byte_code): PRE_RET must expand OPERAND_VALUE (to get index).
7089 * jcf-dump.c (RET): Get (and print) index.
7090
7091 * verify.c (verify_jvm_instructions case OPCODE_anewarray):
7092 Promote element type to POINTER_TYPE.
7093
7094Mon Oct 20 13:40:41 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7095
7096 * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
7097 find_in_current_zip, jcf_figure_file_type): Moved from
7098 jcf-reader.c to parse.c.
7099 * zextract.c: (read_zip_archive): takes file_comment_length possible
7100 field into account.
7101
7102Mon Oct 20 11:45:06 1997 Per Bothner <bothner@cygnus.com>
7103
7104 * verify.c (verify_jvm_instructions): Var can also be promoted to int.
7105
7106 * verify.c (merge_types): Handle array types even better ...
7107
7108Fri Oct 17 15:56:37 1997 Per Bothner <bothner@cygnus.com>
7109
7110 * expr.c (java_stack_pop): Fix use of NULL_TREE for TYPE_SECOND.
7111
7112 * java-tree.h (PUSH_FIELD): Set DECL_ARTIFICIAL.
7113 * class.c (make_class_data): Don't build fields_decl if no fields.
7114 When building fields_decl, skip if DECL_ARTIFICAL.
7115
7116 * expr.c (java_stack_swap): Update stack_type_map.
7117 * verify.c (merge_types): Handle array types better.
7118
7119Wed Oct 15 18:09:45 1997 Per Bothner <bothner@cygnus.com>
7120
7121 * class.c (add_field): Don't promote short integral fields to
7122 int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
7123 * expr.c (push_value): Promote and convert short integral values.
7124
7125 * decl.c, java-tree.h (integer_two_node): New constant node.
7126 * verify.c (merge_types): Check for TYPE_RETURN_ADDR.
7127
7128Wed Oct 15 17:04:50 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7129
7130 * class.c (append_gpp_mangled_type): Use function argument
7131 unpromoted type to generate mangled name.
7132
7133Mon Oct 13 16:52:55 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7134
7135 * constants.c (build_constant_data_ref): Now uses current_class
7136 instead of main_class.
7137 (build_constants_constructor): Now uses current_class instead of
7138 main_class.
7139 * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
7140 of the global variable SeepZipFiles done here.
7141 * zextract.c (read_zip_archive): extra_field optional field taken
7142 into account while computing the position of the class file in the
7143 archive.
7144 * verify.c (verify_jvm_instructions): Use current_jcf to search
7145 the constant pool.
7146 * parse.c (load_class): First search for the class to load in the
7147 current zip file. Saves current_jcf (restored before returning
7148 from that function). Don't call JCF_FINISH in the class was found
7149 in the current ZIP file.
7150 (jcf_parse): If the class was found in the current ZIP file, save
7151 its tree_constant_pool (for later reuse).
7152 (parse_class_file): New function. Process each method defined in
7153 the current class and record the class as to be later registered.
7154 (yyparse): Rewritten. Figure the type of the current file and switch
7155 accordingly.
7156 * lang.c: New global variable current_jcf.
7157 (lang_init): Removed compiling_from_source test (done later, in
7158 yyparse). Removed call the jcf_parse ().
7159 * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
7160 (typedef struct JCF): New fields seen_in_zip (to mark a class found
7161 in the current ZIP file) and zip_offset (offset to the class data in
7162 the current zip file).
7163 * jcf-reader.c: zipfile.h included.
7164 localToFile: New ZipFileCache static global variable
7165 (parse_zip_file_entries): New function. Browse the current ZIP
7166 file directory and process each class found.
7167 (process_zip_dir): New function. Register each class found in the
7168 ZIP file directory. The class aren't parsed but a valid JCF is
7169 link to each of them.
7170 (find_in_current_zip): New function. Search for a class in the
7171 current ZIP file directory. If found, prepare the class so that it
7172 can be loaded.
7173 (jcf_figure_file_type): New function. Examine the file structure
7174 to figure a class file, a ZIP file. If none of these categories are
7175 matched, a source file is assumed.
7176 * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
7177 SeenZipFile: New global variable.
7178 (open_in_zip): Use zipmember's length to accelerate the search for
7179 a member. If zipmember was NULL and zip file successfully read,
7180 return 0.
7181 * java-tree.h: New global variable current_jcf declared. Added
7182 declaration for current_constant_pool_tags, current_constant_pool_data,
7183 current_constant_pool_length, current_constant_pool_data_ref.
7184 (struct lang_type): Augmented with two fields. struct JCF *jcf (to
7185 store the JCF of classes seen in a zip file) and tree *constant_pool
7186 (to save a loaded class constant pool). current_class declared here.
7187 * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
7188 retrieve method_ref_constant.
7189 (PUSHC): java_push_constant_from_pool now uses current_jcf.
7190 (OBJECT): get_class_constant now uses current_jcf.
7191 (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
7192 (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
7193 (expand_invoke): Now uses current_class instead of main_class
7194 (build_class_init): Now uses current_class instead of main_class
7195 * class.c: New static global variable registered_class.
7196 (register_class): New function.
7197 (emit_register_class): Modified to use registered_class instead of
7198 main_class
7199 (is_compiled_class): Now take into account class seen in the archive.
7200
7201Mon Oct 6 12:03:23 1997 Per Bothner <bothner@cygnus.com>
7202
7203 * except.h: Renamed to: java-except.h.
7204 * parse.c, except.c, expr.c, verify.c: Update #include accordingly.
7205 * except.c: Add semi-working (commented out) implementation.
7206
7207 * expr.c (expand_iinc): Add needed flush_quick_stack.
7208 * parse.c (set_source_filename): New function.
7209 (give_name_to_class): Set input_filename from package.classname.java.
7210
7211 * jcf-io.c (find_class): Don't look first in ".".
7212
7213Wed Oct 1 11:26:10 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7214
7215 * zextract.c (read_zip_archive): Now takes into account the
7216 extra_field field.
7217 * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
7218
7219Sat Sep 20 12:44:28 1997 Per Bothner <bothner@cygnus.com>
7220
7221 * constants.c, java-tree.h (build_internal_class_name): New function.
7222 (alloc_class_constant): Re-implement using build_internal_class_name.
7223 * class.c (make_class_data): Likewise.
7224 * class.c (hashUtf8String): Make hash algorithm match String.hashCode.
7225
7226Wed Sep 17 13:15:23 1997 Per Bothner <bothner@cygnus.com>
7227
7228 * verify.c (verify_jvm_instructions): Temporarily set current_subr
7229 to NULL before pushing an exception handler target.
7230
7231 * expr.c (flush_quick_stack): Save from low stack indexes to high.
7232 (java_stack_swap, java_stack_dup): Re-write to be safe from
7233 clobbering registers.
7234 (build_class_init): New function.
7235
7236Wed Sep 17 11:02:41 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7237
7238 * typeck.c (build_java_array_type): Temporary use
7239 permanent_obstack to create the array 'length' field.
7240 * expr.c (lookup_label): Temporay use permanent_obstack to create
7241 label if not found.
7242 * class.c (push_super_field): Tempory use permanent_obstack.
7243
7244Mon Sep 15 11:33:31 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7245
7246 * typeck.c (type_for_mode): Now handles double_type_node and
7247 float_type_node.
7248 * verify.c (verify_jvm_instructions): The instruction following
7249 the wide bytecode is checked. OPCODE_ret added to the list of
7250 wide.
7251
7252Thu Sep 11 19:45:18 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7253
7254 * class.c (make_class): Temporary use permanent_obstack. Set the
7255 class CLASS_P field to 1.
7256 (push_class): Temporary use permanent_obstack.
7257 (set_super_info): Temporary use permanent_obstack.
7258 (add_method): Temporary use permanent_obstack, set
7259 METHOD_TRANSIENT().
7260 (add_field): Temporary use permanent_obstack. Sets
7261 FIELD_VOLATILE() and FIELD_TRANSIENT().
7262 (build_class_ref): Temporary use permanent_obstack if the class
7263 isn't compiled.
7264 (build_static_field_ref): Temporary use permanent_obstack when
7265 creating field's rtl.
7266 (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
7267 ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
7268 and fields. Function finalized, as far as flag handling.
7269 (push_class_static_dummy_field): Temporary use permanent_obstack.
7270 (emit_register_class): Force generation of class registration at
7271 -O3 or deeper.
7272 * decl.c (end_java_method): Call permanent_allocation() before
7273 returning.
7274 * expr.c (can_widen_reference_to): Added comment to interface
7275 handling, fixed typo.
7276 (lookup_field): Now uses CLASS_P() to correct FIXME
7277 (expand_invoke): Verification on public && !static &&
7278 !abstract moved into soft_lookupinterfacemethod (kaffe).
7279 Use Object class dtable if objectref is an array when expanding
7280 invokeinterface.
7281 (java_push_constant_from_pool): Temporary use permanent_obstack
7282 for CONSTANT_string
7283 * parse.c (get_ref_constant): Temporary use permanent_obstack to
7284 create constant references.
7285 (get_constant): Temporary use permanent_obstack to create constant.
7286 (load_class): Temporary use permanent_obstack to load class.
7287 (jcf_parse): Temporary use permanent_obstack to perform class
7288 layout.
7289 * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
7290 (build_java_signature): Temporary use permanent_obstack.
7291 * verify.c: (verify_jvm_instruction): removed unecessary verification
7292 on ACC_SUPER flag.
7293 * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
7294 (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
7295 (CLASS_P): Defined
7296
7297Thu Sep 11 11:57:32 1997 Per Bothner <bothner@cygnus.com>
7298
7299 * class.c (append_gpp_mangled_type): Fix typo.
7300 (emit_register_class): Use main_class to get class object, rather
7301 than looking for no-longer-existing static decl starting with _CL.
7302 * typeck.c (parse_signature_type): Promote array element type
7303 if it is a RECORD_TYPE.
7304
7305Wed Sep 10 16:09:23 1997 Per Bothner <bothner@cygnus.com>
7306
7307 * class.c (push_class_static_dummy_field): New function.
7308 (mangle_static_field): New. Do G++-style mangling of static fields.
7309 (layout_class): Mandle static fields here, not in add_field.
7310 (build_class_ref): The class object is now a dummy static field.
7311 * decl.c (find_local_variable): Look for best, instead of first match.
7312 * expr.c (push_type): Always promote_type, not just for RECORD_TYPE.
7313 (build_java_athrow): Don't check here if exception is Throwable.
7314 * java-tree.h (TYPE_UNSET): Renamed to TYPE_UNKNOWN.
7315 (TYPE_USED): Removed. No longer used ...
7316 * parse.c (jcf_parse): Call push_class_static_dummy_field.
7317 * verify.c (push_pending_label): New function.
7318 (push_pending_block): Renamed to check_pending_block.
7319 (merge_types): Remove unneeded suuport for TYPE_UNUSED.
7320 (verify_jvm_instructions): Only reset prev_eh_ranges (to force
7321 re-checking possible handlers) after a store (less wasted work).
7322 Check for null handler (finally) before calling add_handler.
7323 Various changes to (finally?) correctly handle try/finally.
7324
73251997-09-09 Brendan Kehoe <brendan@lisa.cygnus.com>
7326
7327 * class.c: Include stdio.h.
7328
7329Thu Sep 4 21:30:55 1997 Per Bothner <bothner@cygnus.com>
7330
7331 * expr.c (expand_invoke): Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
7332 to make sure class is initialized before static/special invoke.
7333
7334 * verify.c (verify_jvm_instructions): On a store instruction,
7335 call find_local_variable to force pre-allocation of decl and rtx.
7336 * decl.c (push_jvm_slot): Set DECL_REGISTER on stack slots.
7337
7338Wed Sep 3 16:13:23 1997 Per Bothner <bothner@cygnus.com>
7339
7340 * class.c (build_class_ref): Strip off "promoted_" if need be.
7341 (make_field_value): Call build_java_signature when needed.
7342 (layout_class): Don't make_function_rtl if METHOD_ABSTRACT.
7343 * expr.c (build_java_athrow): Don't push_value of exception.
7344 (build_java_binop): Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
7345 match specification of [fd]cmp[lg] for NaNs.
7346 (expand_byte_code): Add support for exception handler ranges.
7347 * except.c: Add skeleton for EH code-generation.
7348 * verify.c (merge_types): Treat all promoted integral types as equal.
7349 * constants.c (build_constants_constructor): To force creation of
7350 current_constant_pool_data_ref, call build_constant_data_ref.
7351
7352 * javaop.def (lload): Fix typo.
7353 * jcf-dump.c (main): Clear filename to prevent possibly-bad free.
7354
7355Tue Sep 2 17:37:25 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
7356
7357 * parse.c: Don't include function.h.
7358
7359Wed Aug 27 18:33:04 1997 Per Bothner <bothner@cygnus.com>
7360
7361 * except.[ch]: New files.
7362 * Makefile.in (JAVA_OBJS): Add except.o
7363 * expr.c: Temporary warning about unimplemented exceptions.
7364 * verify.c: Verify exception handlers.
7365
7366 * jcf-dump.c (disassemble_method): Print exception table.
7367
7368Wed Aug 27 13:26:58 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7369
7370 * expr.c (verify_jvm_instructions): Started a thorough
7371 verification of invoke* bytecodes.
7372 (expand_byte_code): flush quick stack if PC is the target of a
7373 branch. and undef RET (conflicting with config/i386/i386.h).
7374 (expand_java_arrayload): Fixed bogus cast, when Boolean type is
7375 used.
7376 (expand_invoke): Now handles invokeinterface and do more
7377 verification according to the bytecode.
7378 (lookup_field): Don't try to load the class if processing
7379 dtable_type.
7380 (can_widen_reference_to): Now handles interfaces.
7381 * decl.c (init_decl_processing): New global variable
7382 soft_lookupinterfacemethod_node, declared in java-tree.h.
7383 Call set_super_info on string_type_node.
7384 * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
7385 defined.
7386 * class.c (set_super_info): Fills the CLASS_* flags according to
7387 access_flags.
7388 (get_access_flags_from_decl): Handles all class flags.
7389
7390Tue Aug 26 18:54:34 1997 Per Bothner <bothner@cygnus.com>
7391
7392 * class.c (add_method): Zero out newly-allocated DECL_LANG_SPECIFIC.
7393 * parse.c (yyparse): Check for abstract method, and missing code.
7394 * expr.c (expand_byte_code): Change interface.
7395 * lang.c (put_decl_node): Print promoted types prettier.
7396 * verify.c (verify_jvm_instruction): Change interface.
7397 Partial support for scanning exception table.
7398 For load instructions, handle promoted integral types.
7399
7400Thu Aug 21 13:48:01 1997 Per Bothner <bothner@cygnus.com>
7401
7402 * verify.c: New file, with contents moved from expr.c.
7403 * expr.c: Bunch of stuff (mostly verification) moved to verify.c.
7404 * typeck.c (is_array_type_p): Moved here from expr.c.
7405 * java-tree.h: Add some now-needed function declarations.
7406 * Makefile.in (JAVA_OBJS): Added verify.o.
7407
7408Wed Aug 20 14:34:34 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7409
7410 * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
7411 METHOD_ABSTRACT flag.
7412
7413 * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
7414 (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
7415 (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
7416
7417 * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
7418 variables.
7419 (start_java_method): Hook for SYNCHRONIZED methods.
7420
7421 * expr.c (build_java_jsr, build_java_ret): New functions
7422 (JSR,PRE): New macros
7423 (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
7424 (verify_jvm_instructions): tableswitch, lookupswitch,
7425 monitorenter, monitorexit, goto_w: verified.
7426 (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
7427 (build_java_monitor): New function.
7428 (MONITOR_OPERATION): Modified to call build_java_monitor()
7429 (verify_jvm_instructions): Started a thorough verification of
7430 invoke* bytecodes.
7431
7432Tue Aug 19 13:35:49 1997 Per Bothner <bothner@cygnus.com>
7433
7434 Support verification of jsr/ret subroutines (used for try/finally).
7435 * decl.c (return_address_type_node): New type node.
7436 * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
7437 RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
7438 LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED): New macros.
7439 (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
7440 TYPE_USED): New macros for special types in type_map.
7441
7442 * java-tree.h (BCODE_JUMP_TARGET): Renamed to BCODE_TARGET.
7443 (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET): Replaced by
7444 BCODE_JUMP_TARGET.
7445 * expr.c (expand_byte_code): Fix logic to warn of unused instructions.
7446
7447 * expr.c (can_widen_reference_to): New function.
7448 (pop_type): Use it.
7449 (merge_type_state): Support handling start of subroutine.
7450 (push_pending_block): Return char* error message, instead of calling
7451 fatal on an error. Also handle subroutines.
7452 (verify_jvm_instructions): Handle errors from push_poending_block.
7453 Support jsr and ret instructions.
7454
7455Tue Aug 19 13:33:36 1997 Per Bothner <bothner@cygnus.com>
7456
7457 * jcf-io.c (find_classfile): Fix thinko.
7458 * jcf-dump.c: Add CONVERT2 (to match changed javaop.def).
7459
7460Tue Aug 12 20:14:45 1997 Jason Merrill <jason@yorick.cygnus.com>
7461
7462 * Makefile.in (BISON): Remove.
7463
7464Thu Aug 7 23:08:24 1997 Per Bothner <bothner@cygnus.com>
7465
7466 * Makefile.in: Convert to autoconf.
7467 * config-lang.in (outputs): Added java/Makefile.
7468
7469 * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
7470 Rename cc1java to jc1.
7471
7472 * lang.c (init_parse, finihs_parse): New functions #ifdef USE_CPPLIB.
7473 * Makefile.in (INTERNAL_CFLAGS): Add @extra_c_flags.
7474
7475 * class.c (class_depth): Do load_class if needed.
7476
7477 Mostly better verification.
7478 * decl.c (pushdecl): Set TYPE_STUB_DECL for a type.
7479 (init_decl_processing): Change return type of soft_checkcast.
7480 * expr.c (expand_java_CHECKCAST): Do push_value of the "casted" value.
7481 * lang.c (put_decl_string, put_decl_node, lang_printable_name,
7482 lang_print_error): New functions.
7483 (lang_init): Set global hook print_error_function to lang_print_error.
7484 * expr.c: In the type_map ptr_type_node is only used for null now.
7485 (pop_type, merge_types): Hence ptr_type_node matches any reference.
7486 (merge_types): Dererence pointer to record types before comparing.
7487 (decode_newarray_type, merge_types): On error just return NULL.
7488 (build_java_binop): Add preliminary implementation (with warning)
7489 for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
7490 (lookup_label): Set DECL_IGNORED_P (for dwarf2out).
7491 (expand_compare, expand_java_goto, expand_java_call): Don't
7492 push_pending_block, since that only makes sense when verifying.
7493 (merge_type_state): Different return codes.
7494 (push_pending_block): A block may need to be verified more than once.
7495 (expand_byte_code): Warn about unused code at code generation time.
7496 (verify_jvm_instruction): Changed logic, since code may need to be
7497 re-verified if type-state has changed. Also, better error handling.
7498 Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
7499 Improve newarray, anewarray, ?aload, athrow,
7500 * java-tree.h (LABEL_CHANGED): New macro.
7501
7502Tue Aug 5 12:21:27 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7503
7504 * decl.c (soft_athrow_node): New global variable initialized.
7505 * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
7506 * typeck.c (convert): Added support for REAL_TYPE.
7507 (convert_to_char): New function.
7508 (convert): Handle CHAR_TYPE.
7509 * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
7510 SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
7511 (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
7512 promoted type.
7513 (verify_jvm_instructions): Added break a the end of bogus unop: label.
7514 (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
7515 (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
7516 (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
7517 (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
7518 to Use The Right Things.
7519 (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
7520 compatible with INT. BOOLEAN is made equivalent to BYTE.
7521 (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
7522 OPCODE_ifnonnull): Now supported.
7523 (build_java_athrow): New function.
7524
7525Mon Aug 4 15:46:45 1997 Per Bothner <bothner@cygnus.com>
7526
7527 Rename method name <init> to match G++ (and fix mangling).
7528 * class.c (layout_class): Replace method name of <init> by class name.
7529 (make_method_value): Do inverse renaming of constructor from <init>.
7530 * java-tree.h (DECL_CONSTRUCTOR_P): New macro.
7531 * typeck.c (lookup_java_constructor): New function.
7532 * expr.c (expand_invoke): If method_name is <init>, call
7533 lookup_java_constructor to find constructor.
7534
7535 * parse.c (get_constant): Handle CONSTANT_Float and CONSTANT_Double.
7536
7537Fri Aug 1 11:37:09 1997 Alexandre Petit-Bianco <apbianco@cygnus.com>
7538
7539 * parse.c (get_class_constant): Modified to handle array "classes"
7540 * typeck.c (set_local_type): Bug fixed when filling type_map[] with
7541 wide type.
7542 (convert): Modified to handle real type.
7543 * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
7544 soft_multianewarray, soft_newarray_node, soft_throw_node): New global
7545 variables declared.
7546 * decl.c (soft_badarrayindex_node, soft_anewarray_node,
7547 soft_multianewarray, soft_newarray_node, soft_throw_node): New
7548 global variables initialized.
7549 (find_local_variable): Handles the case of a pointer
7550 (end_java_method): Restore the use of one more scope
7551 * expr.c (build_java_arraynull_check, build_java_arrayaccess,
7552 build_java_array_length_access, expand_java_arrayload,
7553 expand_java_arraystore, expand_java_array_length,
7554 expand_java_multianewarray, expand_java_anewarray,
7555 build_java_check_indexed_type, is_array_type_p,
7556 build_java_throw_out_of_bound_exception): New functions.
7557 (STORE_INTERNAL): Now forces type of the decl to be type of the value.
7558 (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
7559 OPCODE_<t>aload): Implemented code for verification.
7560 (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
7561 ARRAY_NEW_MULTI): Macro defined.
7562 (CONVERT): Modified to invoke convert().
7563 (case OPCODE_aload2): Fixed index typo from 2 to 1.
7564
7565Thu Jul 31 12:48:18 1997 Per Bothner <bothner@cygnus.com>
7566
7567 * class.c (push_class): Set DECL_ARTIFICIAL (for dbxout.c).
7568 (build_class_ref, is_compiled_class): Handle pointer-to-record types.
7569 (make_class_data): Field name needs '/' as package prefix.
7570 * expr.c (type_stack_dup, java_stack_dup): Fix fencepost errors.
7571
7572Fri Jul 25 11:44:21 1997 Per Bothner <bothner@cygnus.com>
7573
7574 Implement debug information for local variables.
7575 * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
7576 DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
7577 DECL_LOCAL_SLOT_CHAIN): New macros.
7578 (struct lang_decl_var): New type.
7579 * parse.c (give_name_to_locals): Move to decl.c.
7580 * decl.c (give_name_to_locals): Re-written to Do The Right Thing.
7581 (start_java_method): Re-write parameter handling.
7582 (pending_local_decls): New global variable.
7583 (push_jvm_slot, maybe_pushlevels, maybe_poplevels): New functions.
7584 (find_local_variable): Accept pc so we can skips decls not in range.
7585 (struct binding_level): Add end_pc field.
7586 * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
7587 (various): Change so current pc gets passed to find_local_variable.
7588
7589 * decl.c (init_decl_processing): Re-arrange fields in
7590 class_type_node and and method_type_node to match kaffe 0.9.1.
7591 * class.c (make_method_value, make_class_data): Update
7592 initializations to match.
7593
7594Wed Jul 16 17:17:50 1997 Per Bothner <bothner@cygnus.com>
7595
7596 * class.c (unicode_mangling_length, emit_unicode_mangled_name,
7597 append_gpp_mangled_name, append_gpp_mangled_type): New functions.
7598 (push_super_field): New function.
7599 (make_class_data): Handle inheritance of class static initializer.
7600 (layout_class): New name mangling.
7601 * constants.c (build_constant_data_ref): Init type of data array
7602 to a one-element array.
7603 (build_constants_constructor): Set DECL_SIZE from complete array type.
7604 * decl.c: Rename class_type, object_type etc to class_type_node,
7605 object_type_node etc. Make former inherit from latter.
7606 * expr.c (expand_invoke): Add cast of function address.
7607 * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE): New.
7608 * parse.c (yyparse): Don't call layout_class here.
7609 * typeck.c (build_java_array_type): Set TYPE_ARRAY_ELEMENT.
7610
7611Sat Jun 14 12:06:57 1997 Per Bothner <bothner@cygnus.com>
7612
7613 * decl.c, class.c: Update method type to match latest Kaffe snapshot.
7614 * constants.c (lookup_name_constant): Renamed to alloc_name_constant.
7615 (alloc_class_constant): New.
7616 * expr.c (expand_invoke): Make sure method's class is initialized.
7617 * class.c (interits_from_p, emit_register_class): New functions.
7618 * parse.c (yyparse): Call emit_register_class.
7619
7620Mon Jun 9 18:08:06 1997 Per Bothner <bothner@cygnus.com>
7621
7622 * constants.c: New file, to handle constant pool.
7623 * Makefile.in (JAVA_OBJS): Add constants.o.
7624 * decl.c (init_decl_processing): Update, fix, finish various structs.
7625 (pushdecl_top_level): New.
7626 * parse.c (layout_class): Moved to class.c.
7627 * expr.c (java_push_constant_from_pool): New function.
7628 * class.c (build_class_ref): Make work fully
7629 (make_class_data): Emit super-class, constant pool, interface vector.
7630
7631Tue Jun 3 10:14:31 1997 Per Bothner <bothner@cygnus.com>
7632
7633 java-tree.h (DECL_SIGNATURE, BCODE_EMITTED): Remove.
7634 (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P): New.
7635 * class.c (class_depth): New function.
7636 (lookup_named_class): Replaced by new function lookup_class.
7637 * decl.c (object_type_node, string_type_node): New.
7638 Remove various types that we no longer need.
7639 * expr.c (verify_jvm_instructions): New separate verifier pass.
7640 (push_type, pop_type): New functions for verifier.
7641 (type_stack_dup, pop_argument_types, merge_types): Likewise.
7642 (expand_byte_code): Simplify, since we assume already verified.
7643 (expand_invoke): Now mostly works.
7644 * javaop.def: Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
7645 * lang.c (main_class): Move to parse.c. Don't make_class yet.
7646 * parse.c: Wait to allocate class object until we know its name.
7647 (layout_class): Calculate DECL_VINDEX for each virtual method.
7648 * typeck.c (get_array_type): Rename to ...
7649 (build_java_array_type): ... and provide working implementation.
7650 (build_java_signature): New function - build Java signature of type.
7651 (set_java_signature): New function - cache signature with type.
7652 (lookup_java_method): New function.
7653
7654Tue May 6 22:08:24 1997 Per Bothner <bothner@deneb.cygnus.com>
7655
7656 * class.c (ident_subst): Take extra SUFFIX parameter.
7657 (add_field): Set DECL_ASSEMBLER_NAME of static fields; more.
7658 (set_constant_value, build_static_field_ref, is_compiled_class): New.
7659 (build_class_ref): Actually implement.
7660 * decl.c, java-tree.h: Renamed some xx_type to xx_type_node.
7661 * decl.c (builtin_function): New.
7662 (init_decl_processing): Update for current Kaffe. Declare some
7663 builtin Kaffe functions.
7664 * expr.c (build_address_of): New.
7665 (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
7666 Renamed (from expand_java_new etc), and added working implementations.
7667 (build_field_ref): Now also handle static fields.
7668 (expand_invoke): Implement invokestatic, and start implement rest.
7669 * java-opcodes.h: Use javaop.def to avoid duplicated list.
7670 * javaop.def: Rename invokevirt -> invokevirtual.
7671 * lang.c (use_handles): Removed.
7672 * parse.c: Add support for ConstantValue atribute.
7673 Handle nested loading of a class. (JPOOL_UTF): New.
7674
7675Tue Mar 11 20:11:05 1997 Per Bothner <bothner@deneb.cygnus.com>
7676
7677 * expr.c (expand_java_pushc): Support #ifndef REAL_ARITHMETIC case.
7678
7679Thu Feb 27 14:24:29 1997 Per Bothner <bothner@deneb.cygnus.com>
7680
7681 * Make-lang.in (java.install-man): New empty rule.
7682 * typeck.c (set_local_type): New function.
7683 * expr.c (STORE_INTERNAL): Call find_local_variable,
7684 not find_stack_slot. Call set_local_type.
7685
7686Wed Feb 12 16:11:05 1997 Per Bothner <bothner@kalessin.cygnus.com>
7687
7688 * java-tree.h: Various new macros for constructing RECORD_TYPEs,
7689 and building RECORD_TYPE CONSTRUCTORs.
7690 Also support for creating Utf8Const objects from an INDETIFIER_NODE.
7691
7692 * lang.c (use_handles): Change the default to 0.
7693 * decl.c: Define and build class_type, field_type, utf8const_type.
7694 * class.c (make_class_data, make_field_value,
7695 get_access_flags_from_decl, build_class_ref, build_utf8_ref,
7696 hashUtf8String, strLengthUtf8, mangled_classname:
7697 Functions to build reflective data structures.
7698 * parse.c (yyparse): Call make_class_data.
7699
7700 * jcf-io.c (open_class, find_classfile): New functions.
7701 * jcf-dump.c: Support reading classfile from explicitly-named
7702 class file (without CLASSPATH searching).
7703
7704Thu Oct 24 14:10:16 1996 Per Bothner <bothner@deneb.cygnus.com>
7705
7706 * jcf-reader.c: Add parameter list to HANDLE_CONSTANT_Utf8.
7707 * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
7708 Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
7709 (get_constant): Now trivial for CONSTANT_Utf8.
7710
7711 * jcf.h: Make NEW_CPOOL the default.
7712 * jcf.h, jcf-reader.c, parse.c: Remove support for !NEW_CPOOL.
7713
7714Thu Oct 24 13:52:45 1996 Per Bothner <bothner@deneb.cygnus.com>
7715
7716 New directory.
This page took 1.070715 seconds and 5 git commands to generate.