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