OSDN Git Service

Various patches to emit better messages on verification errors.
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2001-01-14  Per Bothner  <per@bothner.com>
2
3         Various patches to emit better messages on verification errors.
4         * expr.c (push_type_0):  Return error indication on stack overflow,
5         instead of callinfg fatal.
6         (push_type):  Now just call push_type_0 (nd fatal on overflow).
7         (pop_type_0):  Return detailed error message (in a char** argument).
8         (pop_type):  If pop_type_0 fails, print error message.
9         (pop_argument_types):  Moved to verify.c.
10         * verify.c (pop_argument_types):  Moved from expr.c.
11         Return a (possible) error message, rather than void.
12         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
13         (verify_jvm_instruction):  Use new macros, improving error messages.
14         For case OPCODE_astore use object_ptr_type_node.
15         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
16         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
17
18         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
19         constant, return body without wrapper.  (Improves constant folding.)
20         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
21
22 2001-01-13  Per Bothner  <per@bothner.com>
23
24         * expr.c (expand_java_field_op):  Assigning to a final field outside
25         an initializer does not violate JVM spec, so should be warning, not
26         error.  (Sun's verifier does not complain - though MicroSoft's does.)
27         
28 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
29
30         * gjavah.c (version), jcf-dump.c (version): Update copyright year
31         to 2001.
32
33 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
34
35         * parse.y (resolve_expression_name): Permit instance variables from
36         enclosing context in super constructor call.
37         (resolve_qualified_expression_name): Permit enclosing class's qualified
38         "this" in super constructor call.
39
40 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
41
42         * class.c (build_utf8_ref): Remove last argument in call to
43         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
44         (build_class_ref): Likewise.
45         (build_static_field_ref): Likewise.
46         (get_dispatch_table): Likewise.
47         (layout_class_method): Likewise.
48         (emit_register_classes): Likewise.
49         * constants.c (build_constant_data_ref): Likewise.
50         * decl.c (builtin_function): Likewise.
51         (create_primitive_vtable): Likewise.
52         * expr.c (build_known_method_def): Likewise.
53         (build_jni_stub): Likewise.
54         (java_lang_expand_expr): Likewise.
55         
56 2001-01-10  Tom Tromey  <tromey@redhat.com>
57
58         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
59
60 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
61
62         * java-tree.h (lang_printable_name_wls): New prototype.
63         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
64         rather than `current_class' to print type name. Don't prepend type
65         names when printing constructor names.
66         (lang_printable_name_wls): New function.
67         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
68         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
69         * parse.y (patch_method_invocation): Message tuned for constructors.
70         (not_accessible_p): Grant `private' access from within
71         enclosing contexts.
72         
73 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
74
75         * parse.y (patch_binop): Compute missing type in error situations.
76
77 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
78
79         * class.c (make_class_data): Push initial value for "arrayclass".
80         * decl.c (init_decl_processing): Add new class field "arrayclass".
81
82 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
83
84         From patha@softlab.ericsson.se:
85         * parse.y (switch_label): Use build, not build1, to construct 
86         DEFAULT_EXPR.
87
88 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
89
90         * lang.c (lang_decode_option): Change -MA to -MP.
91         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
92         Update to new prototype; do quote targets.
93         (jcf_dependency_write): Update.
94
95 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
96
97         Shorten primitive array allocation path:
98         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
99         to create new primitive arrays.
100         * expr.c (build_newarray): If generating native code, call 
101         soft_newarray_node with a reference to the primitive TYPE identifier
102         instead of type_value.
103         
104 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
105
106         Fix for PRs gcj/312 and gcj/253:
107         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
108         dest if they arn't already.
109         * class.c (layout_class): Call maybe_layout_super_class on 
110         superinterfaces also, but only if compiling from bytecode.
111
112         Fix for PR gcj/373:
113         * parse.y (create_class): Set ACC_STATIC if class is declared in an
114         interface.
115
116 2000-12-15  Tom Tromey  <tromey@redhat.com>
117
118         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
119         set.
120
121 2000-12-14  Andrew Haley  <aph@redhat.com>
122
123         * boehm.c (mark_reference_fields): Change test to correctly detect
124         bitmap overflow.
125
126 2000-12-15  Andreas Jaeger  <aj@suse.de>
127
128         * config-lang.in (lang_dirs): Added.
129
130 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
131
132         * parse.y (end_artificial_method_body): Fixed undefined behavior.
133         Credits go to rth for finding it.
134
135 2000-12-13  Mike Stump  <mrs@wrs.com>
136
137         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
138
139 2000-11-07  Tom Tromey  <tromey@cygnus.com>
140
141         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
142         * lex.c (java_ignorable_control_p): Removed.
143         (java_letter_or_digit_p): Removed.
144         (java_start_char_p): New function.
145         (java_read_char): Return `int', not `unicode_t'.  Changed
146         callers.
147         (java_read_unicode): Likewise.
148         (java_read_unicode_collapsing_terminators): Likewise.
149         (java_get_unicode): Likewise.
150         (java_new_lexer): Initialize hit_eof.
151         (java_parse_end_comment): Take `int' argument.
152         (java_parse_doc_section): Likewise.
153         (java_parse_escape_sequence): Don't allow backlash-newline.
154         Return `int'.
155         * lex.h (JAVA_DIGIT_P): Removed.
156         (_JAVA_LETTER_OR_DIGIT_P): Removed.
157         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
158         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
159         (JAVA_PART_CHAR_P): New macro.
160         (UEOF): Now -1.
161         (JAVA_CHAR_ERROR): Now -2.
162         (java_lexer): New field `hit_eof'.
163         * chartables.h: New file.
164         * gen-table.pl: new file.
165
166 2000-11-20  Tom Tromey  <tromey@cygnus.com>
167             Alexandre Petit-Bianco  <apbianco@cygnus.com>
168
169         * parse.y (java_complete_lhs): Only allow compound assignment of
170         reference type if type is String.
171
172 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
173
174         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
175         jcf-path.c: Likewise.
176
177 2000-12-09  Anthony Green  <green@redhat.com>
178
179         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
180         filestart and filename_length as int values.
181
182 2000-12-07  Mo DeJong  <mdejong@redhat.com>
183
184         * jcf-io.c (find_class): Correct the logic that tests to see if a
185         .java file is newer than its .class file. The compiler was
186         incorrectly printing a warning when file mod times were equal.
187
188 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
189
190         * jvgenmain.c: Use ISPRINT not isascii.
191
192 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
193
194         * parse.y (end_artificial_method_body): Fixed typo.
195
196 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
197
198         * parse.y (patch_method_invocation): Pick the correct enclosing
199         context when creating inner class instances.
200         Fixes gcj/332.
201
202 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
203
204         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
205         Update copyright year to 2000.
206
207 2000-11-23  Anthony Green  <green@redhat.com>
208
209         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
210         Move current_file_list out of yyparse and make it static.
211
212         * expr.c: Declare quick_stack and tree_list_free_list as static
213         (init_expr_processing): Register quick_stack and
214         tree_list_free_list roots.
215
216 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
217
218         * parse.y (build_outer_field_access): New local `decl_ctx', use
219         it. Check for field's context and current class immediate outer
220         context inheritance.
221         (outer_field_access_p): Consider fields inherited from the last
222         enclosing context.
223         (build_access_to_thisn): Stop at the last enclosing context if
224         necessary.
225         Fixes gcj/367.
226
227 Thu Nov 23 02:19:14 2000  J"orn Rennecke <amylaar@redhat.com>
228
229         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
230
231 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
232
233         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
234         scratch buffer.
235
236 2000-11-20  Tom Tromey  <tromey@cygnus.com>
237
238         * jv-scan.c (help): Document --complexity.
239         (options): Added --complexity.
240         (flag_complexity): New global.
241         (main): Call `report'.
242         * parse-scan.y (complexity): New global.
243         (if_then_statement, if_then_else_statement,
244         if_then_else_statement_nsi, switch_block_statement_group,
245         while_expression, do_statement, for_begin, continue_statement,
246         throw_statement, catch_clause, finally, method_invocation,
247         conditional_and_expression, conditional_or_expression,
248         conditional_expression): Update complexity.
249         (reset_report): Reset complexity.
250         (report): New function.
251
252 2000-11-20  Tom Tromey  <tromey@cygnus.com>
253
254         * lex.c (yylex): Added STRICT_TK case.
255         * parse.y (STRICT_TK): Added.
256         * parse-scan.y (STRICT_TK): Added.
257         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
258         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
259         file.
260         * keyword.h: Rebuilt.
261         * keyword.gperf (strictfp): Added.
262
263 2000-11-20  Tom Tromey  <tromey@cygnus.com>
264
265         * lex.c (yylex): Recognize floating point constants with leading
266         0.
267
268 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
269
270         * java-tree.h (cyclic_inheritance_report): Constify.
271         * parse.y (cyclic_inheritance_report): Likewise.
272
273 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
274
275         * parse.y (goal): Remove call to ggc_add_string_root.
276
277 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
278
279         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
280         Create string in scratch buffer, then pass to build_string.
281
282 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
283
284         * parse.y (issue_warning_error_from_context): Add
285         ATTRIBUTE_PRINTF.
286
287 2000-11-11  Anthony Green  <green@redhat.com>
288
289         * jcf-parse.c (process_zip_dir): Add finput parameter.
290         (jcf_figure_file_type): Call process_zip_dir with appropriate
291         argument.
292
293 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
294
295         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
296         * jcf-parse.c (jcf_figure_file_type): Likewise.
297
298 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
299
300         * parse.y (create_new_parser_context): Use memset () instead of
301         bzero ().
302
303 2000-11-08  Tom Tromey  <tromey@cygnus.com>
304
305         * gjavah.c (process_file): Only include gcj/cni.h when generating
306         CNI stubs.
307
308 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
309
310         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
311         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
312         instead of bzero ().
313
314 2000-11-05  Tom Tromey  <tromey@cygnus.com>
315
316         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
317         * lex.c (IS_ZERO): New define.
318         (java_perform_atof): Error on floating point underflow.
319
320 2000-11-04  Tom Tromey  <tromey@cygnus.com>
321
322         * lex.c (java_parse_escape_sequence): Only read two octal
323         characters if the first one is greater than 3.  Don't allow
324         "octal" numbers to include the digits 8 or 9.
325
326 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
327
328         * Make-lang.in (java.distdir): Remove.
329
330 2000-11-03  Tom Tromey  <tromey@cygnus.com>
331
332         * Make-lang.in (java.dvi): New target.
333         Partial fix for PR other/567.
334
335         * lang-options.h: Mention -Wout-of-date.
336         * jcf-dump.c (flag_newer): New global.
337         * gjavah.c (flag_newer): New global.
338         * jcf-io.c (find_class): Only warn when flag_newer set.
339         * lang.c (flag_newer): New global.
340         (struct string_option): New declaration.
341         (lang_W_options): New global.
342         (process_option_with_no): New function.
343         (lang_decode_option): Use it.
344
345         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
346         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
347         `$'.
348
349         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
350         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
351         * lex.c (java_read_unicode): Removed `term_context' argument.
352         Recognize any number of `u' in `\u'.
353         (java_read_unicode_collapsing_terminators): New function.
354         (java_get_unicode): Use it.
355         (java_lineterminator): Removed.
356         (yylex): Produce error if character literal is newline or single
357         quote.  Return if eof found in middle of `//' comment.  EOF in
358         `//' comment is only an error if pedantic.
359         (java_ignorable_control_p): New function.
360         (java_parse_end_comment): Return if eof found in middle of
361         comment.
362         Include flags.h.
363         * jv-scan.c (pedantic): New global.
364
365 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
366
367         * parse.y (outer_field_access_p): Inherited fields aren't
368         consider outer fields.
369         (maybe_build_thisn_access_method): Use
370         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
371         (resolve_expression_name): Trigger an error if a static field
372         is being accessed as an outer field.
373
374 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
375
376         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
377         Fixes gcj/365.
378
379 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
380
381         * Make-lang.in: Move all build rules here from Makefile.in,
382         adapt to new context.  Wrap all rules that change the current
383         directory in parentheses.  Expunge all references to $(P).
384         When one command depends on another and they're run all at
385         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
386         all object-file generation rules.  Delete obsolete variables.
387
388         * Makefile.in: Delete.
389         * config-lang.in: Delete outputs= line.
390
391 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
392
393         * parse.y (patch_method_invocation): NULLify this_arg when already
394         inserted.
395         (maybe_use_access_method): Handle call to methods unrelated to the
396         current class. Fixed comment.
397         Fixes gcj/361.
398
399 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
400
401        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
402        scope.
403
404 2000-10-24  Tom Tromey  <tromey@cygnus.com>
405
406         * lex.c (java_new_lexer): Initialize new fields.  Work around
407         broken iconv() implementations.
408         (java_read_char): Swap bytes if required.  Use fallback decoder if
409         required.
410         (byteswap_init, need_byteswap): New globals.
411         (java_destroy_lexer): Only close iconv handle if it is in use.
412         * lex.h (java_lexer): New fields read_anything, byte_swap,
413         use_fallback.
414         Made out_buffer unsigned.
415
416 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
417
418         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
419         where an enclosing context can be set on the jdep.
420         (do_resolve_class): Fixed identation.
421
422 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
423
424         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
425
426         * jcf-reader.c (peek_attribute, skip_attribute): Only define
427         when requested.
428
429         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
430
431         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
432
433 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
434
435         * jcf-write.c (OP1): Update `last_bc'.
436         (struct jcf_block): Fixed indentation and typo in comments.  New
437         field `last_bc'.
438         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
439         follows `monitorenter'.
440         * parse.y (patch_synchronized_statement): New local `tmp'. Call
441         `patch_string'.
442         Fixes gcj/232.
443
444 2000-10-16  Tom Tromey  <tromey@cygnus.com>
445
446         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
447         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
448         * lang-options.h: Added -MA, -MT, -MF..
449         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
450         (DEPEND_TARGET_SET): New macro.
451         (DEPEND_FILE_ALREADY_SET): Likewise.
452         (init_parse): Handle new flags.
453         * jcf.h (jcf_dependency_print_dummies): Declare.
454         * Make-lang.in (s-java): Added mkdeps.o.
455         * Makefile.in (BACKEND): Added mkdeps.o.
456         (../gcjh$(exeext)): Added mkdeps.o.
457         (../jcf-dump$(exeext)): Added mkdeps.o.
458         * jcf-depend.c: Include mkdeps.h.
459         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
460         add_entry): Removed.
461         (jcf_dependency_reset): Rewrote.
462         (dependencies): New global.
463         (jcf_dependency_set_target): Rewrote.
464         (jcf_dependency_add_target): Likewise.
465         (jcf_dependency_add_file): Likewise.
466         (munge): Removed.
467         (print_ents): Removed.
468         (jcf_dependency_write): Rewrote.
469         (print_dummies): New global.
470         (jcf_dependency_print_dummies): New function
471         (jcf_dependency_write): Call deps_dummy_targets if required.
472
473 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
474
475         * gjavah.c (add_class_decl): Removed unused variables `tname',
476         `tlen' and `name_index'.
477         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
478         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
479         in `wfl_operator' with value.
480         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
481         (jcf_figure_file_type): Fixed identation.
482         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
483         * parse.y (analyze_clinit_body): New function.
484         (static_initializer:): Reset `current_static_block'.
485         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
486         `wfl_operator' with new value.
487         (lookup_cl): Use EXPR_WFL_FILENAME.
488         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
489         analyze_clinit_body.
490         (build_outer_field_access): Access to this$<n> built from
491         current_class, not its outer context.
492         (build_access_to_thisn): Fixed leading comment. Tidied things up.
493         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
494         (patch_method_invocation): Use `is_static_flag' when already
495         initialized.
496         (patch_newarray): Removed assignment in ternary operator.
497
498 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
499
500         * except.c (free_eh_ranges): Don't free `whole_range'.
501
502 2000-10-15  Anthony Green  <green@redhat.com>
503
504         * decl.c (init_decl_processing): Call init_class_processing before
505         anything else.
506
507 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
508
509         * check-init.c (check_init): Fixed leading comment. Use
510         LOCAL_FINAL_P.
511         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
512         (give_name_to_locals): Likewise.
513         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
514         fields in lang_decl_var.
515         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
516         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
517         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
518         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
519         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
520         (LOCAL_FINAL): Rewritten.
521         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
522         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
523         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
524         `init_final' fields.
525         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
526         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
527         (TYPE_HAS_FINAL_VARIABLE): New macro.
528         (struct lang_type): Added `afv' field.
529         * parse.y (check_static_final_variable_assignment_flag): New function.
530         (reset_static_final_variable_assignment_flag): Likewise.
531         (check_final_variable_local_assignment_flag): Likewise.
532         (reset_final_variable_local_assignment_flag): Likewise.
533         (check_final_variable_indirect_assignment): Likewise.
534         (check_final_variable_global_assignment_flag): Likewise.
535         (add_inner_class_fields): Use LOCAL_FINAL_P.
536         (register_fields): Handle local finals and final variables.
537         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
538         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
539         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
540         on local finals.
541         (java_complete_expand_methods): Loop to set
542         TYPE_HAS_FINAL_VARIABLE. Call
543         `reset_final_variable_local_assignment_flag' and
544         `check_final_variable_local_assignment_flag' accordingly before
545         and after constructor expansion. Call
546         `reset_static_final_variable_assignment_flag'
547         before expanding <clinit> and after call
548         `check_static_final_variable_assignment_flag' if the
549         current_class isn't an interface. After all methods have been
550         expanded, call `check_final_variable_global_assignment_flag' and
551         `check_static_final_variable_assignment_flag' if the current class
552         is an interface.
553         (maybe_yank_clinit): Fixed typo in comment.
554         (build_outer_field_access_methods): Removed old sanity check. Use
555         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
556         Don't create access methods for finals.
557         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
558         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
559         existing DECL_INIT has been processed.
560         (java_complete_lhs): Likewise.
561         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
562         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
563         logic.
564         (patch_assignment): Use LOCAL_FINAL_P.
565         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
566         DECL_INITIAL is nullified.
567         Fixes gcj/163.
568
569 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
570
571         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
572
573         * Makefile.in (parse.c, parse-scan.c): Likewise.
574
575 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
576
577         * class.c (temporary_obstack): Remove.
578         (make_class): Don't mess with obstascks.
579         (push_class): Likewise.
580         (set_super_info): Likewise.
581         (add_method_1): Likewise.
582         (add_method): Likewise.
583         (add_field): Likewise.
584         (build_utf8_ref): Likewise.
585         (build_class_ref): Likewise.
586         (build_static_field_ref): Likewise.
587         (finish_class): Likewise.
588         (push_super_field): Likewise.
589         (layout_class): Likewise.
590         (layout_class_methods): Likewise.
591         (init_class_processing): Likewise.
592         * constants.c (get_tag_node): Likewise.
593         (build_constant_data_ref): Likewise.
594         * decl.c (ggc_p): Remove.
595         (copy_lang_decl): Use ggc_alloc.
596         (complete_start_java_method): Don't mess with obstacks.
597         (start_java_method): Likewise.
598         (end_java_method): Likewise.
599         * except.c (link_handler): Use xmalloc.
600         (free_eh_ranges): New function.
601         (method_init_exceptions): Use it.
602         (add_handler): Use xmalloc.
603         (expand_start_java_handler): Don't mess with obstacks.
604         (prepare_eh_table_type): Likewise.
605         (expand_end_java_handler): Likewise.
606         * expr.c (push_value): Likewise.
607         (create_label_decl): Likewise.
608         (build_jni_stub): Likewise.
609         (java_lang_expand_expr): Likewise.
610         (note_instructions): Use xrealloc.
611         (java_push_constant_from_pool): Don't mess with obstacks.
612         (process_jvm_instruction): Likewise.
613         * java-tree.h (cyclic_inheritance_report): Remove duplicate
614         declaration.
615         * jcf-parse.c (get_constant): Don't mess with obstacks.
616         (read_class): Likewise.
617         (jcf_parse): Likewise.
618         * lex.c (expresion_obstack): Remove.
619         (java_lex): Don't use obstack_free.
620         * parse.h (exit_java_complete_class): Don't mess with obstacks.
621         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
622         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
623         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
624         * parse.y (gaol): Add more GC roots.
625         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
626         (lookup_field_wrapper): Likewise.
627         (obtain_incomplete_type): Don't mess with obstacks.
628         (build_alias_initializer_paramter_list): Adjust calls to MANGLE_*
629         macros.
630         (craft_constructor): Don't mess with obstacks.
631         (safe_layout_class): Likewise.
632         (java_complete_class): Likewise.
633         (source_end_java_method): Likewise.
634         (build_outer_field_access_methods): Likewise.
635         (build_outer_method_access_method): Likewise.
636         (maybe_build_thisn_access_method): Likewise.
637         (build_dot_class_method_invocation): Likewise.
638         (java_complete_tree): Likewise.
639         (java_complete_lhs): Likewise.
640         (do_merge_string_cste): Likewise.
641         (patch_string_cst): Likewise.
642         (array_constructor_check_entry): Likewise.
643         * typeck.c (build_java_array_type): Likewise.
644         (parse_signature_string): Likewise.
645         (build_java_signature): Likewise.
646
647 2000-10-12  Tom Tromey  <tromey@cygnus.com>
648
649         Fix for PR gcj/356:
650         * gjavah.c (add_class_decl): Don't special-case inner classes.
651         (add_namelet): Likewise.
652
653 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
654
655         * java-tree.h: Constify current_encoding.
656         * lang.c: Constify current_encoding.
657
658 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
659
660         * jvgenmain.c (class_mangling_suffix): Omit `.'.
661         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
662
663 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
664
665         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
666         patch. Fixes gcj/340.
667
668 2000-10-10  Tom Tromey  <tromey@cygnus.com>
669
670         * lex.c (java_new_lexer): Initialize out_first and out_last
671         fields.
672         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
673
674 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
675
676         * parse.y (pop_current_osb): New function.
677         (array_type:): Use `dims:', changed actions
678         accordingly. Suggested by Anthony Green.
679         (array_creation_expression:): Used pop_current_osb.
680         (cast_expression:): Likewise.
681         (search_applicable_method_list): Fixed indentation.
682
683 2000-10-08  Anthony Green  <green@redhat.com>
684
685         * parse.y (array_type_literal): Remove production.
686         (type_literals): Refer to array_type, not array_type_literal.
687
688 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
689
690         Patch contributed by Corey Minyard.
691         * decl.c (check_local_named_variable): New function.
692         (tree check_local_unnamed_variable): Likewise.
693         (find_local_variable): Splitted. Call check_local_{un}named_variable.
694
695 2000-10-07  Anthony Green  <green@redhat.com>
696
697         * class.c (layout_class): Handle case where superclass can't be
698         layed out yet.
699
700 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
701
702         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
703         gperf.
704
705 2000-10-05  Tom Tromey  <tromey@cygnus.com>
706
707         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
708         * jvgenmain.c (class_mangling_prefix): Removed.
709         (class_mangling_suffix): New global.
710         (main): Use it.
711         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
712         `$'.
713         (print_method_info): Handle overrides for static and final
714         methods.
715         (process_file): Generate declaration for class object field.
716         * class.c (cxx_keywords): New array.
717         (utf8_cmp): New function.
718         (cxx_keyword_p): New function.
719         (layout_class_method): Mangle C++ keywords by appending `$'.
720         (mangle_field): New function.
721         (mangle_class_field): Use mangle_field.  Mangle class name as
722         `class$'.
723         (mangle_static_field): Use mangle_field.
724
725 Tue Oct  3 13:44:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
726
727         * decl.c (find_local_variable): Removed uncessary type check and
728         fixed range check typo. From Corey Minyard.
729
730 Wed Sep 13 16:06:52 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
731
732         * decl.c (give_name_to_locals): New local `code_offset'. Call
733         `maybe_adjust_start_pc'.
734         * expr.c (note_instructions): New function.
735         (expand_byte_code): Don't collect insn starts here.
736         (peek_opcode_at_pc): New function.
737         (maybe_adjust_start_pc): Likewise.
738         * java-tree.h (maybe_adjust_start_pc): Declare.
739         (note_instructions): Likewise.
740         * jcf-parse.c (parse_class_file): Call `note_instructions'.
741
742 Wed Sep 13 11:50:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
743
744         * parse.y (field_access:): Fixed indentation.
745         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
746
747 2000-09-07  Tom Tromey  <tromey@cygnus.com>
748
749         Fix for PR gcj/307:
750         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
751         JPRIMITIVE_TYPE_P, for arithmetic operators.
752         (patch_method_invocation): Indentation fix.
753         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
754         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
755         (do_unary_numeric_promotion): Cleaned up code.
756         (valid_cast_to_p): Handle boolean correctly.
757
758 2000-09-27  Tom Tromey  <tromey@cygnus.com>
759
760         * lex.c (java_read_unicode): Reset bs_count when finished with
761         `\u' sequence.
762
763 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
764
765         Convert to GC.
766         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
767         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
768         (typeck.o): Depend on ggc.h.
769         * class.c (add_method_1): Use GC functions for allocation.
770         (init_class_processing): Register roots.
771         * decl.c (ggc_p): Set to 1.
772         (pending_local_decls): Make it static.
773         (push_jvm_slot): Use GC functions for allocation.
774         (init_decl_processing): Register roots.
775         (give_name_to_locals): Use GC functions for allocation.
776         (lang_mark_tree): New function.
777         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
778         functions for allocation.
779         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
780         * lex.c (java_lex): Use build_string, rather than replicating it
781         inline.
782         * parse.y (goal): Add more roots.
783         (mark_parser_ctxt): New function.
784         * typeck.c: Include ggc.h.
785
786 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
787
788         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
789         contains something else than MODIFY_EXPR.
790
791 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
792
793         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
794         * Makefile.in (parse.o): Depend on ggc.h.
795         (class.o): Likewise.
796         (constants.o): Likewise.
797         (decl.o): Likewise.
798         (expr.o): Likewise.
799         (jcf-parse.o): Likewise.
800         (jcf-write.o): Likewise.
801         (mangle.o): Likewise.
802         * class.c: Include ggc.h.
803         (build_static_field_ref): Register GC roots.
804         (layout_class): Likewise.
805         (init_class_processing): Likewise.
806         * constants.c: Include ggc.h.
807         (current_constant_pool_data_ref): Remove.
808         (tag_nodes): Move it to ...
809         (get_tag_node): ... here.  Register GC roots.
810         * decl.c: Include ggc.h.  Remove many global tree definitions.
811         (throw_node): Define.
812         (java_global_trees): Likewise.
813         (predef_filenames): Make the size a constant.
814         (init_decl_processing): Adjust accordingly.
815         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
816         * expr.c: Include ggc.h.
817         (init_expr_processing): Register GC roots.
818         (build_invokeinterface): Likewise.
819         * java-tree.h: Replace extern tree declarations with macros.
820         (java_global_trees): New variable.
821         (java_tree_index): New enumeration.
822         (init_jcf_parse): Declare.
823         * jcf-parse.c: Include ggc.h.
824         (current_class): Remove declaration.
825         (main_class): Likewise.
826         (all_class_list): Likewise.
827         (predefined_filename_p): Adjust for constant size of
828         predef_filenames.
829         (init_jcf_parse): New function.
830         * jcf-write.c: Include ggc.h.
831         (generate_classfile): Register GC roots.
832         (append_synthetic_attribute): Likewise.
833         (append_innerclass_attribute_entry): Likewise.
834         * lang.c: Include ggc.h.
835         (lang_print_error): Register GC roots.
836         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
837         with macros.
838         * parse.y: Include ggc.h.
839         (wfl_operator): Remove.
840         (goal): Register GC roots.
841         (java_pop_parser_context): Adjust for new field names.
842         (java_parser_context_save_global): Likewse.
843         (java_parser_context_restore_global): Likewise.
844         (java_parser_context_suspend): Likewise.
845         (java_parser_context_resume): Likewise.
846         (verify_constructor_circularity): Register GC roots.
847         (lookup_cl): Likewise.
848         (java_reorder_fields): Likewise.
849         (build_current_this): Likewise.
850         (class_in_current_package): Likewise.
851         (argument_types_convertible): Likewise.
852         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
853
854 2000-09-14  Tom Tromey  <tromey@cygnus.com>
855
856         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
857
858 2000-09-13  Tom Tromey  <tromey@cygnus.com>
859
860         * jcf-parse.c: Include <locale.h>.
861         * jv-scan.c: Include <locale.h>.
862
863 2000-09-12  Tom Tromey  <tromey@cygnus.com>
864
865         * expr.c (pop_type_0): Return `Object' if trying to merge two
866         interface types.
867         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
868         interface types; `Object' is always a valid supertype.
869
870 2000-09-12  Tom Tromey  <tromey@cygnus.com>
871
872         Fix for PR gcj/33:
873         * jv-scan.c (help): Document --encoding.
874         (options): Added `encoding' entry.
875         (OPT_ENCODING): New define.
876         (main): Handle --encoding.
877         Include <langinfo.h> if nl_langinfo exists.
878         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
879         --encoding.
880         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
881         (parse_source_file): Correctly call java_init_lex.  Added `finput'
882         argument.  Use nl_langinfo to determine default encoding.
883         * java-tree.h (current_encoding): Declare.
884         * parse.y (java_parser_context_restore_global): Don't restore
885         `finput'.
886         (java_parser_context_save_global): Don't set `finput' field.
887         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
888         if required.
889         * lang.c (current_encoding): New global.
890         (lang_decode_option): Recognize `-fencoding='.
891         (finish_parse): Don't close finput.
892         * parse.h (struct parser_ctxt): Removed `finput' and
893         `unget_utf8_value' fields.  Added `lexer' field.
894         (java_init_lex): Fixed declaration.
895         * lex.c (java_new_lexer): New function.
896         (java_destroy_lexer): Likewise.
897         (java_read_char): Added `lex' argument.  Handle iconv case.
898         (java_read_unicode): Added `lex' argument.  Count backslashes in
899         lexer structure.
900         (java_init_lex): Added `finput' and `encoding' arguments.  Set
901         `lexer' field in ctxp.
902         (BAD_UTF8_VALUE): Removed.
903         (java_lex): Handle seeing UEOF in the middle of a string literal.
904         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
905         (java_lexer): New structure.
906         (UNGETC): Removed.
907         (GETC): Removed.
908         (DEFAULT_ENCODING): New define.
909         (java_destroy_lexer): Declare.
910
911 2000-09-12  Tom Tromey  <tromey@cygnus.com>
912
913         Fix for PR gcj/343:
914         * lex.c (java_init_lex): Initialize java_io_serializable.
915         * parse.y (java_io_serializable): New global.
916         (valid_ref_assignconv_cast_p): An array can be cast to
917         serializable.
918
919 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
920
921         * decl.c, expr.c: Include defaults.h if not already included.
922         Don't define the *_TYPE_SIZE macros.
923
924 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
925
926         * typeck.c (build_java_array_type): Correct first parameter
927         in ADJUST_FIELD_ALIGN invocation.
928
929 2000-09-06  Tom Tromey  <tromey@cygnus.com>
930
931         * lang-specs.h: Also recognize `-femit-class-files'.
932
933 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
934
935         * verify.c (merge_types): Load the types to merge if necessary.
936
937 2000-09-02  Anthony Green  <green@redhat.com>
938
939         * jcf-io.c: Include zlib.h.
940         (open_in_zip): Read compressed class file archives.
941         * zipfile.h (ZipDirectory): Add uncompressed_size and
942         compression_method fields.
943         * zextract.c (read_zip_archive): Collect file compression info.
944
945 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
946
947         * parse.y (do_resolve_class): Also explore superclasses of
948         intermediate enclosing contexts when searching for inner classes.
949
950 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
951
952         * parse.y (variable_declarator_id:): Better error message.
953         (expression_statement:): Use YYNOT_TWICE.
954         (cast_expression:): Likewise.
955         (assignment:): Likewise.
956
957 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
958
959         * parse.y (do_merge_string_cste): New locals. Create new
960         STRING_CSTs each time, use memcpy. Fixes gcj/311.
961
962 2000-08-07  Hans Boehm  <boehm@acm.org>
963
964         * boehm.c (mark_reference_fields): Set marking bits for all words in
965         a multiple-word record.
966         (get_boehm_type_descriptor): Use the procedure marking descriptor for
967         java.lang.Class.
968
969 2000-08-31  Mike Stump  <mrs@wrs.com>
970
971         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
972         jcf-dump$(exeext)): Make parallel safe.
973
974 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
975
976         * jcf-parse.c (set_source_filename): Constify a char *.
977         * jcf-write.c (append_innerclasses_attribute,
978         make_class_file_name): Constify a char *.  Don't recycle a
979         variable for an unrelated purpose.
980         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
981         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
982
983 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
984
985         * expr.c (can_widen_reference_to): Fixed indentation.
986         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
987         * parse.y: `finit$' replaces `$finit$' in comments.
988         (try_builtin_assignconv): Fixed leading comment.
989
990 2000-08-25  Greg McGary  <greg@mcgary.org>
991
992         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
993
994 2000-08-24  Greg McGary  <greg@mcgary.org>
995
996         * lang.c (lang_decode_option): Use ARRAY_SIZE.
997         * parse.y (BINOP_LOOKUP): Likewise.
998
999 2000-08-22  Andrew Haley  <aph@cygnus.com>
1000
1001         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
1002         sign extending. Fixes gcj/321.
1003         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
1004         combining to make a jlong. Fixes gcj/321.
1005
1006 2000-08-21  Nix  <nix@esperi.demon.co.uk>
1007
1008         * lang-specs.h: Do not process -o or run the assembler if
1009         -fsyntax-only.
1010
1011 2000-08-16  Andrew Haley  <aph@cygnus.com>
1012
1013         * typeck.c (build_java_array_type): Rewrite code to do array
1014         alignment.  Take into account back-end macros when aligning array
1015         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
1016         user to set alignment. Fixes gcj/252 and 160.
1017
1018 2000-08-09  Tom Tromey  <tromey@cygnus.com>
1019
1020         * parse.y (check_abstract_method_definitions): Now return `int'.
1021         Check implemented interfaces.  Fixes PR gcj/305.
1022
1023         * parse.y (patch_switch_statement): Disallow `long' in switch
1024         expressions.  Fixes PR gcj/310.
1025
1026 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1027
1028         * decl.c (finit_leg_identifier_node): New global.
1029         (init_decl_processing): Use `finit$' to initialize
1030         finit_identifier_node. Use `$finit$' to initialize
1031         finit_leg_identifier_node.
1032         * expr.c (expand_java_field_op): Use ID_FINIT_P.
1033         * java-tree.h (finit_identifier_node): Changed attached comment.
1034         (finit_leg_identifier_node): New declaration.
1035         (ID_FINIT_P): Take finit_identifier_node and
1036         finit_leg_identifier_node into account. This is a backward
1037         compatibility hack.
1038
1039 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1040
1041         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
1042         Jan 6 2000 patch.
1043         (generate_bytecode_insns): Check `nargs' before emitting it.
1044         * verify.c (merge_type_state): Fixed typo.
1045         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
1046         generate_bytecode_{conditional,insns}.
1047
1048 Sun Aug 13 09:41:49 2000  Anthony Green  <green@redhat.com>
1049
1050         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
1051         for -pg builds).
1052
1053 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1054
1055         * class.c (maybe_layout_super_class): Fixed indentation.
1056         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
1057         (java_check_methods): New function declaration.
1058         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
1059         instead of `str_ptr'.
1060         * jcf-write.c (generate_bytecode_insns): Emit number the of args
1061         of a `invokeinterface' at the right time.
1062         * parse.h (WFL_STRIP_BRACKET): New macro.
1063         (SET_TYPE_FOR_RESOLUTION): Use it.
1064         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
1065         (check_class_interface_creation): Don't check for cross package
1066         innerclass name clashes.
1067         (method_header): Behave properly if MDECL is `error_mark_node'.
1068         (method_declarator): Return `error_mark_node' if bogus current
1069         class.
1070         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
1071         (resolve_and_layout): New local `decl_type', set and used. Call
1072         java_check_methods.
1073         (java_check_methods): New method.
1074         (java_layout_classes): Use it.
1075         (resolve_qualified_expression_name): No EH check necessary in
1076         access$<n>.
1077         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
1078         `case' statement.
1079         (patch_assignment): Set DECL_INITIAL on integral final local.
1080
1081 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1082
1083         * java-tree.h (flag_extraneous_semicolon): New extern.
1084         * lang-options.h: (-Wextraneous-semicolon): New option.
1085         * lang.c (flag_redundant): Fixed typo in leading comment.
1086         (flag_extraneous_semicolon): New global.
1087         (lang_decode_option): Set `flag_extraneous_semicolon' when
1088         -Wall. Decode `-Wextraneous-semicolon'.
1089         * parse.y (type_declaration:): Removed `SC_TK' hack, added
1090         `empty_statement' rule.
1091         (class_body_declaration): Likewise.
1092         (method_body:): Accept `;' as a method body.
1093         (static_initializer:): Removed `SC_TK' hack.
1094         (constructor_block_end:): Likewise.
1095         (empty_statement:): Report deprecated empty declaration. Fixes
1096         gcj/295
1097
1098 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1099
1100         * parse.y (build_dot_class_method_invocation): Changed parameter
1101         name to `type'. Build signature from `type' and convert it to a
1102         STRING_CST if it's an array.
1103         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
1104         to use `ref_type' directly.
1105
1106 Sun Aug  6 00:47:24 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>
1107
1108         * lang-options.h: Added a comma after the last element to avoid
1109         syntax errors when other languages define additional options.
1110
1111 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
1112
1113         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
1114         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
1115         (jc1): Link with $(BACKEND).
1116         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
1117
1118 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
1119
1120         * jvspec.c: Adjust type of second argument to
1121         lang_specific_driver, and update code as necessary.
1122
1123         * class.c (build_dtable_decl): Initialize dummy.
1124
1125 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1126
1127         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
1128         method bodies not to rule out discarding `<clinit>'; don't use
1129         <clinit> to initialize static fields with constant initializers.
1130
1131 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1132
1133         * gjavah.c (print_method_info): Added `synth' parameter. Skip
1134         synthetic methods.
1135         (method_synthetic): New global.
1136         (HANDLE_METHOD): Recognize synthetic method and tell
1137         `print_method_info' about it.
1138         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
1139         processing a synthetic method.
1140         * jcf-reader.c (skip_attribute): New function.
1141         ( skip_attribute): Likewise.
1142
1143 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1144
1145         * parse.y (build_outer_field_access): Fixed comments.
1146         (fix_constructors): Emit the initialization of this$<n> before
1147         calling $finit$.
1148         (resolve_qualified_expression_name): Build an access to `decl' if
1149         necessary.
1150
1151 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1152
1153         * parse-scan.y (curent_class): Non longer const.
1154         (inner_qualifier, inner_qualifier_length): Deleted.
1155         (current_class_length): New global.
1156         (bracket_count): Fixed typo in leading comment.
1157         (anonymous_count): New global.
1158         (class_instance_creation_expression:): Handle anonymous classes.
1159         (anonymous_class_creation:): New rule.
1160         (push_class_context): Rewritten.
1161         (pop_class_context): Likewise.
1162         (INNER_QUALIFIER): Macro deleted.
1163         (report_class_declaration): call `push_class_context' when
1164         entering the function. `fprintf' format modified not to use
1165         INNER_QUALIFIER.
1166         (report_class_declaration): Assign `package_name' and
1167         `current_class' to NULL separatly.
1168
1169 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1170
1171         * expr.c (build_invokeinterface): Call layout_class_methods on
1172         target interface.
1173
1174 2000-07-27  Tom Tromey  <tromey@cygnus.com>
1175             Anthony Green  <green@cygnus.com>
1176             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1177
1178         * class.c (make_class_data): Create vtable for abstract classes.
1179         (get_dispatch_table): Changed to cope with abstract classes.
1180
1181 2000-07-27  Tom Tromey  <tromey@cygnus.com>
1182
1183         * parse.y (patch_method_invocation): Don't reverse the argument
1184         list when dealing with anonymous class constructors. Fixed typo in
1185         comment.
1186
1187 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1188
1189         * parse.y (build_alias_initializer_parameter_list): Reverse
1190         crafted list when building aliases for anonymous class
1191         constructors.
1192
1193 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1194
1195         * parse.y (jdep_resolve_class): Don't bother checking potential
1196         innerclass access if `decl' is NULL.
1197         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
1198         WFL.
1199
1200 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1201
1202         * parse.c: Remove (again.)
1203
1204 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1205
1206         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
1207         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
1208         outside the `if' statement, alias to innerclass removed, `decl'
1209         used to mark the class complete.
1210
1211 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1212
1213         * parse.y (simple_name:): Fixed typo in error message.
1214
1215 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1216
1217         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
1218         or its first operand can be error marks.
1219
1220 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1221
1222         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
1223         * parse.y (method_header): Likewise.
1224
1225 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1226
1227         * parse.y (process_imports): Consider that one might be trying to
1228         import an innerclass. Fixes gcj/254
1229
1230 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1231
1232         * parse.y (find_as_inner_class): Handle the case where the
1233         enclosing context of an innerclass has been loaded as bytecode.
1234
1235 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1236
1237         * parse.y (simple_name:): Reject `$' in type names.
1238         (resolve_type_during_patch): Use `type' as a second
1239         argument to resolve_no_layout. Fixes gcj/257.
1240
1241 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
1242
1243         * parse.y (find_most_specific_methods_list): Select the only
1244         non-abstract method even if max has been set.
1245         Fixes gcj/285, gcj/298.
1246
1247 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
1248
1249         * lang-specs.h: Added %(jc1) to java compiler options.
1250
1251 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
1252
1253         * .cvsignore: New file.
1254
1255 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1256
1257         * parse.y (not_accessible_p): Access granted to innerclasses
1258         (indirectly) extending the reference type. Fixes gcj/249.
1259
1260 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1261
1262         * parse.y (patch_method_invocation): Fixed comment.
1263         (maybe_use_access_method): Build this$<n>s to the context of the
1264         target method, or a type that extends it. Fixes gcj/242.
1265
1266 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
1267
1268         * parse.c: Remove.
1269
1270 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1271
1272         * parse.y (fold_constant_for_init): Avoid bullish conversion.
1273
1274 2000-07-13  Tom Tromey  <tromey@cygnus.com>
1275
1276         * lang-specs.h: Added %{I*}.
1277
1278 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
1279
1280         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
1281
1282 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
1283
1284         * parse-scan.c: Remove.
1285
1286 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1287
1288         * class.c (set_super_info): Handled protected inner classes.
1289         (common_enclosing_context_p): Bail early if arguments aren't both
1290         inner classes.
1291         (get_access_flags_from_decl): Handle private and protected inner
1292         classes.
1293         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
1294         (CLASS_PROTECTED): Likewise.
1295         (struct lang_type): New bitfield `poic'.
1296         * parse.y (jdep_resolve_class): Call check_inner_class_access on
1297         inner classes only.
1298         (check_inner_class_access): Renamed arguments, added
1299         comments. Handles protected inner classes (fixes gcj/225)
1300         (not_accessible_p): Fixed comments. Avoid handling inner classes.
1301
1302 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1303
1304         * parse.y (resolve_qualified_expression_name): Verify qualified
1305         access to `this'. Fixes gcj/239.
1306
1307 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1308
1309         * jcf-write.c (generate_classfile): Don't install ConstantValue
1310         for null pointers.
1311
1312 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1313
1314         * parse.y (resolve_qualified_expression_name): Handle inner class
1315         access. Fixes gcj/256.
1316
1317 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1318
1319         * jcf-write.c (generate_classfile): Properly install the
1320         ConstantValue attribute and the initial value constant pool index
1321         on string constants.
1322         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
1323         class files.
1324
1325 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1326
1327         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
1328         construct.
1329         * parse.y (find_as_inner_class): Fixed typo.
1330         (do_resolve_class): Explore enclosing contexts when searching for
1331         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
1332         (check_inner_class_access): Check `decl' which can be null in case
1333         of previous errors.
1334
1335 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1336
1337         * java-tree.h (java_debug_context): Declared `extern'.
1338         (safe_layout_class): Likewise.
1339         * parse.y (resolve_field_access): Field must be `static' in order
1340         to be replaced by its initial value. Added comments.
1341         (find_applicable_accessible_methods_list): Fixed typo.
1342         (find_most_specific_methods_list): Methods found in innerclasses
1343         take over methods founds in the enclosing contexts.
1344         (java_complete_tree): Loosen restrictions on the type of DECLs
1345         that can be replaced by their initialization values.
1346         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
1347
1348 2000-07-05  Tom Tromey  <tromey@cygnus.com>
1349
1350         * Make-lang.in (PARSE_DIR): New macro.
1351         (PARSE_RELDIR): Likewise.
1352         (PARSE_C): Likewise.
1353         (PARSE_SCAN_C): Likewise.
1354         ($(PARSE_C)): New target.
1355         ($(PARSE_SCAN_C)): Likewise.
1356         (SET_BISON): New macro.
1357         (BISONFLAGS): Likewise.
1358         (JAVABISONFLAGS): Likewise.
1359
1360 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
1361
1362         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
1363         argument on the first pass for CNI as well as JNI.
1364         (print_method_info): Set up method name on the first pass only.
1365
1366 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1367
1368         * parse.y (parser_qualified_classname): Removed parameter
1369         `is_static'.
1370         (create_interface): Removed first passed parameter to
1371         parser_qualified_classname.
1372         (create_class): Likewise. Don't install alias on static
1373         innerclasses. Fixes gcj/275.
1374
1375 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1376
1377         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
1378         debugable statement with empty_stmt_node. Fixes gcj/272
1379
1380 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1381
1382         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
1383         gcj/271.
1384
1385 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1386
1387         * jcf-write.c (push_long_const): Appropriately cast short negative
1388         constant to jword.
1389
1390 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1391
1392         * parse.y (verify_constructor_super): Use loop variable
1393         `m_arg_type' initialized with `mdecl_arg_type'.
1394
1395 2000-06-29  Tom Tromey  <tromey@cygnus.com>
1396
1397         * parse.y (resolve_field_access): Handle case where `type_found'
1398         is NULL.
1399
1400 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1401
1402         * expr.c (lookup_field): The same field can be found through two
1403         different interface. Don't declare it ambiguous in that case.
1404
1405 2000-06-27  Tom Tromey  <tromey@cygnus.com>
1406
1407         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
1408         follows \r, then unget it at a lower level.
1409
1410 2000-06-26  Tom Tromey  <tromey@cygnus.com>
1411
1412         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
1413         java_complete_tree.
1414
1415 2000-06-25  Tom Tromey  <tromey@cygnus.com>
1416
1417         * parse.y (for_statement): Wrap expression in a WFL if it is a
1418         constant.  For PR gcj/268.
1419
1420 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1421
1422         * parse.y (do_resolve_class): Minor optimiztion in the package
1423         list search. Removed unecessary test and return statement.
1424         (valid_ref_assignconv_cast_p): Order of arguments to
1425         enclosing_context_p fixed.
1426
1427 2000-06-24  Tom Tromey  <tromey@cygnus.com>
1428
1429         * expr.c (lookup_field): Print error and return error_mark_node if
1430         field reference is ambiguous.
1431
1432         * parse.y (check_abstract_method_definitions): Also check if
1433         `other_method' is abstract.
1434
1435 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1436
1437         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
1438         classes.
1439         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
1440         (struct lang_type): New field `pic'.
1441         (CLASS_PRIVATE): New macro.
1442         * parse.y (check_inner_class_access): New function.
1443         (jdep_resolve_class): Call it.
1444
1445 2000-06-23  Tom Tromey  <tromey@cygnus.com>
1446
1447         * parse.y (patch_incomplete_class_ref): Initialize the returned
1448         class.  For PR gcj/260.
1449
1450 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1451
1452         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
1453
1454 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1455
1456         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
1457         Java specific checks.
1458         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
1459         screened by DECL_P.
1460         * java-tree.def (CASE_EXPR): Marked 'e'.
1461         (DEFAULT_EXPR): Likewise.
1462         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
1463         screened by DECL_P.
1464         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
1465         Java specific checks.
1466         (generate_bytecode_insns): Test try_block for BLOCK before using
1467         BLOCK_EXPR_BODY.
1468         * parse.y (build_wfl_wrap): Added `location' argument. Set
1469         EXPR_WFL_LINECOL accordingly.
1470         (dim_expr:): Wrap constants with WFLs.
1471         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
1472         (resolve_package): Check for `stmt' not being a BLOCK before
1473         building a debuggable statement with it.
1474         (make_qualified_primary): Added extra parameter to build_wfl_wrap
1475         invocation.
1476         (resolve_field_access): Make sure `decl' is a DECL before treating
1477         it as such.
1478         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
1479         IDENTIFIER_NODE before treating it as such.
1480         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
1481         treating it as such.
1482         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
1483         to be applied only on non array types.
1484
1485 2000-06-16  Per Bothner  <per@bothner.com>
1486
1487         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
1488         define in terms of DECL_RESULT, as that fails when --enable-checking.
1489
1490 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1491
1492         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
1493         types the same in comparison.
1494         (CHECK_OP): Add static prototype.
1495
1496 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
1497
1498         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
1499         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
1500         * parse.c: Rebuilt.
1501
1502 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1503
1504         * decl.c (create_primitive_vtable): Prototype.
1505
1506         * jcf-write.c (generate_bytecode_insns): Initialize variable
1507         `saved_context'.
1508
1509         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
1510
1511 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
1512
1513         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
1514         to track searched classes, and do not search the same class more than
1515         once. Call find_applicable_accessible_methods_list on immediate
1516         superclass, instead of search_applicable_method_list on all ancestors.
1517         Fix for PR gcj/238.
1518
1519 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
1520
1521         * parse.y (register_fields): Permit static fields in inner classes
1522         if they are final. Fix for PR gcj/255.
1523
1524 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1525
1526         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
1527         * parse.y (find_in_imports): Returned type changed to void,
1528         leading comment fixed.
1529         (register_package): New function.
1530         (qualify_and_find): Likewise.
1531         (package_declaration:): Use `register_package'.
1532         (single_type_import_declaration:): Removed local variable
1533         `node'. Added missing `;' for consistency.
1534         (type_import_on_demand_declaration:): Use `chainon' to link new
1535         entries.
1536         (lookup_field_wrapper): Lookup local variables defined in outer
1537         contexts first.
1538         (java_complete_class): Don't reverse the list of imported on demand.
1539         (do_resolve_class): Reorganized. Removed local variable
1540         `original_name'. Call `qualify_and_find' with the current package
1541         name, invoke `find_in_imports_on_demand' right after. Call
1542         `qualify_and_find' with the packages we've seen so far. Fixed
1543         operations numbering in comments.
1544         (java_expand_class): Don't reverse `package_list'.
1545         (find_most_specific_methods_list): New local variables `abstract'
1546         and `candidates'. Use them to pick the right method.
1547
1548 Tue Jun  6 11:39:05 2000  Tom Tromey  <tromey@ferrule.cygnus.com>
1549
1550         * parse.y (check_modifiers_consistency): Don't subtract out
1551         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
1552
1553 2000-06-04  Philipp Thomas  <pthomas@suse.de>
1554
1555         * Makefile.in (INTLLIBS): New.
1556         (LIBS): Add above.
1557         (DEPLIBS): Ditto.
1558
1559 Fri Jun  2 16:48:55 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1560
1561         * class.c (get_dispatch_table): Build the vtable dummy entry list
1562         element with a null purpose. Fixed leading comment.
1563         (build_dtable_decl): Build an accurate dtable type when appropriate
1564         and use it.
1565
1566 2000-06-02  Richard Henderson  <rth@cygnus.com>
1567
1568         * lang.c (lang_get_alias_set): New.
1569
1570 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1571
1572         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
1573         before using it as the accessed field.
1574
1575 2000-05-31  Tom Tromey  <tromey@cygnus.com>
1576
1577         * java-tree.h (boolean_array_vtable, byte_array_vtable,
1578         char_array_vtable, short_array_vtable, int_array_vtable,
1579         long_array_vtable, float_array_vtable, double_array_vtable):
1580         Declare.
1581         * expr.c (get_primitive_array_vtable): New function.
1582         (create_primitive_vtable): New function.
1583         (java_lang_expand_expr): Enable code to statically generate
1584         arrays.
1585         * decl.c (init_decl_processing): Create primitive vtables.
1586         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
1587         short_array_vtable, int_array_vtable, long_array_vtable,
1588         float_array_vtable, double_array_vtable): Define.
1589
1590 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
1591
1592         * java/parse.y (find_applicable_accessible_methods_list):
1593         Don't add an uninitialized value to the list.
1594
1595 2000-05-25  Tom Tromey  <tromey@cygnus.com>
1596
1597         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
1598         when trying to see if field's class should be initialized.  Always
1599         initialize field's declaring class, not qualified class.
1600         For PR gcj/162.
1601
1602         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
1603         `wfl_operator', to maybe_build_primttype_type_ref.
1604         Fixes PR gcj/235.
1605
1606 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
1607
1608        * parse.y (patch_method_invocation): Don't try to lookup methods
1609        in primitive types.
1610
1611 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1612
1613         * parse.y (resolve_field_access): Call the appropriate <clinit>
1614         before accessing the length of a static array. Craft a decl for
1615         the field while its time. Fixes PR gcj/129.
1616
1617 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1618
1619         * parse.y (resolve_package): Correctly set `*next' (was off by
1620         one.)
1621         (resolve_qualified_expression_name): Fixed comment.
1622
1623 Thu Apr 27 17:47:34 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1624
1625         * jcf-parse.c (jcf_parse_source): Reset current_class and
1626         current_function_decl to NULL before parsing a new file.
1627
1628 Thu Apr 27 17:25:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1629
1630         * parse.y (block_end:): If the collected block doesn't feature a
1631         statement, insert an empty statement.
1632
1633 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1634
1635         * parse.y (maybe_yank_clinit): New function.
1636         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
1637         end of the list of methods belonging to a class.
1638         (java_complete_expand_method): Check whether <clinit> is really
1639         necessary and expand it accordingly.
1640
1641 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1642
1643         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
1644         processed by the method's switch statement.
1645
1646 2000-05-19  Tom Tromey  <tromey@cygnus.com>
1647
1648         * java-tree.h: Added init state enum.
1649         * decl.c (emit_init_test_initialization): Initialize class
1650         initialization check variable by looking at class' state.
1651
1652 2000-05-19  Tom Tromey  <tromey@cygnus.com>
1653
1654         * java-tree.h (build_instanceof): Declare.
1655         (build_get_class): Declare.
1656         * parse.y (patch_binop): Use build_instanceof.
1657         * expr.c (build_instanceof): New function.  If class is final,
1658         don't make a function call.
1659         (expand_java_INSTANCEOF): Use it.
1660         (build_get_class): New function.
1661
1662 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
1663
1664         * jcf-write.c (generate_classfile): Scan the source_file for
1665         slashes with the right pointer variable.
1666
1667 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
1668
1669         * lang.c (lang_decode_option): Update -Wunused flags by calling
1670         set_Wunused.
1671         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
1672
1673 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
1674
1675         * check_init.c (check_init): Constify local char *.
1676         * class.c (push_class): Constify local char *.
1677         * java_tree.h: Update prototypes.
1678         * jcf-io.c (open_class): Constify filename parameter and
1679         return value.
1680         (find_class): Remove redundant string copy.  Cast return from
1681         open_class.
1682         * jcf-parse.c (read_class, parse_class_file, yyparse):
1683         Constify local char *.
1684         * jcf-write.c (generate_bytecode_insns, generate_classfile):
1685         Constify local char *.
1686         * jcf.h (JCF): Constify filename and classname.
1687         (JCF_FINISH): Cast args to FREE to char * when appropriate.
1688         * lang.c (init_parse): Constify parameter and return value.
1689         * lex.c (java_get_line_col): Constify filename parameter.
1690         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
1691         * parse.y (java_parser_context_suspend,
1692         issue_warning_error_from_context, safe_layout_class): Constify
1693         local char *.
1694         * parse.c: Regenerate.
1695
1696 2000-05-08  Tom Tromey  <tromey@cygnus.com>
1697
1698         * expr.c (build_jni_stub): Cache the result of
1699         _Jv_LookupJNIMethod.
1700
1701 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1702
1703         * decl.c (predef_filenames_size): Now 7.
1704         (predef_filenames): New seventh entry.
1705
1706 2000-05-04  Tom Tromey  <tromey@cygnus.com>
1707
1708         * boehm.c (mark_reference_fields): Don't mark RawData fields.
1709         Keep track of when we've seen a reference field after a
1710         non-reference field.
1711         (get_boehm_type_descriptor): Handle case where we see
1712         non-reference fields but no trailing reference field.
1713         * decl.c (rawdata_ptr_type_node): Define.
1714         (init_decl_processing): Initialize rawdata_ptr_type_node.
1715         * java-tree.h (rawdata_ptr_type_node): Declare.
1716
1717 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1718
1719         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
1720         specifiers in calls to fprintf.
1721
1722 2000-05-03  Andrew Haley  <aph@cygnus.com>
1723
1724         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
1725
1726         * javaop.h (WORD_TO_INT): New function.
1727         (IMMEDIATE_s4): Use WORD_TO_INT.
1728         * jcf.h (JPOOL_INT): Ditto.
1729
1730         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
1731         separator.
1732
1733 2000-04-19  Tom Tromey  <tromey@cygnus.com>
1734
1735         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
1736         on native function.
1737         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
1738         JNI methods.
1739         * expr.c (build_jni_stub): New function.
1740         * lang-specs.h: -fjni and -femit-class-file are incompatible.
1741         * parse.c: Rebuilt.
1742         * parse.y (java_complete_expand_methods): Expand a native method
1743         and call build_jni_stub if -fjni given.
1744         * lang-options.h: Document -fjni.
1745         * lang.c (flag_jni): New global.
1746         (lang_f_options): Added `jni' entry.
1747         * java-tree.h (soft_lookupjnimethod_node,
1748         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
1749         Declare.
1750         (flag_jni): Declare.
1751         (build_jni_stub): Declare.
1752         (struct lang_decl): Added `native' flag.
1753         (METHOD_NATIVE): Redefined to use `native' field of lang specific
1754         structure.
1755         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
1756         soft_jnipopsystemframe_node): New globals.
1757         (init_decl_processing): Set them.  _Jv_InitClass only takes one
1758         argument.
1759
1760         * java-tree.def: Put into `C' mode.
1761
1762 2000-04-27  Tom Tromey  <tromey@cygnus.com>
1763
1764         Fix for PR gcj/2:
1765         * expr.c (expand_invoke): Generate check to see if object pointer
1766         is null in nonvirtual invocation case.
1767         * java-tree.h (soft_nullpointer_node): Declare.
1768         * decl.c (soft_nullpointer_node): New global.
1769         (init_decl_processing): Initialize soft_nullpointer_node.
1770         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
1771         or `private' methods.
1772         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
1773
1774 Wed Apr 26 14:29:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1775
1776         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
1777         from <clinit>
1778
1779 2000-04-26  Tom Tromey  <tromey@cygnus.com>
1780
1781         * zextract.c (find_zip_file_start): New function.
1782         (read_zip_archive): Use it.
1783
1784 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1785
1786         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
1787
1788 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1789
1790         * class.c (common_enclosing_context_p): New function.
1791         * java-tree.h (common_enclosing_context_p): Added prototype.
1792         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
1793         classes sharing an outer context with the current instance.
1794         * parse.y (build_access_to_thisn): Fixed leading comment.
1795         (verify_constructor_super): New local `supper_inner'. Skip
1796         enclosing context argument in the case of inner class constructors.
1797         (patch_method_invocation): Insert proper context as second
1798         parameter to pure inner class constructor super invocations.
1799
1800 Mon Apr 24 14:59:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1801
1802         * parse.y (end_class_declaration): Reset the interface number
1803         counter.
1804
1805 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1806
1807         * parse.y (source_start_java_method): Deleted unecessary code.
1808         (patch_method_invocation): Fixed comment.
1809
1810 2000-04-24  Robert Lipe <robertlipe@usa.net>
1811
1812         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
1813
1814 2000-04-23  Tom Tromey  <tromey@cygnus.com>
1815
1816         * boehm.c (mark_reference_fields): Use int_byte_position.
1817
1818 2000-04-22  Tom Tromey  <tromey@cygnus.com>
1819
1820         * boehm.c (mark_reference_fields): Only call byte_position on
1821         non-static fields.
1822
1823 2000-04-22  Tom Tromey  <tromey@cygnus.com>
1824
1825         * boehm.c (mark_reference_fields): Added `last_view_index'
1826         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
1827
1828 Thu Apr 20 17:41:28 2000  Mo DeJong  <mdejong@cygnus.com>
1829
1830         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
1831         * parse.y (check_class_interface_creation): Fixed comments. Select
1832         permitted modifiers for (inner) interfaces. Changed error message
1833         to report rejected modifiers used with local classes.
1834
1835 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1836
1837         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
1838         of directly inherited type considered in scope.
1839         * parse.y (do_resolve_class): Search inherited classes for inner
1840         classes.
1841
1842 2000-04-20  Tom Tromey  <tromey@cygnus.com>
1843
1844         * parse.y (not_accessible_p): Use member's class, not current
1845         class, when doing inheritance check for protected reference.
1846         Fixes PR gcj/124.
1847
1848 Thu Apr 20 18:20:58 2000  Jason Schroeder  <shrode@subnature.com>
1849
1850         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
1851
1852 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1853
1854         * parse.y (lookup_field_wrapper): Search for final local aliases.
1855         (resolve_expression_name): Let lookup_field_wrapper search for
1856         final local aliases. Force the value of `name' if one is found.
1857         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
1858         an expression name. Fixed comments.
1859
1860 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1861
1862         * parse.y (yyerror): `msg' can be null, don't use it in that case.
1863
1864 2000-04-19  Tom Tromey  <tromey@cygnus.com>
1865
1866         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
1867
1868 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1869
1870         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
1871
1872 2000-04-18  Tom Tromey  <tromey@cygnus.com>
1873
1874         PR gcj/211:
1875         * gjavah.c (utf8_cmp): Changed return value.
1876         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
1877         result.
1878         (cxx_keywords): New global.
1879         (get_field_name): Handle new result of cxx_keyword_subst.
1880         (print_method_info): Likewise.
1881
1882 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
1883
1884         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
1885         with a newline, for CNI.
1886         (print_stub_or_jni): Print a space or newline before method name for
1887         CNI as well as JNI.
1888         (print_cxx_classname): Don't write leading "::" in CNI stub method.
1889         (process_file): Include gcj/cni.h if generating CNI stubs.
1890
1891 2000-04-16  Tom Tromey  <tromey@cygnus.com>
1892
1893         * gjavah.c (decompile_method): Use print_field_name.
1894         Fixes PR gcj/205.
1895
1896 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1897
1898         * parse.y (java_expand_classes): Reverse the package list once.
1899         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
1900         reduction.
1901         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
1902         the `==' and `!=' operators.
1903
1904 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1905
1906         * jcf-write.c (generate_bytecode_insns): At invokation time,
1907         always relate an interface method to the type of its selector.
1908
1909 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1910
1911         Fix for PR gcj/2:
1912         * expr.c (expand_invoke): Generate check to see if object pointer
1913         is null in nonvirtual invocation case.
1914         * java-tree.h (soft_nullpointer_node): Declare.
1915         * decl.c (soft_nullpointer_node): New global.
1916         (init_decl_processing): Initialize soft_nullpointer_node.
1917         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
1918         or `private' methods.
1919         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
1920
1921 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1922
1923         Fix for PR gcj/140:
1924         * parse.y (check_final_assignment): Recognize assignments to the
1925         `length' field of an array when generating class files.
1926
1927 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1928
1929         * class.c (decl_hash): Prototype removed.
1930         (decl_compare): Likewise.
1931
1932 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1933
1934         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
1935         * parse.y (check_modifiers_consistency): Check for final/volatile
1936         clash.  Fixes PR gcj/164.
1937
1938 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1939
1940         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
1941         made global.
1942         (java_hash_compare_tree_node): Renamed from `decl_compare, made
1943         global.
1944         (add_method_1): Use `java_hash_hash_tree_node' and
1945         `java_hash_compare_tree_node'.
1946         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
1947         (java_hash_compare_tree_node): Likewise.
1948         * parse.y (find_applicable_accessible_methods_list): Create,
1949         delete and use a hash table to remember already searched interfaces.
1950
1951 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
1952
1953         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
1954         with latest entry.
1955
1956 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1957
1958         * boehm.c (mark_reference_fields, set_bit): Prototype.
1959         (set_bit): Un-ANSI-fy definition.
1960
1961         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
1962         Prototype.
1963
1964         * decl.c (emit_init_test_initialization): Likewise.
1965
1966         * gjavah.c (jni_print_char): Likewise.
1967
1968         * parse.y (create_new_parser_context): Likewise.
1969
1970 Thu Mar 30 15:26:56 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1971
1972         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
1973         patch missing hunk. Fixed indentation.
1974
1975 2000-03-30  Tom Tromey  <tromey@cygnus.com>
1976
1977         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
1978         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
1979
1980 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1981
1982         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
1983         when negative *before* using it as an array index.
1984         * ChangeLog: Fixed typo.
1985
1986 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1987
1988         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
1989         to 0 when it reaches -1.
1990
1991 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1992
1993         * jcf-parse.c (get_constant): Properly cast `num' during the
1994         invocation of `add_double'.
1995         * jcf-write.c (push_long_const): Properly cast `lo' before
1996         comparing it to short bounds.
1997         * parse-scan.y (interface_declaration:): Rule re-arrange so that
1998         `interface_body:' is reduced after the current interface is
1999         pushed.
2000
2001 2000-03-26  Tom Tromey  <tromey@cygnus.com>
2002
2003         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
2004         Java-specific `-f' option.
2005
2006 Sun Mar 26 11:37:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2007
2008         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
2009         Adjust order of making types.
2010         Make bitsize_*_node values.
2011
2012 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2013
2014         * class.c (make_field_value): Use byte_position.
2015         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
2016         (java_array_data_offset): Likewise.
2017         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
2018         bzero call.
2019
2020 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2021
2022         * parse.y (check_abstract_method_definitions): New local
2023         `end_type_reached'. Make sure we also consider `end_type'.
2024         (java_check_abstract_method_definitions): Make sure we eventually
2025         consider `java.lang.Object'.
2026         (maybe_use_access_method): Don't use access method if not in the
2027         context of a pure inner class or if the method's context is right.
2028         (find_applicable_accessible_methods_list): New static flag
2029         `object_done'. Don't search abstract classes as interfaces. Fixed
2030         indentation. Fixed the `java.lang.Object' only search. Search
2031         class interface(s) first, then fully search enclosing contexts.
2032         (find_most_specific_methods_list): Pick the closest candidate when
2033         they're all abstract.
2034
2035 Mon Mar 20 08:58:51 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2036
2037         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
2038         properly initialize `finished_label'. Don't emit gotos for empty
2039         try statements.
2040
2041 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2042
2043         * except.c (emit_handlers): Clear catch_clauses_last.
2044
2045 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2046
2047         * parse.y (check_method_types_complete): New function.
2048         (create_class): Reset anonymous class counter only when seeing an
2049         non inner classe.
2050         (java_complete_class): JDEP_METHOD: Don't recompute signature
2051         if incomplete.
2052
2053 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2054
2055         * class.c (build_static_ref): Fixed indentation in comment.
2056         * java-tree.def (TRY_EXPR): Fixed typo in name.
2057         (CLASS_LITERAL): Likewise.
2058         * java-tree.h: (TYPE_DOT_CLASS): New macro.
2059         (struct lang_type): New field `dot_class'.
2060         * jcf-write.c (generate_bytecode_insns): Fixed error message.
2061         (generate_classfile): Method `class$' is synthetic.
2062         * parse.y (build_do_class_method): New function.
2063         (build_dot_class_method_invocation): Likewise.
2064         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
2065         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
2066         (qualify_ambiguous_name): Likewise.
2067         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
2068         (build_try_statement): Fixed leading comment.
2069
2070 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2071
2072         * class.c (make_field_value): Properly handle sizes.
2073         (get_dispatch_vector): Use tree_low_cst and host_integerp.
2074         (layout_class_method): Count using trees.
2075         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
2076         * expr.c (java_array_data_offset): Use int_bit_position.
2077         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
2078         (build_invokevirtual): Use tree_low_cst and do computations with trees.
2079
2080 2000-03-16  Tom Tromey  <tromey@cygnus.com>
2081
2082         * lang.c (flag_hash_synchronization): New global.
2083         (lang_f_options): Added `hash-synchronization'.
2084         * lang-options.h: Mention -fhash-synchronization.
2085         * java-tree.h (flag_hash_synchronization): Declare.
2086         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
2087         hash table synchronization is disabled.
2088         * decl.c (init_decl_processing): Only push `sync_info' value when
2089         hash table synchronization is disabled.
2090         * class.c (make_class_data): Only push `sync_info' field when hash
2091         table synchronization is disabled.  Removed dead code.
2092
2093 2000-03-16  Tom Tromey  <tromey@cygnus.com>
2094
2095         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
2096
2097 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2098
2099         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
2100         classes.
2101         * parse.y (patch_method_invocation): Handle anonymous classes
2102         creation in static context.
2103
2104 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2105
2106         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
2107         * parse.y (resolve_qualified_expression_name): Use it.
2108         (patch_method_invocation): Likewise.
2109
2110 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2111
2112         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
2113         depending on the type of dependency which dictates what the
2114         current class is.
2115         (unresolved_type_p): Resolved types limited to the current class.
2116
2117 2000-03-15  Tom Tromey  <tromey@cygnus.com>
2118
2119         * decl.c (init_decl_processing): Set type of `sync_info' to be
2120         pointer to Object.
2121
2122         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
2123         Correctly compute bit number for current slot.  Zero `high' and
2124         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
2125         mark_reference_fields.
2126         (mark_reference_fields): New function.
2127
2128 Tue Mar 14 17:15:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2129
2130         * parse.y (register_incomplete_type): Fixed initialization of
2131         JDEP_ENCLOSING.
2132
2133 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2134
2135         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
2136         static globals.
2137         (push_class_context, pop_class_context): New function.
2138         (class_body:): Call pop_class_context.
2139         (interface_body:): Likewise.
2140         (INNER_QUALIFIER): New macro.
2141         (report_class_declaration): Changed output format and use
2142         INNER_QUALIFIER. Call push_class_context.
2143
2144 2000-02-14  Andrew Haley  <aph@cygnus.com>
2145
2146         * check-init.c (check_init): Add new cases for unary and binary
2147         tree nodes.
2148
2149 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2150
2151         * parse.y (resolve_package): Set `next' once a type name has been
2152         progressively discovered.
2153         (resolve_qualified_expression_name): Propagate resolution only if
2154         there are remaining qualifiers. Take into account `q' might have
2155         been cleared after re-qualification.
2156         * parse.y (patch_method_invocation): New local `resolved'.
2157         Section dealing with qualified expression rewritten to use
2158         resolve_field_access.
2159
2160 Mon Mar 13 12:21:13 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2161
2162         * parse.h (PUSH_CPC): Fixed indentation.
2163         (DEBUG_CPC): New macro.
2164         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
2165         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
2166         * parse.y (class_body_declaration:): Use
2167         SET_CPC_INSTANCE_INITIALIZER_STMT.
2168         (method_declaration:): Check for null current_function_decl.
2169         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
2170         (java_parser_context_pop_initialized_field): Better handling of
2171         empty lists.
2172         (maybe_make_nested_class_name): Mark nested class name as
2173         qualified when necessary.
2174         (end_class_declaration): Don't call java_parse_context_resume when
2175         one or more error occured.
2176         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
2177         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
2178         SET_CPC_INITIALIZER_STMT.
2179         (method_header): Check for inner classes declaring static methods.
2180         (resolve_qualified_expression_name): Handle situation where `this'
2181         is implied.
2182
2183 Mon Mar 13 11:36:51 2000  Hans Boehm <boehm@acm.org>
2184
2185         * typeck.c (build_prim_array_type): Correctly set the high word too.
2186
2187 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2188
2189         * parse.y (java_complete_expand_methods): Leave <clinit> out of
2190         ordinary methods.
2191         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
2192         list of methods for interfaces.
2193
2194 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2195
2196         * parse.y (qualify_ambiguous_name): Properly handle expressions
2197         using `null'.
2198
2199 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2200
2201         * parse.y (check_final_assignment): Extended to process
2202         COMPOUND_EXPR.
2203         (patch_assignment): Have check_final_assignment called only once.
2204
2205 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2206
2207         * java-tree.h (IS_INIT_CHECKED): New flag.
2208         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
2209         * parse.y (patch_string): Call force_evaluation_order on the
2210         completed string concatenation tree.
2211         * expr.c (force_evaluation_order): Call force_evaluation_order on
2212         function's arguments too.
2213
2214 Mon Mar  6 18:07:07 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2215
2216         * decl.c (emit_init_test_initialization): Mark KEY as unused.
2217         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
2218         (build_anewarray): Likewise.
2219         * parse.y (patch_newarray): Likewise.
2220         * parse.c: Regenerated.
2221
2222 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
2223
2224         * decl.c (init_decl_processing): Added new class fields `depth',
2225         `ancestors', and `idt' to class_type_node. Use
2226         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
2227         * class.c (make_class_data): Push initial values for new fields.
2228         * java-tree.h: Updated prototype for `build_invokeinterface'.
2229         * expr.c (build_invokeinterface): Changed parameters to accept
2230         `method' tree. Calculate index of `method' in its declaring
2231         interface. Build call to _Jv_LookupInterfaceMethodIdx.
2232         (expand_invoke): Call `build_invokeinterface' with new parameters.
2233         * parse.y (patch_invoke): Call `build_invokeinterface' with new
2234         parameters.
2235
2236 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
2237
2238         * typeck.c (lookup_do): Search superinterfaces first
2239         when looking up an interface method. From Godmar Back
2240         <gback@cs.utah.edu>
2241
2242 2000-03-06  Tom Tromey  <tromey@cygnus.com>
2243
2244         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
2245
2246 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2247
2248         * java-tree.h (lookup_argument_method2): Declared.
2249         (safe_layout_class): Prototype moved from parse.h.
2250         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
2251         * parse.y (java_check_regular_methods): Local `super_class' gone.
2252         Call lookup_argument_method2 instead of lookup_argument_method.
2253         Perform modifier match for methods found declared in implemented
2254         interfaces. Fixed indentation problem. Overriding/hiding error
2255         report to take place only for methods found in classes.
2256         * typeck.c (lookup_argument_method): Changed leading
2257         comment. Re-written by calling lookup_do.
2258         (lookup_argument_method2): New function.
2259         (lookup_java_method): Re-written by calling lookup_do.
2260         (lookup_do): New function.
2261
2262 Thu Mar  2 15:18:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2263
2264         * check-init.c (check_init): Removed dead code. Handle (blank)
2265         final variables.
2266         * parse.y (declare_local_variables): New local `final_p', set it
2267         and use it to initialize LOCAL_FINAL.
2268         (check_final_assignment): Only check FIELD_DECLs.
2269
2270 2000-02-17  Tom Tromey  <tromey@cygnus.com>
2271
2272         * Makefile.in (JAVA_OBJS): Added boehm.o.
2273         (boehm.o): New target.
2274         * Make-lang.in (JAVA_SRCS): Added boehm.c.
2275         * java-tree.h (flag_use_boehm_gc): Declare.
2276         (get_boehm_type_descriptor): Declare.
2277         * lang.c (lang_f_options): Added `use-boehm-gc'.
2278         (flag_use_boehm_gc): New global.
2279         * lang-options.h: Added -fuse-boehm-gc.
2280         * boehm.c: New file.
2281         * class.c (get_dispatch_table): If class uses a Boehm type
2282         descriptor, put it in the vtable.
2283         (make_class_data): Removed dead code.
2284
2285 2000-03-03  Per Bothner  <per@bothner.com>
2286
2287         * decl.c (init_decl_processing):  Initialize sizetype properly.
2288
2289 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2290
2291         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
2292         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
2293         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
2294         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
2295         (jcf_parse): New local `current'. Load innerclasses seen in outer
2296         context being processed.
2297         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
2298         * jcf-write.c (append_innerclasses_attribute): New function.
2299         (append_innerclasses_attribute_entry): Likewise.
2300         (get_access_flags): Handle static classes. Set anonymous and local
2301         classes to be private.
2302         (generate_classfile): Attribute count adjusted. Call
2303         append_innerclasses_attribute.
2304         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
2305         PURE_INNER_CLASS_TYPE_P.
2306         * parse.y (parser_qualified_classname): New parameter `is_static',
2307         produce non qualified name accordingly.
2308         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
2309         (create_interface): Added argument to parser_qualified_classname.
2310         (create_class): Added argument to parser_qualified_classname. Setup
2311         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
2312         (add_inner_class_fields): Fixed indentation.
2313         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
2314         (method_declarator): Fixed typo in comment.
2315         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
2316         (build_current_thisn): Likewise.
2317         (patch_method_invocation): Likewise.
2318
2319 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2320
2321         * decl.c (current_function_decl): Move to toplev.c.
2322
2323 Mon Feb 28 08:20:42 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2324
2325         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
2326         (DECL_BIT_INDEX): Use underlying representation.
2327         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
2328
2329 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2330
2331         * expr.c (build_java_ret): Pass proper type to size_binop.
2332
2333 2000-02-25  Anthony Green  <green@cygnus.com>
2334
2335         * expr.c (build_class_init): Mark the decl to be ignored by
2336         check_init.
2337         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
2338         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
2339         * class.c (init_test_hash_newfunc): New function.
2340         (decl_hash): New function.
2341         (decl_compare): New function.
2342         * decl.c (emit_init_test_initialization): New function.
2343         (complete_start_java_method): Traverse the init test hashtable,
2344         calling emit_init_test_initialization.
2345         (always_initialize_class_p): Define.
2346         * expr.c (build_class_init): Use initialization tests when
2347         emitting class initialization code.
2348         (always_initialize_class_p): Declare.
2349         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
2350         1.
2351         * java-tree.h: Include hash.h.
2352         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
2353         (struct lang_decl): Add init_test_table field.
2354         (init_test_hash_entry): Define.
2355
2356 Fri Feb 25 18:41:31 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2357
2358         * gjavah.c (main): Avoid using `argi' to report unimplemented
2359         options.
2360
2361 Fri Feb 25 18:47:25 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2362
2363         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
2364         initialize locals to avoid warnings. Local `exception_type' moved
2365         into if statement.
2366
2367 Fri Feb 25 18:00:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2368
2369         * parse.y (resolve_expression_name): Use `orig' as a second
2370         argument to resolve_field_access.
2371         (resolve_field_access): Removed unecessary code when dealing with
2372         static fields.
2373
2374 Wed Feb 23 17:41:50 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2375
2376         * class.c (push_super_field): Don't push the field twice.
2377         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
2378         * parse.h (java_reorder_fields): Prototyped.
2379         * parse.y (java_reorder_fields): New function.
2380         (java_layout_class): Simplified not to worry about re-ordering.
2381
2382 2000-02-23  Tom Tromey  <tromey@cygnus.com>
2383
2384         * gjavah.c (print_name): In JNI case, correctly quote string.
2385         (print_method_info): Don't handle overrides in JNI mode.
2386
2387 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2388
2389         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
2390         value type set to `boolean_type_node'.
2391
2392 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2393
2394         * jcf-dump.c (main): Test for correct condition after
2395         output file creation.
2396
2397 2000-02-19  Anthony Green  <green@cygnus.com>
2398
2399         * jcf-depend.c (add_entry): Fix test for first list entry.
2400
2401 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2402
2403         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
2404         * constants.c (build_constants_constructor): Likewise.
2405
2406 2000-02-19  Anthony Green  <green@cygnus.com>
2407
2408         * jcf-depend.c (add_entry): Add entries to the end of the list.
2409
2410 Wed Nov 03 02:16:00 PST 1999  Pekka Nikander  <pekka.nikander@hut.fi>
2411
2412         * decl.c (INT_TYPE_SIZE): Define if necessary.
2413         (expand_java_return): Handle the case of a native integer smaller
2414         than a JVM integer.
2415
2416 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2417
2418         * gjavah.c (help): Use GCCBUGURL.
2419         * jv-scan.c (help): Likewise.
2420         * jcf-dump.c (help): Likewise.
2421
2422 Thu Feb 17 14:30:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2423
2424         * jcf-write.c (generate_bytecode_insns): Don't generate empty
2425         `finally' clauses.
2426
2427 Thu Feb 17 13:20:58 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2428
2429         * jcf-parse.c (load_class): Call `fatal' if no file containing
2430         the target class are found.
2431
2432 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
2433
2434         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
2435         lex.c, lex.h, and PARSE_H to...
2436         (parse.o, parse-scan.o): ...here, respectively.
2437
2438         * lex.c: Split out code that may trigger SIGFPE from yylex()
2439         to its own function.
2440         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
2441
2442 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2443
2444         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
2445
2446 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2447
2448         * parse.y (outer_field_access_p): Stop in time when outer contexts
2449         are exhausted.
2450         (resolve_qualified_expression_name): Properly qualify *everything*
2451         after a package.type to be resoled as expression names.
2452         (find_applicable_accessible_methods_list): Save/restore `class' to
2453         isolate it from a possible outer context search.
2454
2455 2000-02-15  Tom Tromey  <tromey@cygnus.com>
2456
2457         * gjavah.c (jni_print_char): New function.
2458         (print_full_cxx_name): Use it.
2459         (decode_signature_piece): Likewise.
2460         (print_cxx_classname): Likewise.
2461
2462 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2463
2464         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
2465         version.o.
2466         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
2467
2468         * gjavah.c: Include version.h.
2469
2470         * jcf-dump.c: Likewise.
2471
2472         * jv-scan.c: Likewise.
2473
2474 Sat Feb 12 04:34:04 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2475
2476         * parse.y (outer_field_access_fix): First parameter now a tree
2477         node. Check for assignement to final. First argument to
2478         build_outer_field_access_fix modified to accomodate prototype.
2479         (build_outer_field_access): Don't check for assignment to final
2480         here.
2481         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
2482         possibly returned by outer_field_access_fix. Changed
2483         outer_field_access_fix's first argument.
2484         (check_final_assignment): $finit$'s context is OK.
2485         (patch_unaryop): Use node instead of its line/column value when
2486         calling outer_field_access_fix.
2487
2488 Fri Feb 11 17:38:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2489
2490         * parse.y (interface_declaration:): No longer tagged
2491         <node>. Re-installed default action.
2492         (class_member_declaration:): Handle inner interfaces.
2493         (interface_member_declaration): Handle inner interfaces and
2494         classes.
2495         (create_interface): Push error if one seen. Suspend parsing
2496         context when processing an inner interface.
2497         (register_fields): Inner class static field limitations not to
2498         apply to inner interfaces.
2499
2500 Thu Feb 10 22:07:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2501
2502         * jcf-parse.c (load_class): Update `java_error_count' when a
2503         class' file can't be found.
2504         (parse.y): Avoid (byte)code generation when errors seen.
2505
2506 Thu Feb 10 20:10:43 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2507
2508         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
2509         decodes a valid node.
2510         (patch_binop): Handle TRUNC_DIV_EXPR.
2511
2512 Thu Feb 10 16:04:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2513
2514         * parse.y (resolve_package): New local `acc'. Try to progressively
2515         build and guess a package and type name.
2516
2517 Thu Feb 10 12:52:09 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2518
2519         * parse.y (find_applicable_accessible_methods_list): Load and
2520         layout the search class if necessary.
2521         (java_complete_tree): Keep to original type of the folded initial
2522         value.
2523
2524 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2525
2526         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
2527         Generate error message if circularity is detected. New static
2528         local `list'.
2529         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
2530         * jcf-write.c (generate_bytecode_insns): Very simply handle
2531         SAVE_EXPR.
2532         * parse.y (java_check_circular_reference): Use
2533         `cyclic_inheritance_report' during report, if necessary.
2534         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
2535         walking NEW_ARRAY_INIT twice.
2536
2537 2000-02-09  Tom Tromey  <tromey@cygnus.com>
2538
2539         * parse.y (check_class_interface_creation): Allow inner classes to
2540         be `private' or `protected', check modifiers' consistency. Prevent
2541         block local classes from bearing any modifiers.
2542
2543 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2544
2545         * except.c (check_start_handlers): Re-add prototype lost in last
2546         patch.
2547         (maybe_start_try): Remove excess argument to `check_start_handlers'.
2548
2549 2000-02-09  Andrew Haley  <aph@cygnus.com>
2550
2551         * decl.c (clear_binding_level): Remove excess initializer.
2552         (maybe_poplevels): Remove unused variable.
2553         (force_poplevels): Ditto.
2554         (struct binding_level): Add comment.
2555
2556 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2557
2558         * jcf-write.c (generate_classfile): Don't consider
2559         pre-initialization with reference value (use <clinit> instead.)
2560         * parse.y (java_fix_constructors): No generated constructor for
2561         interfaces.
2562         (build_outer_field_access): Removed debug message.
2563         (outer_field_expanded_access_p): Adapted to bytecode generation.
2564         (build_outer_field_access_method): Use fix_method_argument_names.
2565         (build_outer_method_access_method): Fixed indentation. Added
2566         comment. Handle access method generation for static and also void
2567         methods.
2568         (build_access_to_thisn): Inserted debug message.
2569         (maybe_build_thisn_access_method): Use fix_method_argument_names.
2570         (resolve_qualified_expression_name): Fixed comment.
2571         (not_accessible_p): Adapted to bytecode generation. Added comment.
2572         (patch_method_invocation): Added comment.
2573         (maybe_use_access_method): Fixed leading comment. Handle static
2574         methods.
2575         (java_complete_lhs): Don't shortcut handling of initialized upon
2576         declaration String type static fields when generating bytecode.
2577         (patch_unaryop): Handle outer field access when generating
2578         bytecode.
2579
2580 Thu Feb  3 20:23:19 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2581
2582         * java-tree.h (FIELD_THISN): New macro.
2583         * jcf-write.c (append_synthetic_attribute): New function.
2584         (generate_classfile): Set "Synthetic" attribute on this$<n>,
2585         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
2586         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
2587         this$<n> fields.
2588         (build_outer_field_access): Turned on access functions usage and
2589         generation when compiling to bytecode.
2590         (maybe_use_access_method): Likewise.
2591
2592 2000-01-25  Andrew Haley  <aph@cygnus.com>
2593
2594         * java-except.h (struct eh_range): Add `expanded' field.
2595         (maybe_start_try): Add end_pc arg.
2596         (maybe_end_try): Ditto.
2597         * java-tree.h (force_poplevels): new function.
2598         * expr.c (expand_byte_code): Don't call maybe_start_try or
2599         maybe_end_try.
2600         * except.c (add_handler): Reset expanded.
2601         (expand_start_java_handler): Set expanded.
2602         (check_start_handlers): Don't expand a start handler that's
2603         already been expanded.
2604         (maybe_start_try): Add end_pc arg.  Only expand a handler which
2605         ends after end_pc.
2606         (expand_end_java_handler): call force_poplevels.
2607         (force_poplevels): new function.
2608         * decl.c (binding_level): Add start_pc of binding level.
2609         (maybe_pushlevels): Call maybe_start_try when pushing binding
2610         levels.
2611         (maybe_poplevels): Call maybe_end_try when popping binding levels.
2612         (LARGEST_PC): Define.
2613         (clear_binding_level): Use LARGEST_PC.
2614
2615         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
2616         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
2617         (binding_depth, is_class_level, current_pc): new variables.
2618         (struct binding_level): ditto.
2619         (indent): new function.
2620         (push_jvm_slot): add debugging info.
2621         (maybe_pushlevels): ditto.
2622         (maybe_poplevels): ditto.
2623         (pushlevel): ditto.
2624         (poplevel): ditto.
2625         (start_java_method): ditto.
2626         (give_name_to_locals): comment only.
2627         * except.c (binding_depth, is_class_level, current_pc):
2628         new variables.
2629         (expand_start_java_handler): add debugging info.
2630         (expand_end_java_handler): ditto.
2631
2632 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2633
2634         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
2635         (print_name_for_stub_or_jni, process_file): Constify a char*.
2636
2637 2000-02-03  Tom Tromey  <tromey@cygnus.com>
2638
2639         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
2640
2641 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
2642
2643         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
2644         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
2645         defined to be 1.
2646
2647 Wed Feb  2 18:43:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2648
2649         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
2650         * java-tree.h (TYPE_II_STMT_LIST): New macro.
2651         (struct lang_type): New field `ii_block'.
2652         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
2653         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
2654         * parse.h (struct parser_ctxt): New field `instance_initializers'.
2655         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
2656         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
2657         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
2658         macros.
2659         * parse.y (add_instance_initializer): New function.
2660         (in_instance_initializer): New static global.
2661         (class_body_declaration:): Link instance initializer block.
2662         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
2663         (array_creation_expression:): Remove unused local.
2664         (java_parser_context_push_initialized_field): Fixed leading
2665         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
2666         CPC_INSTANCE_INITIALIZER_LIST.
2667         (java_parser_context_pop_initialized_field): Likewise.
2668         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
2669         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
2670         CPC_INITIALIZER_STMT.
2671         (fix_constructors): New local `class_type'. Use it. Call
2672         add_instance_initializer.
2673         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
2674         (patch_return): Forbid return in instance initializers.
2675         (patch_throw_statement): Enforce exception handling in the context
2676         of instance initializers.
2677
2678 2000-02-03  Tom Tromey  <tromey@cygnus.com>
2679
2680         * Make-lang.in (java.mostlyclean): Remove executables in
2681         `mostlyclean'.
2682
2683 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
2684
2685         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
2686         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
2687         (java_float_finite): Convert to use union Word from javaop.h.
2688         (java_double_finite): Convert to use union DWord from javaop.h.
2689
2690 2000-02-02  Tom Tromey  <tromey@cygnus.com>
2691
2692         * gjavah.c (options): Added `jni' entry.
2693         (help): Document -jni.
2694         (flag_jni): New global.
2695         (process_file): Handle JNI output.  Don't print text from
2696         -prepend, -add, etc, when generating stubs.  Only remove `.class'
2697         suffix if it actually exists.
2698         (main): Create a `.c' file when run with `--jni --stubs'.  Create
2699         correct output file name with `--jni'.
2700         (print_include): Mangle header name differently in JNI case.
2701         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
2702         method list.
2703         (print_method_info): Handle JNI case.  Put signature info into
2704         method name.  Handle case when STREAM is NULL.
2705         (print_name_for_stub_or_jni): New function.
2706         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
2707         (print_cxx_classname): Handle JNI.
2708         (print_full_cxx_name): Likewise.
2709         (decode_signature_piece): Likewise.
2710         (overloaded_jni_method_exists_p): New function.
2711         (struct method_name): Added `signature' and `sig_length' fields.
2712         (HANDLE_END_FIELD): Do nothing in JNI mode.
2713
2714 2000-02-02  Tom Tromey  <tromey@cygnus.com>
2715
2716         * jv-scan.c: Include version.c, <getopt.h>.
2717         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
2718         (options): New array.
2719         (usage): New function.
2720         (version): New function.
2721         (main): Use getopt_long to parse command line.
2722         * jcf-dump.c: Include version.c, <getopt.h>.
2723         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
2724         OPT_JAVAP): New macros.
2725         (options): New array.
2726         (usage): Return `void'.  Changed message.
2727         (help): New function.
2728         (version): New function.
2729         (main): Use getopt_long_only to parse command line.
2730         * gjavah.c: Include <getopt.h>.
2731         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
2732         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
2733         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
2734         (options): New array.
2735         (java_no_argument): Removed.
2736         (help): Updated with missing options.
2737         (main): Use getopt_long_only to parse command line.
2738         (usage): Changed message.
2739
2740 Tue Feb  1 22:23:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2741
2742         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
2743         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
2744         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
2745         * parse.y (array_creation_expression:): Handle anonymous arrays.
2746         (build_array_from_name): Don't set `ret_name' if null.
2747         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
2748         (qualify_ambiguous_name): Likewise.
2749         (java_complete_expand_class): Likewise.
2750
2751 Tue Feb  1 14:59:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2752
2753         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
2754         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
2755         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
2756         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
2757         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
2758         AIPL_FUNCTION_COMPLETED_INVOCATION.
2759         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
2760         AIPL_FUNCTION_INVOCATION_READY.
2761         (AIPL_FUNCTION_DECLARATION): New enum entry.
2762         * parse.y (reorder_static_initialized): New function.
2763         (java_parser_context_pop_initialized_field): Use it.
2764         (add_inner_class_fields): Use
2765         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
2766         augmented. Install marker after last alias initializer, if any.
2767         (generate_finit): Fixed typo. Don't try to retain only the used
2768         fields.
2769         (method_header): Compute and set DECL_FUNCTION_NAP.
2770         (method_declarator): Fixed comment. Insert alias initializer in
2771         parameter list.
2772         (build_alias_initializer_parameter_list): Fixed leading
2773         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
2774         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
2775         (java_complete_expand_class): Code to retain only used aliases
2776         removed.
2777         (java_complete_expand_methods): New local `first_decl'. Generate
2778         $finit$ first, then expand the constructors, regular methods and
2779         <clinit>.
2780         (java_complete_expand_method): Don't report error on missing
2781         return statement if previously detected bogus.
2782         (fix_constructors): Don't patch constructor parameters list.
2783         (patch_method_invocation): Use new AIPL enum values. Reverse
2784         alias initializer list for anonymous classes.
2785
2786 2000-01-30  Anthony Green  <green@redhat.com>
2787
2788         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
2789         determine how many stack slots to pop.
2790
2791 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2792
2793         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
2794         error handling/recovery.
2795         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
2796
2797 Fri Jan 28 20:10:57 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2798
2799         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
2800         FIELD_LOCAL_ALIAS_USED): New macros.
2801         (DECL_FUNCTION_NAP): New macro.
2802         (struct lang_decl): New field `nap'.
2803         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
2804         (struct lang_type): New fields `finit_stmt_list' and
2805         `clinit_stmt_list'.
2806         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
2807         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
2808         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
2809         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
2810         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
2811         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
2812         (BUILD_THROW): Macro line separator re-indented.
2813         * parse.y (end_class_declaration): New function.
2814         (maybe_generate_pre_expand_clinit): New name for
2815         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
2816         pre-expand static fields.
2817         (maybe_generate_clinit): Function deleted.
2818         (check_for_static_method_reference): Prototype's parameter list
2819         indented.
2820         (generate_finit): New name for maybe_generate_finit. Changed
2821         leading comment. Function rewritten to use
2822         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
2823         (build_alias_initializer_parameter_list): New function.
2824         (java_parser_context_pop_initialized_field): Likewise.
2825         (add_inner_class_fields): Likewise.
2826         (type_declaration:): Call end_class_declaration.
2827         (class_member_declaration:): Likewise.
2828         (formal_parameter_list:): Fixed typos.
2829         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
2830         element. Improved error handling.
2831         (block_statement:): Call end_class_declaration.
2832         (anonymous_class_creation:): Likewise.
2833         (create_anonymous_class): Fixed comments.
2834         (create_class): Call add_inner_class_fields.
2835         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
2836         (method_header): Use MARK_FINAL_PARMS.
2837         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
2838         (method_declarator): Propagate final argument flag.
2839         (craft_constructor): New local `artificial'. Call
2840         build_alias_initializer_parameter_list. Use
2841         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
2842         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
2843         necessary.
2844         (complete_expand_class): Get rid of unused outer context local
2845         alias fields.
2846         (java_complete_expand_methods): Fixed leading
2847         comment. Generate/pre-expand <clinit> first. Changed method
2848         expansion order to regular, $finit$, constructors, <clinit>.
2849         (java_complete_expand_method): Set current_function_decl.
2850         (fix_constructors): Fix constructor parameter list to account for
2851         outer context local alias initializers.
2852         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
2853         (resolve_expression_name): Lookup outer context local aliases. New
2854         local `access', use it.
2855         (patch_method_invocation): Patch inner class ctor invocation with
2856         outer context local aliases initialization values. $finit$
2857         invocation patching now includes things generated with
2858         build_alias_initializer_parameter_list.
2859         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
2860         (build_super_invocation): Likewise.
2861         (patch_assignment): Changed comment.
2862
2863 2000-01-27  Andrew Haley  <aph@cygnus.com>
2864
2865         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
2866         (emit_if): Ditto.
2867         (emit_jsr): Ditto.
2868
2869 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2870
2871         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
2872         concatenation.
2873         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
2874
2875         * parse.y (register_fields): Don't pass a format specifier to
2876         OBSOLETE_MODIFIER_WARNING.
2877         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
2878         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
2879         specifier.
2880         (check_modifiers): Change function into a macro.
2881         (check_class_interface_creation): Pass a literal format string.
2882
2883 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2884
2885         * buffer.h: PROTO -> PARAMS.
2886         * check-init.c: Likewise.
2887         * class.c: Likewise.
2888         * constants.c: Likewise.
2889         * convert.h: Likewise.
2890         * decl.c: Likewise.
2891         * except.c: Likewise.
2892         * expr.c: Likewise.
2893         * gjavah.c: Likewise.
2894         * java-except.h: Likewise.
2895         * java-tree.h: Likewise.
2896         * jcf-depend.c: Likewise.
2897         * jcf-dump.c: Likewise.
2898         * jcf-parse.c: Likewise.
2899         * jcf-path.c: Likewise.
2900         * jcf-reader.c: Likewise.
2901         * jcf-write.c: Likewise.
2902         * jcf.h: Likewise.
2903         * jv-scan.c: Likewise.
2904         * jvgenmain.c: Likewise.
2905         * jvspec.c: Likewise.
2906         * lang.c: Likewise.
2907         * lex.c: Likewise.
2908         * lex.h: Likewise.
2909         * parse-scan.y: Likewise.
2910         * parse.h: Likewise.
2911         * parse.y: Likewise.
2912         * typeck.c: Likewise.
2913         * verify.c: Likewise.
2914         * xref.c: Likewise.
2915         * xref.h: Likewise.
2916         * zextract.c: Likewise.
2917         * zipfile.h: Likewise.
2918
2919 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2920
2921         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
2922         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
2923         * constants.c (build_constant_data_ref): Check for cached
2924         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
2925         in TYPE_CPOOL_DATE_REF.
2926         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
2927         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
2928         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
2929         (LOCAL_FINAL): New macro.
2930         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
2931         constant pool -- don't try to reuse.
2932         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
2933         TYPE_LANG_SPECIFIC.
2934         (find_in_current_zip): Use TYPE_JCF.
2935         * parse.h (java_check_final): Prototype removed.
2936         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
2937         (maybe_create_class_interface_decl,
2938         check_class_interface_creation): Likewise.
2939         (java_expand_finals): Function removed.
2940         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
2941         (block_statement:): Fixed comment.
2942         (anonymous_class_creation:): Likewise.
2943         (check_class_interface_creation): Reversed Jan 12, 2000 extra
2944         argument patch.
2945         (check_class_interface_creation): Loosened error report on (inner)
2946         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
2947         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
2948         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
2949         argument patch.
2950         (create_interface): Likewise.
2951         (anonymous_class_counter): New static global.
2952         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
2953         patch. Fixed comments.
2954         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
2955         anonymous_class_counter when declaring a toplevel class.
2956         (craft_constructor): Fixed constructor name when handling
2957         anonymous classes. Anonymous class constructors to feature hidden
2958         this$<n> parameter.
2959         (java_fix_constructors): Added comment.
2960         (java_check_final): Function removed.
2961         (java_complete_expand_methods): Fixed comment. Don't generate
2962         class data, save its outgoing constant pool instead.
2963         (verify_constructor_super): Skip anonymous class constructor
2964         hidden this$<n> parameter.
2965         (java_expand_classes): New local `saved_ctxp'. Removed call to
2966         java_expand_finals and java_check_final. Expand anonymous class
2967         constructors. Generate class data.
2968         (build_super_invocation): Skip anonymous class hidden this$<n>
2969         parameter.
2970         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
2971         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
2972         (set_java_signature): Likewise.
2973
2974 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2975
2976         * gjavah.c: Delete ACC_VISIBILITY define.
2977         * jcf.h: Add ACC_VISIBILITY define.
2978         * parse.y: final: rule tagged <value>.
2979         (java_check_regular_methods): Use ACC_VISIBILITY define for
2980         default package access check.
2981         (local_variable_declaration_statement): Use final: rule.
2982
2983 Mon Jan 17 11:58:17 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2984
2985         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
2986         (final:): New rule.
2987
2988 2000-01-17  Tom Tromey  <tromey@cygnus.com>
2989
2990         * gjavah.c (print_field_info): Allow non-static final fields.
2991
2992 Fri Jan 14 18:03:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2993
2994         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
2995         * parse.y (patch_anonymous_class): New function.
2996         (create_anonymous_class): Register incomplete type when the
2997         class/interface to extends/implement isn't known yet.
2998         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
2999         (verify_constructor_super): Tuned error message.
3000
3001 Fri Jan 14 00:14:24 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3002
3003         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
3004         (ANONYMOUS_CLASS_P): New macro.
3005         (TYPE_SIGNATURE, TYPE_JCF): New macros.
3006         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
3007         * parse.y (create_class): Added leading argument.
3008         (maybe_create_class_interface_decl,
3009         check_class_interface_creation): Likewise.
3010         (craft_constructor): New function.
3011         (verify_constructor_super): Added argument in prototype.
3012         (class_declaration:): Inserted leading argument.
3013         (for_begin:): Use FOR_LOOP_P.
3014         (anonymous_class_creation): Create WFL of the anonymous class to
3015         instantiate. Call build_new_invocation. Added comments.
3016         (check_class_interface_creation): Handle parameter `anonymous' in
3017         verbose mode class creation announce.
3018         (link_nested_class_to_enclosing): Exclude anonymous classes.
3019         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
3020         anonymous class, even though they appear to have an enclosing
3021         context.
3022         (create_interface): Pass extra argument to
3023         check_class_interface_creation.
3024         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
3025         (create_class): Call check_class_interface_creation and
3026         maybe_create_class_interface_decl with extra new argument. Don't
3027         add private this$<n> to anonymous classes.
3028         (method_declarator): Insert hidden this$<n> to anonymous class
3029         constructors.
3030         (java_fix_constructors): Deleted code creating default
3031         constructor. Call craft_constructor instead.
3032         (java_check_regular_methods): Set `saw_constructor' to 1 for
3033         anonymous classes.
3034         (fix_constructors): Pass extra argument to verify_constructor_super.
3035         (verify_constructor_super): New local `sdecl', use it. Search for
3036         matching constructor (possibly featuring arguments) in super
3037         class.
3038         (lookup_method_invoke): Craft constructor according to arguments
3039         list when dealing with anonymous class constructors.
3040         (build_super_invocation): Pass arguments to anonymous class super
3041         constructors.
3042         (search_loop): Use FOR_LOOP_P.
3043         (labeled_block_contains_loop_p): Likewise.
3044
3045 Wed Jan 12 00:38:47 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3046
3047         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
3048         (enclosing_context_p): New function.
3049         (get_access_flags_from_decl): Handle CLASS_STATIC.
3050         (maybe_layout_super_class): Extra first argument passed to
3051         do_resolve_class.
3052         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
3053         ID_INIT_P.
3054         * decl.c (access0_identifier_node): New global.
3055         (init_decl_processing): access0_identifier_node initialized.
3056         (pushdecl): Set DECL_CONTEXT only on non type decls.
3057         * expr.c (lookup_field): Lookup inner class fields in enclosing
3058         contexts.
3059         (expand_invoke): Use ID_INIT_P.
3060         (expand_java_field_op): Use DECL_CLINIT_P.
3061         * java-tree.def (CLASS_LITERAL): New tree code.
3062         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
3063         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
3064         (struct lang_decl): New field `inner_access'.
3065         (enclosing_context_p): Prototyped.
3066         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
3067         ID_CLINIT_P): New macros.
3068         (CLASS_STATIC): New macro.
3069         (CLASS_ACCESS0_GENERATED_P): New macro.
3070         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
3071         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
3072         INNER_CLASS_P): New macros.
3073         (DECL_INNER_CLASS_LIST): New macro.
3074         * jcf-parse.c (yyparse): Avoid the use of ANSI string
3075         concatenation.
3076         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
3077         the shift value to int. Fixed typo in comment.
3078         * lex.c (inst_id, wpv_id): Initialize.
3079         * mangle.c (unicode_mangling_length): Take `$' into account.
3080         * parse.h (DRECOVER, RECOVER): Terminate properly.
3081         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
3082         (typedef struct _jdep): New field `enclosing'.
3083         (JDEP_ENCLOSING): New macro.
3084         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
3085         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
3086         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
3087         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
3088         GET_ENCLOSING_CPC_CONTEXT): New macros.
3089         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
3090         (do_resolve_class): Added extra argument in prototype.
3091         * parse.y (resolve_class): Added extra argument in prototype.
3092         (maybe_create_class_interface_decl): Likewise.
3093         (maybe_use_access_method, build_wfl_wrap): New functions.
3094         (java_complete_expand_classes, java_complete_expand_class):
3095         Likewise.
3096         (java_parser_context_push_initialized_field,
3097         java_parser_context_suspend, java_parser_context_resume):
3098         Likewise.
3099         (maybe_make_nested_class_name, make_nested_class_name,
3100         set_nested_class_simple_name_value,
3101         link_nested_class_to_enclosing, find_as_inner_class,
3102         find_as_inner_class_do, check_inner_class_redefinition,
3103         build_thisn_assign, build_current_thisn, build_access_to_thisn,
3104         maybe_build_thisn_access_method, build_outer_field_access,
3105         build_outer_field_access_methods, build_outer_field_access_expr,
3106         build_outer_method_access_method, build_new_access_id,
3107         build_outer_field_access_method, outer_field_access_p,
3108         outer_field_expanded_access_p, outer_field_access_fix,
3109         build_incomplete_class_ref, patch_incomplete_class_ref,
3110         create_anonymous_class): Likewise.
3111         (inst_id, wpv_id): New static global variables.
3112         (synchronized:): New rule, tagged <node>.
3113         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
3114         rules.
3115         (anonymous_class_creation:): New rule, tagged <node>.
3116         (NEW_TK): Tagged <node>.
3117         (type_literals, array_type_literal): New rules, tagged <node>.
3118         (class_declaration:): Removed action when reducing by class_body:
3119         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
3120         using GET_CPC in sub-rules.
3121         (class_member_declaration): Handle inner classes.
3122         (method_declaration): When reducing method_header:, reset
3123         current_function_decl when appropriate.
3124         (method_declarator:): Set the number of formal parameter to 0 for
3125         method declared without arguments.
3126         (constructor_declarator:): Likewise.
3127         (static_initializer:): List of elements kept in a list.
3128         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
3129         use of the keyword `static' for type declarations.
3130         (block_statement:): Handle inner class declarations.
3131         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
3132         type qualified `this'.
3133         (class_instance_creation_expression): Use anonymous_class_creation:
3134         to handle inner class instances creation. Handle qualified `new'.
3135         (something_dot_new): Added appropriate actions.
3136         (create_new_parser_context): New function.
3137         (java_push_parser_context, java_parser_context_save_global,
3138         java_parser_context_suspend): Use create_new_parser_context.
3139         (check_modifiers): Changed leading comment.
3140         (check_class_interface_creation): Handle interclasses.
3141         (add_superinterfaces): Fixed comment.
3142         (create_interface): Build qualified name from the raw_name instead
3143         of its matching WFL. Push the initialized fields list. raw_name added
3144         as an extra argument to maybe_create_class_interface_decl.
3145         (create_class): Build qualified name from the raw_name instead of
3146         its matching WFL. Removed assignment to current_parsed_class_un.
3147         Call PUSH_ERROR before returning an error. Suspend the current
3148         parser context when processing an inner class. Push the
3149         initialized fields list. raw_name added as an extra argument to
3150         maybe_create_class_interface_decl. Add the private this$<n>
3151         field.
3152         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
3153         (register_fields): Get the class type from GET_CPC and handle
3154         previous errors.  Added code to handle the creation of static
3155         fields in inner classes. Initialized fields initialization
3156         statements kept in a list of lists.
3157         (maybe_generate_finit): Initialized fields initialization
3158         statements kept in a list of lists. Use GET_CPC.
3159         (maybe_generate_clinit): Likewise.
3160         (method_header): Use GET_CPC and GET_CPC_UN.
3161         (parser_qualified_classname): Handle inner classes.
3162         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
3163         (java_fix_constructors): Hide pointer to enclosing context
3164         instance in constructor list when dealing with inner classes.
3165         (jdep_resolve_class): Call resolve_class with extra first argument
3166         JDEP_ENCLOSING.
3167         (resolve_class): Add enclosing context as a first extra argument
3168         to do_resolve_class.
3169         (do_resolve_class): Call find_as_inner_class. Handle WFLs
3170         properly.
3171         (resolve_no_layout): Extra argument added to resolve_class
3172         invocation.
3173         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
3174         (java_get_real_method_name): Use GET_CPC_UN.
3175         (check_abstract_method_definitions): Use DECL_CLINIT_P.
3176         (java_check_abstract_methods): Handle static method declared in
3177         inner classes by an error.
3178         (java_check_regular_methods): Use DECL_CLINIT_P.
3179         (source_start_java_method): Also set DECL_MAX_LOCALS.
3180         (create_artificial_method): Call java_parser_context_save_global
3181         and java_parser_context_restore_global instead of saving/restoring
3182         the context by hand.
3183         (expand_start_java_method): Improved verbose mode message.
3184         (java_complete_expand_methods): Fixed leading comment. Use
3185         DECL_CLINIT_P.
3186         (fix_constructors): Added assignment to this$<n> if necessary.
3187         (java_expand_classes): Call java_complete_expand_classes instead
3188         of java_complete_expand_methods.
3189         (make_qualified_primary): Simplified.
3190         (merge_qualified_name): Optimized for missing left or right parts.
3191         (resolve_expression_name): Handle access to outer class fields from
3192         interclasses.
3193         (resolve_qualified_expression_name): New macro
3194         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
3195         classes. Report error on non appropriate qualification of
3196         `new'. Handle qualified `this'.
3197         (not_accessible_p): Allow access to outer class private fields from
3198         inner classes.
3199         (patch_method_invocation): Handle method invocations through
3200         access methods and inner class constructor invocations.
3201         (find_applicable_accessible_methods_list): Search enclosing
3202         contexts of an inner class.
3203         (search_applicable_methods_list): Fixed typo.
3204         (argument_types_convertible): Handle inner class constructors'
3205         hidden outer context reference argument.
3206         (qualify_ambiguous_name): Handle qualified `this'.
3207         (java_complete_lhs): Handle use of field accessed through
3208         artificial access methods in various cases of assignments. Handle
3209         CLASS_LITERAL node.
3210         (check_final_assignment): Use DECL_CLINIT_P.
3211         (valid_ref_assignconv_cast_p): Handle the destination being an
3212         enclosing context of the source.
3213         (patch_unaryop): Handle use of field accessed through artificial
3214         access methods.
3215         (patch_return): Use DECL_CLINIT_P.
3216         (patch_throw_statement): Use DECL_CLINIT_P.
3217         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
3218         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
3219         ID_INIT_P.
3220
3221 2000-01-16  Anthony Green  <green@cygnus.com>
3222
3223         * parse.y (build_string_concatenation): Only use
3224         StringBuffer(String) shortcut if String arg is constant.
3225
3226 Wed Jan 12 20:20:11 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3227
3228         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
3229         the shift value to int. Fixed typo in comment.
3230
3231 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
3232
3233         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
3234         * jcf-write.c: Likewise.
3235         * parse.y: Likewise.
3236         * parse.c: Regenerate.
3237
3238 2000-01-09  Anthony Green  <green@cygnus.com>
3239
3240         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
3241         bytecodes in the correct order.
3242
3243 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3244
3245         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
3246
3247 Thu Jan  6 16:31:28 2000  Anthony Green  <green@cygnus.com>
3248
3249         * expr.c (java_lang_expand_expr): Switch to permanent obstack
3250         before building constant array decl.
3251
3252 Thu Jan  6 00:54:10 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3253
3254         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
3255         method invocation and typo in conditional expression.
3256         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
3257         the appropriate NOTE_POP.
3258         * parse.y (patch_binop): Shift value mask to feature the right
3259         type.
3260
3261 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3262
3263         * class.c (assume_compiled, assume_compiled_node): Add static
3264         prototype.
3265         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
3266
3267         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
3268
3269         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
3270
3271         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
3272         to `__modifier' to avoid stringifying it.
3273
3274         * parse.y (verify_constructor_circularity): Don't call a variadic
3275         function with a non-literal format string.
3276         (java_check_abstract_methods): Move unreachable code inside
3277         `continue' statement.
3278         (lookup_method_invoke): Call xstrdup, not strdup.
3279
3280         * expr.c (expand_java_field_op): Avoid the use of ANSI string
3281         concatenation.
3282
3283         * jcf-parse.c (yyparse): Likewise.
3284
3285         * jv-scan.c (main): Likewise.
3286
3287 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3288
3289         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
3290         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
3291         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
3292         concatenation.
3293
3294         * parse.y (synchronized, variable_redefinition_error,
3295         check_class_interface_creation, create_interface, create_class,
3296         method_header, finish_method_declaration,
3297         check_modifiers_consistency, method_declarator,
3298         complete_class_report_errors, check_abstract_method_definitions,
3299         java_check_regular_methods, check_throws_clauses,
3300         java_check_abstract_methods, read_import_dir,
3301         check_pkg_class_access, declare_local_variables, fix_constructors,
3302         cut_identifier_in_qualified, resolve_expression_name,
3303         resolve_qualified_expression_name, patch_method_invocation,
3304         java_complete_lhs, patch_assignment, try_builtin_assignconv,
3305         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
3306         patch_exit_expr, patch_exit_expr, patch_switch_statement,
3307         patch_try_statement, patch_synchronized_statement,
3308         patch_throw_statement, check_thrown_exceptions,
3309         patch_conditional_expr): Likewise.
3310
3311 Fri Dec 24 00:25:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3312
3313         * Makefile.in (LIBDEPS): Added gcc's errors.o
3314         (../jcf-dump$(exeext):): Link with gcc's errors.o
3315         (../gcjh$(exeext):): Likewise.
3316         * expr.c (expand_java_NEW): Layout the entire target type instead of
3317         laying out its methods only.
3318         (lookup_field): Layout the class after having loaded it.
3319         * java-tree.h (java_debug_context): Declared.
3320         * jcf-io.c (toplev.h): Included.
3321         (find_class): Removed assignment to jcf's outofsynch
3322         field. Force source file to be read if newer than its matching
3323         class file. Tweaked debug messages.
3324         * jcf-parse.c (jcf_out_of_synch): Deleted.
3325         (read_class): Call to jcf_out_of_synch removed.
3326         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
3327         (jcf_out_of_synch): Prototype deleted.
3328         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
3329         `deprecated' and `class_err': integer turned into bit fields.
3330         New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
3331         * parse.y (package_list): New global.
3332         (package_declaration:): Record newly parsed package name.
3333         (extra_ctxp_pushed_p): Static global deleted.
3334         (java_parser_context_save_global): Create buffer context for the
3335         purpose of saving globals, if necessary.
3336         (java_parser_context_restore_global): Pop context pushed for the
3337         purpose of saving globals, if necessary.
3338         (java_debug_context_do): New prototype and function.
3339         (java_debug_context): Likewise.
3340         (do_resolve_class): Use already parsed package names to qualify
3341         and lookup class candidate.
3342         (java_pre_expand_clinit): Removed unnecessary local variable.
3343
3344 1999-12-17  Tom Tromey  <tromey@cygnus.com>
3345
3346         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
3347         fixes PR gcj/119.
3348         (process_file): Use `\n\' at end of each line in string.
3349
3350 Thu Dec 16 00:09:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3351
3352         * expr.c (expand_invoke): Layout the loaded class before
3353         attempting to use it.
3354         (expand_java_field_op): Allow final field assignments to take
3355         place in $finit$.
3356         * typeck.c (convert): Return error_mark_node if expr is null.
3357
3358 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3359
3360         * class.c (class_depth): Return -1 if the class doesn't load
3361         properly.
3362         * expr.c (can_widen_reference_to): Check for errors during depth
3363         computation and return 0 accordingly.
3364         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
3365         create default constructors and add an other error check.
3366         * parse.h (java_fix_constructors): Prototyped.
3367         * parse.y (java_pre_expand_clinit): Likewise.
3368         (build_super_invocation): Re-prototyped to feature one argument.
3369         (java_check_circular_reference): Directly use `current'.
3370         (java_fix_constructors): New function.
3371         (java_check_regular_methods): Don't create default constructors
3372         here, but abort if none were found.
3373         (java_complete_expand_methods): Pre-process <clinit> calling
3374         java_pre_expand_clinit.
3375         (java_pre_expand_clinit): New function.
3376         (fix_constructors): build_super_invocation invoked with the
3377         current method declaration as an argument.
3378         (build_super_invocation): Use the context of the processed method
3379         decl argument instead of current_class.
3380         * typeck.c (lookup_java_method): Take WFLs in method names into
3381         account.
3382
3383 Tue Dec 14 14:20:16 1999  Per Bothner  <per@bothner.com>
3384
3385         * class.c (make_class_data): flag_keep_inline_functions to keep
3386         private methods in the method array.
3387
3388 1999-12-15  Anthony Green  <green@cygnus.com>
3389
3390         * check-init.c (check_init): Take into account both types of
3391         `throw's when checking for uninitialized variables.
3392
3393 Fri Dec 10 21:53:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3394
3395         * parse.y (java_complete_lhs): Force convertion of array
3396         dimensions to int_type_node, that's what runtime's ABI expects.
3397
3398 Fri Dec 10 16:13:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3399
3400         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
3401         operand of a WFL, until the Java front-end gets fixed with regard
3402         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
3403
3404 1999-12-10  Andrew Haley  <aph@cygnus.com>
3405
3406         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
3407         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
3408         expr.c (build_java_athrow): Add support for sjlj-exceptions.
3409         java-tree.h: Ditto.
3410         jcf-write.c: Ditto.
3411
3412 Wed Dec  8 15:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3413
3414         * expr.c (java_lang_expand_expr): Switch to permanent obstack
3415         before calling expand_eh_region_start and expand_start_all_catch.
3416         * except.c (expand_start_java_handler): Switch to permanent
3417         obstack before calling expand_eh_region_start.
3418         (expand_end_java_handler): Switch to permanent obstack before
3419         calling expand_start_all_catch.
3420
3421 1999-12-5  Anthony Green  <green@cygnus.com>
3422
3423         * decl.c (init_decl_processing): Mark throw_node as a noreturn
3424         function with side effects.
3425         (init_decl_processing): Mark all memory allocating DECLs with
3426         DECL_IS_MALLOC.
3427
3428 Wed Dec  1 04:25:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3429
3430         * except.c (expand_end_java_handler): Call
3431         expand_resume_after_catch and end_catch_handler.
3432
3433 Tue Nov 30 12:36:15 1999  Anthony Green  <green@cygnus.com>
3434
3435         * verify.c (verify_jvm_instructions): Create new return label
3436         chain if non existant (don't rely on the verified state of the jsr
3437         target.)
3438
3439 Tue Nov 30 12:28:34 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3440
3441         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
3442         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
3443
3444         * parse.y (patch_assignment): Removed bogus final class test on
3445         lhs when checking on whether to emit an ArrayStoreException runtime
3446         check.
3447         * expr.c (expand_java_arraystore): Likewise.
3448
3449 1999-11-28 Anthony Green <green@cygnus.com>
3450
3451         * decl.c (find_local_variable): Reuse single slot decls when
3452           appropriate.
3453
3454 Wed Nov 24 17:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3455
3456         * jcf-parse.c (saw_java_source): Global variable removed.
3457         (read_class): Don't use `saw_java_source'. Added extra braces.
3458         (yyparse): Code setting `saw_java_source' removed.
3459
3460 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
3461
3462         * except.c (emit_handlers): Zero catch_clauses after emitting them.
3463
3464 Tue Nov 23 17:29:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3465
3466         * verify.c (merge_type_state): Non verified subroutines being
3467         considered more than once to trigger passive type merge.
3468
3469 Tue Nov 23 10:55:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3470
3471         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
3472         in case of error. Error message tuned.
3473
3474 1999-11-21  Anthony Green  <green@cygnus.com>
3475
3476         * constants.c (find_methodref_index): Unwrap method names before
3477         inserting them in the constant pool.
3478
3479         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
3480
3481         * class.c (assume_compiled_node): New typedef.
3482         (assume_compiled_tree): New static data.
3483         (find_assume_compiled_node): New function.
3484         (add_assume_compiled): New function.
3485         (assume_compiled): New function.
3486         * class.c (make_class_data): Use assume_compiled.
3487         (is_compiled_class): Use assume_compiled.
3488
3489         * java-tree.h (add_assume_compiled): Declare.
3490
3491         * lang.c (lang_decode_option): Parse new options.
3492
3493 Wed Nov 17 21:09:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3494
3495         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
3496         int_type_node: that's what `_Jv_AllocObject' expects.
3497
3498 Thu Nov 11 01:57:14 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3499
3500         * parse.y (lookup_method_invoke): Use lang_printable_name to
3501         reliably build the type name during error report. Fixes PR gcj/97.
3502
3503 1999-11-09  Tom Tromey  <tromey@cygnus.com>
3504
3505         * jcf-path.c: Include <sys/stat.h>.
3506         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
3507         (DIR_UP): New macro.
3508
3509 Tue Nov  9 12:12:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3510
3511         * parse.y (source_end_java_method): Resume permanent allocation,
3512         reversing Apr 27 1998 patch.
3513         (patch_string_cst): Pop obstacks after having pushed the permanent
3514         ones.
3515
3516 1999-11-05  Tom Tromey  <tromey@cygnus.com>
3517
3518         * class.c (finish_class): Emit inlined methods if any native
3519         methods exist in the class.  Fixes PR gcj/85.
3520
3521 Thu Nov  4 16:27:01 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3522
3523         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
3524         (qualify_ambiguous_name): Likewise.
3525
3526 Wed Nov  3 15:20:02 MST 1999  Godmar Back <gback@cs.utah.edu>
3527
3528         * typeck.c: (lookup_java_method):  search all inherited
3529         interfaces when looking up interface method.
3530
3531 Mon Nov  1 23:42:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3532
3533         * parse.y (method_header:): Issue error message for rule `type
3534         error'.
3535         (synchronized:): Error report when not using synchronized.
3536
3537 Mon Nov  1 01:32:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3538
3539         * parse.y (resolve_qualified_expression_name): Prevent `this' from
3540         being used before the superclass constructor has been called.
3541         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
3542         instead of `CALL_THIS_CONSTRUCTOR_P'.
3543
3544 Sat Oct 30 21:35:13 1999  Todd T. Fries <todd@lighthouse.fries.net>
3545
3546         * check-init.c: Fix typo in comment.
3547
3548 Fri Oct 29 14:35:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3549
3550         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
3551         and final method.
3552
3553 Fri Oct 29 14:23:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3554
3555         * parse.y (expression_statement:): Call function to report
3556         improper invocation of a constructor.
3557         (parse_ctor_invocation_error): New function.
3558
3559 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
3560
3561         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
3562         remember_end_note.
3563
3564 1999-10-21  Tom Tromey  <tromey@cygnus.com>
3565
3566         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
3567         in generated `main'.
3568
3569 Thu Oct 21 01:27:31 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3570
3571         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
3572         (qualify_ambiguous_name): Likewise.
3573
3574 Wed Oct 20 01:41:47 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3575
3576         * parse.y (java_complete_tree): fold_constant_for_init to work on
3577         permanent_obstack.
3578         (java_complete_lhs): Likewise.
3579         (array_constructor_check_entry): Complete an initializer element
3580         on permanent_obstack.
3581
3582 1999-10-19  Tom Tromey  <tromey@cygnus.com>
3583
3584         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
3585         From Mike Moreton <mike@pillim.demon.co.uk>.
3586
3587 1999-10-15  Greg McGary  <gkm@gnu.org>
3588
3589         * java-tree.h (flag_bounds_check): Remove extern decl.
3590         * lang.c (flag_bounds_check): Remove global variable.
3591         (lang_f_options): Remove "bounds-check" entry.
3592         (lang_init_options): Default flag_bounds_check to "on".
3593
3594 1999-10-14  Tom Tromey  <tromey@cygnus.com>
3595
3596         * jvgenmain.c (usage): New function.
3597         (main): Use it.  Also, handle `-D' options.
3598         * jvspec.c (lang_specific_driver): Recognize -D.
3599         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
3600
3601         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
3602
3603 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3604
3605         * jcf-dump.c (print_constant, disassemble_method): Don't call a
3606         variadic function with a non-literal format string.
3607
3608         * parse-scan.y (report_main_declaration): Likewise.
3609
3610         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
3611
3612         * parse.y (read_import_dir, patch_assignment, patch_binop,
3613         patch_array_ref): Likewise.
3614
3615         * typeck.c (build_java_array_type): Likewise.
3616
3617         * verify.c (verify_jvm_instructions): Likewise.
3618
3619 Tue Oct 12 22:28:10 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3620
3621         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
3622
3623 1999-10-07  Anthony Green  <green@cygnus.com>
3624
3625         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
3626         where CHECK_PUT may fail for valid reasons.
3627
3628         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
3629         UNSAFE_PUTN): New macros.
3630
3631 1999-10-04  Tom Tromey  <tromey@cygnus.com>
3632
3633         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
3634         well.  Fixes Java PR gcj/59.
3635         * parse-scan.y (yyerror): Report errors.
3636
3637 Fri Sep 24 12:23:05 1999  Glenn Chambers  <GChambers@provsol.com>
3638
3639         * decl.c (insert_block): Remove unconditional `abort'.
3640
3641 Fri Sep 24 10:48:10 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
3642
3643         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
3644         FUNCTION_CODE now of type int.  All callers changed.
3645         Set the builtin's DECL_BUILT_IN_CLASS.
3646
3647 1999-09-23  Tom Tromey  <tromey@cygnus.com>
3648
3649         * jvspec.c (lang_specific_driver): Don't read spec file if
3650         -fsyntax-only given.
3651
3652 1999-09-22  Tom Tromey  <tromey@cygnus.com>
3653
3654         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
3655
3656         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
3657         (WORDS_TO_LONG): Likewise.
3658         (WORDS_TO_DOUBLE): Likewise.
3659
3660 Tue Sep 14 16:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3661
3662         * jcf-write.c (RELOCATION_VALUE_0): New macro.
3663         (RELOCATION_VALUE_1): Likewise.
3664         (emit_iinc, emit_reloc, push_constant1, push_constant2,
3665         push_in_const, push_long_const): Prototyped.
3666         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
3667         (push_constant2): Likewise.
3668         (push_int_const): Cast find_constant1's integer arguments to `jword'.
3669         (find_constant_wide): Cast find_constant2's integer arguments to
3670         `jword'.
3671         (find_constant_index): Cast find_constant2's and find_constant2's
3672         integer arguments to `jword'.
3673         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
3674         (emit_switch_reloc): Use RELOCATION_VALUE_0.
3675         (emit_if): Use RELOCATION_VALUE_1.
3676         (emit_goto): Likewise.
3677         (emit_jsr): Likewise.
3678         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
3679         argument to push_long_const to HOST_WIDE_INT.
3680
3681 1999-09-15  Andreas Schwab  <schwab@suse.de>
3682
3683         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
3684
3685 1999-09-20  Nick Clifton  <nickc@cygnus.com>
3686
3687         * lang.c (lang_decode_option): Extend comment.
3688
3689 Thu Sep 16 15:42:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3690
3691         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
3692         instead of fndecl.
3693
3694 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3695
3696         * gjavah.c (get_field_name, print_method_info, print_include,
3697         add_namelet): Use xmalloc, not malloc.
3698
3699         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
3700         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
3701         NULL pointer.
3702
3703         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
3704
3705         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
3706
3707         * jcf-path.c (add_entry): Likewise.
3708
3709         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
3710
3711         * jv-scan.c (xmalloc): Remove definition.
3712
3713         * jvgenmain.c (xmalloc): Likewise.
3714
3715         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
3716
3717         * lex.c (java_store_unicode): Use xrealloc, not realloc.
3718
3719         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
3720         concat, not xmalloc/sprintf.
3721         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
3722         (xstrdup): Remove definition.
3723
3724         * parse.y (duplicate_declaration_error_p,
3725         constructor_circularity_msg, verify_constructor_circularity,
3726         check_abstract_method_definitions, java_check_regular_methods,
3727         java_check_abstract_methods, patch_method_invocation,
3728         check_for_static_method_reference, patch_assignment, patch_binop,
3729         patch_cast, array_constructor_check_entry, patch_return,
3730         patch_conditional_expr): Use xstrdup, not strdup.
3731
3732         * zextract.c (ALLOC): Use xmalloc, not malloc.
3733
3734 Sun Sep 12 23:30:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3735
3736         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
3737
3738         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
3739         (do_spec, lang_specific_pre_link, lang_specific_driver,
3740         input_filename, input_filename_length): Don't declare.
3741         (main_class_name, jvgenmain_spec, lang_specific_driver):
3742         Constify a char*.
3743         (lang_specific_driver): All calls to the function pointer
3744         parameter now explicitly call `fatal'.
3745
3746 Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3747
3748         * parse.y (find_applicable_accessible_methods_list): Search
3749         abstract classes as interfaces.
3750
3751 Thu Sep  9 17:33:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3752
3753         * class.c (finish_class): We're now outside a valid method
3754         declaration. Tell the rest of gcc so.
3755
3756 1999-09-08  Bruce Korb  autogen@linuxbox.com
3757
3758         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
3759
3760 1999-09-07  Tom Tromey  <tromey@cygnus.com>
3761
3762         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
3763         java-array.h.
3764         (decode_signature_piece): Don't emit "::" in JArray<>.
3765         (print_namelet): Only print trailing `;' when printing a class.
3766
3767 Fri Sep 10 10:32:32 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
3768
3769         * java-tree.h: Delete declarations for all tree nodes now moved to
3770         global_trees.
3771         * decl.c: Delete their definitions.
3772
3773 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
3774
3775         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
3776         * Makefile.in (OBJS): Add ggc-callbacks.o.
3777         (OBJDEPS): Likewise.
3778
3779 1999-09-03  Tom Tromey  <tromey@cygnus.com>
3780
3781         * parse.y (strip_out_static_field_access_decl): Return operand if
3782         it satisfies JDECL_P.
3783
3784 1999-09-02  Tom Tromey  <tromey@cygnus.com>
3785
3786         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
3787         Handle nested arrays, like `[[I'.
3788
3789 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3790
3791         * class.c (finish_class): Remove unused parameter, all callers
3792         changed.
3793
3794         * expr.c (build_java_athrow): Change return type to void.
3795         (java_lang_expand_expr): Make sure each case in switch returns a
3796         value.
3797
3798         * java-tree.h (finish_class): Fix prototype to take void args.
3799
3800         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
3801         (main): Issue return from main, not exit.
3802
3803         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
3804
3805         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
3806
3807         * jv-scan.c (main): Issue return from main, not exit.
3808
3809         * parse.y (check_abstract_method_definitions,
3810         java_check_abstract_method_definitions): Add static prototypes.
3811         (java_complete_expand_methods): Fix call to `finish_class'.
3812
3813         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
3814         and `prevpc'.
3815
3816 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3817
3818         * lang.c (language_string): Constify.
3819
3820 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3821
3822         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
3823         Remove hacks for stuff which comes from libiberty.
3824
3825         * Make-lang.in: Likewise.
3826
3827 Mon Aug 30 16:41:41 1999  Hans-Peter Nilsson  <hp@axis.se>
3828
3829         * Makefile.in (xref.o): Depend on xref.c explicitly.
3830
3831 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3832
3833         * java-tree.h (lang_printable_name): Constify a char*.
3834
3835         * lang.c (lang_printable_name): Likewise.
3836
3837 Fri Aug 27 23:31:57 1999  Jeffrey A Law  (law@cygnus.com)
3838
3839         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
3840         comments in C code.
3841
3842 1999-08-26  Tom Tromey  <tromey@cygnus.com>
3843
3844         * gjavah.c (print_cxx_classname): Print "::" before qualified
3845         name.
3846
3847 Thu Aug 26 09:10:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3848
3849         * parse.y (lookup_cl): Changed leading comment. Now does its best
3850         to set the column number.
3851         (qualify_ambiguous_name): Take WFL wrappers into account.
3852
3853 Wed Aug 25 15:37:15 1999  Gregg Townsend  <gmt@cs.arizona.edu>
3854
3855         * verify.c (verify_jvm_instructions): Don't check instruction
3856         validity beyond end of method.
3857
3858 1999-08-25  Tom Tromey  <tromey@cygnus.com>
3859
3860         * jvspec.c (lang_specific_driver): Correctly handle --help again.
3861
3862 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3863
3864         * gjavah.c (print_name, print_base_classname, utf8_cmp,
3865         cxx_keyword_subst, generate_access, name_is_method_p,
3866         get_field_name, print_field_name, super_class_name, print_include,
3867         decode_signature_piece, print_class_decls, usage, help,
3868         java_no_argument, version, add_namelet, print_namelet): Add static
3869         prototype.
3870         (print_base_classname, utf8_cmp, cxx_keyword_subst,
3871         name_is_method_p): Constify a char*.
3872         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
3873         Provide a final else clause in an if-else-if.
3874         (print_field_info): Add missing final arg in function call to
3875         `print_field_name'.
3876         (print_method_info, decompile_method, decode_signature_piece,
3877         print_c_decl, print_full_cxx_name, print_stub,
3878         print_mangled_classname, super_class_name, print_include,
3879         add_namelet, add_class_decl, print_class_decls, process_file,
3880         help): Constify a char*.
3881
3882         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
3883         push_int_const, find_constant_wide, find_constant_index,
3884         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
3885         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
3886         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
3887         emit_if, emit_goto, emit_jsr, call_cleanups,
3888         make_class_file_name): Add static prototypes.
3889         (generate_bytecode_return, generate_bytecode_insns): Pass a
3890         NULL_PTR, not a NULL_TREE.
3891
3892         * jv-scan.c: Include "jcf.h".
3893         (main): Declare using DEFUN macro.
3894
3895         * jvspec.c (find_spec_file, lang_specific_pre_link,
3896         lang_specific_driver): Add prototypes.
3897         (find_spec_file): Constify a char*.
3898
3899         * keyword.gperf (hash, java_keyword): Add prototypes.
3900
3901         * lang.c (lang_print_error): Add static prototype.
3902         (lang_init): Prefer memcpy over bcopy to avoid casts.
3903
3904         * lex.c (yylex): Add static prototype.
3905
3906         * parse-scan.y: Include "lex.c" earlier.
3907
3908         * parse.h: Remove redundant declaration for `yylex'.
3909
3910         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
3911         labeled_block_contains_loop_p): Add static prototypes.
3912         (not_accessible_p): Make static to match prototype.
3913
3914         * verify.c (start_pc_cmp): Don't needlessly cast away const.
3915
3916 Sun Aug 22 11:07:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3917
3918         * parse.y (check_method_redefinition): Changed leading comment.
3919         (check_abstract_method_definitions): New function.
3920         (java_check_abstract_method_definitions): New function.
3921         (java_check_regular_methods): Call it.
3922         (verify_constructor_super): Fixed indentation.
3923         (lookup_method_invoke): Likewise.
3924
3925 Thu Aug 19 10:26:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3926
3927         * parse.y (method_header): Return a null pointer if the current
3928         class node is null.
3929         (finish_method_declaration): Return if the current function decl
3930         is null.
3931         (source_start_java_method): Likewise.
3932         (java_method_add_stmt): Likewise.
3933
3934 Wed Aug 18 13:17:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3935
3936         * class.c (emit_register_class): Removed unnecessary call to
3937         start_sequence.
3938         * parse.y (labeled_block_contains_loop_p): Removed unused local
3939         variable.
3940
3941 Tue Aug 17 22:51:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3942
3943         * parse.y (java_refold): Added prototype.
3944
3945 Tue Aug 17 21:48:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3946
3947         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
3948         (java_stabilize_reference): Removed unnecessary `else'.
3949         (java_complete_lhs): Set flag to remember boolean. Call
3950         java_refold. Added comments.
3951         (java_decl_equiv): New function.
3952         (binop_compound_p): Likewise.
3953         (java_refold): Likewise.
3954         (patch_unaryop): Striped static field access assigned to decl and
3955         op. Changed promotion scheme for ++/-- operators.
3956         (search_loop): New function.
3957         (labeled_block_contains_loop_p): Likewise.
3958         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
3959         comment.
3960         (patch_bc_statement): Call search_loop. Fixed comment.
3961
3962 1999-08-14  Anthony Green  <green@cygnus.com>
3963
3964         * expr.c (java_lang_expand_expr): Mark static array data as
3965         referenced.
3966
3967 Tue Aug 10 00:28:31 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3968
3969         * jvgenmain.c (main): NUL-terminate name_obstack.
3970
3971 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3972
3973         * check-init.c (check_bool2_init, done_alternative): Add static
3974         prototypes.
3975
3976         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
3977         (add_method, build_utf8_ref, build_class_ref,
3978         append_gpp_mangled_type, layout_class_method): Constify a char*.
3979
3980         * decl.c (push_promoted_type, make_binding_level): Add static
3981         prototypes.
3982         (push_promoted_type, pushdecl): Constify a char*.
3983
3984         * except.c (find_handler_in_range, link_handler,
3985         check_start_handlers): Add static prototypes.
3986
3987         * expr.c (process_jvm_instruction): Constify a char*.
3988
3989         * gjavah.c (main): Constify a char*.
3990
3991         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
3992         Constify a char*.
3993
3994         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
3995         static prototypes.
3996         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
3997         munge, print_ents): Constify a char*.
3998
3999         * jcf-dump.c (disassemble_method): Constify a char*.
4000         (print_constant_pool, print_exception_table): Add static prototypes.
4001         (print_constant, print_exception_table, main, disassemble_method):
4002         Constify a char*.
4003
4004         * jcf-io.c (find_classfile, find_class): Likewise.
4005
4006         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
4007         (set_source_filename, predefined_filename_p): Add static prototypes.
4008         (set_source_filename, get_constant, get_class_constant,
4009         find_in_current_zip): Constify a char*.
4010
4011         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
4012         static prototypes.
4013         (add_entry, add_path, jcf_path_classpath_arg,
4014         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
4015
4016         * jcf-reader.c (get_attribute, jcf_parse_preamble,
4017         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
4018         jcf_parse_one_method, jcf_parse_methods,
4019         jcf_parse_final_attributes): Add static prototypes.
4020         (get_attribute): Constify a char*.
4021
4022         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
4023         jcf_dependency_add_target, jcf_path_classpath_arg,
4024         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
4025
4026         * jv-scan.c (main): Constify a char*.
4027         (gcc_obstack_init): Add prototype arguments.
4028
4029         * jvgenmain.c (gcc_obstack_init): Likewise.
4030         (main): Constify a char*.
4031
4032         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
4033         static prototypes.
4034         (put_decl_string, lang_print_error): Constify a char*.
4035         (lang_init): Remove redundant extern prototype.
4036
4037         * mangle.c (emit_unicode_mangled_name): Constify a char*.
4038
4039         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
4040         Add static prototypes.
4041         (get_type_from_signature): Constify a char*.
4042
4043         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
4044         Add static prototypes.
4045         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
4046         (verify_jvm_instructions): Constify a char*.
4047
4048         * xref.c (xref_flag_value): Likewise.
4049
4050         * xref.h (xref_flag_value): Likewise.
4051
4052         * zextract.c (makeword, makelong): Add static prototypes.
4053         (makeword, makelong): Constify a uch*.
4054
4055 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4056
4057         * lang.c (java_dummy_print): Constify a char*.
4058         (lang_print_error): Likewise.
4059         (lang_init): Remove redundant prototype for `print_error_function'.
4060         (lang_init_source): Likewise.
4061         (lang_identify): Constify a char*.
4062
4063 1999-08-09  Tom Tromey  <tromey@cygnus.com>
4064
4065         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
4066         (WORDS_TO_LONG): Likewise.
4067         (WORDS_TO_DOUBLE): Likewise.
4068
4069 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4070
4071         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
4072
4073         * expr.c (java_stack_pop, java_array_data_offset,
4074         build_java_throw_out_of_bounds_exception, case_identity,
4075         build_java_check_indexed_type): Add static prototypes.
4076         (linenumber_table, expand_invoke, expand_java_field_op,
4077         build_primtype_type_ref, expand_byte_code): Constify a char*.
4078
4079         * java-tree.h (build_primtype_type_ref, linenumber_table):
4080         Constify a char*.
4081         (java_lang_expand_expr): Add prototype.
4082
4083         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
4084         `java_lang_expand_expr'.
4085
4086         * lex.c (java_lex_error): Constify a char*.
4087         (java_get_unicode, java_read_char, java_allocate_new_line,
4088         java_unget_unicode, java_sneak_unicode): Prototype.
4089
4090         * parse-scan.y (current_class, package_name, method_declarator,
4091         report_class_declaration, yyerror): Constify a char*.
4092
4093         * parse.h (java_report_errors): Prototype.
4094         (yyerror): Constify a char*.
4095
4096         * parse.y (classitf_redefinition_error, check_modifiers,
4097         parse_jdk1_1_error, lookup_package_type,
4098         lookup_package_type_and_set_next, get_printable_method_name,
4099         purify_type_name): Constify a char*.
4100         (build_super_invocation, maybe_generate_finit,
4101         verify_constructor_super, parser_add_interface,
4102         add_superinterfaces, jdep_resolve_class, note_possible_classname,
4103         java_complete_expand_methods, java_expand_finals,
4104         cut_identifier_in_qualified, java_stabilize_reference,
4105         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
4106         merge_string_cste): Prototype.
4107         (single_type_import_declaration, yyerror,
4108         variable_redefinition_error, build_array_from_name,
4109         build_unresolved_array_type, check_class_interface_creation,
4110         resolve_class, complete_class_report_errors,
4111         note_possible_classname, read_import_dir,
4112         find_in_imports_on_demand, resolve_package, fix_constructors,
4113         check_deprecation, lookup_method_invoke,
4114         maybe_build_primttype_type_ref, array_constructor_check_entry):
4115         Constify a char*.
4116         (java_complete_expand_methods, java_expand_finals): Make static.
4117         (convert_narrow): Remove static prototype.
4118
4119 Tue Aug  3 20:21:20 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
4120
4121         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
4122
4123 1999-08-02  Richard Henderson  <rth@cygnus.com>
4124
4125         * decl.c: Include defaults.h instead of expr.h.
4126         * parse.y: Likewise.
4127
4128 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
4129
4130         * java/decl.c (start_java_method): Change all uses of
4131         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
4132         Ensure expr.h is included.
4133         * java/expr.c (pop_arguments): Ditto.
4134         * java/parse.y (expand_start_java_method): Ditto.
4135
4136 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4137
4138         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
4139
4140 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
4141
4142         * decl.c: Include "function.h".
4143         * except.c: Likewise.
4144         * parse.y: Likewise.
4145         * Makefile.in: Update dependencies.
4146
4147 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4148
4149         * expr.c (build_java_soft_divmod): Provide a default case in switch.
4150         (java_lang_expand_expr): Mark parameters `target', `tmode' and
4151         `modifier' with ATTRIBUTE_UNUSED.
4152
4153         * gjavah.c (process_file): Add braces around ambiguous `else'.
4154
4155         * jcf-dump.c (print_access_flags, localvar_free): Change return
4156         type to void.
4157
4158         * parse.y (java_complete_expand_method): Initialize variable
4159         `exception_copy'.
4160         (resolve_qualified_expression_name): Likewise for `field_decl'.
4161         (patch_method_invocation): Likewise for `class_to_search'.
4162         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
4163         (patch_assignment): Likewise for `lhs_type'.
4164
4165         * verify.c (verify_jvm_instructions): Remove unused variable
4166         `caller'.
4167
4168 1999-07-25  Richard Henderson  <rth@cygnus.com>
4169
4170         * decl.c (va_list_type_node): New.
4171
4172 1999-07-25  Anthony Green  <green@cygnus.com>
4173
4174         * gjavah.c (print_stub): New function.
4175         (METHOD_IS_NATIVE): New macro.
4176         (print_mangled_classname): Make static.
4177         (HANDLE_END_FIELD): Don't emit fields during stub generation.
4178         (process_file): Perform stub generation.
4179         (HANDLE_METHOD): Don't emit class decls during stub
4180         generation.
4181         (HANDLE_END_METHOD): Take into account stub generation.
4182         (print_method_info): Handle stub generation.
4183         (print_stub): New function.
4184         (print_cxx_classname): Make signature consistant with others.
4185         (help): Describe -stubs option.
4186         (main): Create stub file.
4187         (version): Use version.c.
4188         (print_full_cxx_name): New function.
4189         (print_c_decl): Use print_full_cxx_name.
4190
4191 Thu Jul 22 12:41:12 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4192
4193         * check-init.c (check_init): Handle MAX_EXPR.
4194
4195 1999-07-15  Andrew Haley  <aph@cygnus.com>
4196
4197         * lang.c (flag_use_divide_subroutine): New variable.
4198         * typeck.c: (convert_ieee_real_to_integer): Bounds check
4199         fp-to-integer conversion.
4200         (convert): Call convert_ieee_real_to_integer when flag_fast_math
4201         is not set.
4202
4203         * expr.c (build_java_soft_divmod): New function.
4204         (build_java_binop): Call build_java_soft_divmod if
4205         flag_use_divide_subroutine is set.
4206         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
4207         soft_lrem_node: new builtin functions.
4208         (init_decl_processing) Initialize the new builtins.
4209         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
4210         soft_lrem_node: new builtin functions.
4211         (build_java_soft_divmod): New function.
4212         * parse.y: Call build_java_soft_divmod if
4213         flag_use_divide_subroutine is set.
4214         * parse.c: Rebuilt.
4215
4216         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
4217         a --specs= arg) even if not linking.
4218         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
4219         -fuse-divide-subroutine
4220
4221 Tue Jul 20 13:20:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4222
4223         * parse.y (resolve_and_layout): Check methods only once.
4224         (resolve_qualified_expression_name): Verify thrown exceptions
4225         compatibility.
4226         (check_thrown_exceptions): Reject exceptions thrown in
4227         initializer. Error message tuned.
4228
4229 1999-07-14  Andrew Haley  <aph@cygnus.com>
4230
4231         * expr.c (expand_expr): Do not return the last statement in a
4232         block as the block's value.
4233
4234 Sat Jul  3 22:26:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4235
4236         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
4237         CALL_EXPR, to avoid order of evaluation changes.
4238
4239 Fri Jul  2 17:44:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4240
4241         * parse.y (qualify_ambiguous_name): Do not use
4242         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
4243
4244 Thu Jul  1 23:31:16 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4245
4246         * check-init.c (check_init): Handle MAX_EXPR.
4247         * expr.c (force_evaluation_order): Force method call arguments to
4248         be evaluated in left-to-right order.
4249         * parse.y (qualify_ambiguous_name): Loop again to qualify
4250         NEW_ARRAY_EXPR properly.
4251
4252 Wed Jun 30 17:27:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4253
4254         * parse.y (patch_invoke): Resolve unresolved invoked method
4255         returned type.
4256         (qualify_ambiguous_name): STRING_CST to qualify expression for
4257         type name resolution.
4258
4259 1999-06-24  Andrew Haley  <aph@cygnus.com>
4260
4261         * class.c (finish_class): Whenever a deferred method is
4262         output, rescan the list of methods to see if a new candidate for
4263         output can be found.
4264
4265 1999-06-28  Tom Tromey  <tromey@cygnus.com>
4266
4267         * jvspec.c (lang_specific_driver): Recognize --help.
4268
4269 Fri Jun 25 13:35:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4270
4271         * parse.y (resolve_package): Fixed bogus return statement.
4272         (patch_method_invocation): Resolve method invocation beginning with
4273         a package name qualifier.
4274
4275 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4276
4277         * Make-lang.in (java.stage1): Depend on stage1-start.
4278         (java.stage2): Likewise for stage2-start.
4279         (java.stage3): Likewise for stage3-start.
4280         (java.stage4): Likewise for stage4-start.
4281
4282 Thu Jun 24 13:12:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4283
4284         * parse.y (java_complete_lhs): When doing cross referencing, don't
4285         try to keep file location on a WFL expanded as a CALL_EXPR.
4286
4287 Wed Jun 23 14:37:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4288
4289         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
4290         compiling to class file a void method with an empty method body.
4291         As a side effect, the bytecode backend will generate the
4292         appropriate `return' instruction.
4293
4294 Tue Jun 22 20:43:49 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4295
4296         * parse.y (lookup_package_type_and_set_next): New function prototype.
4297         (resolve_package): Search current and imported packages.
4298         (lookup_package_type_and_set_next): New function.
4299
4300 1999-06-22  Andrew Haley  <aph@cygnus.com>
4301
4302         * verify.c (verify_jvm_instructions): Check for pending blocks
4303         before invalid PC test and opcode switch, not after.
4304
4305 1999-06-21  Andrew Haley  <aph@cygnus.com>
4306
4307         * except.c (find_handler_in_range): The upper limit for exception
4308         ranges is exclusive, not inclusive: (start <= pc < end).
4309         (link_handler): find child pointer which points to outer by
4310         searching sibling list: previous code incorrectly assumed that
4311         outer->outer->first_child must point to outer.
4312         * verify.c (verify_jvm_instructions): FIXME added to code for
4313         `athrow'.
4314         (verify_jvm_instructions): Do not assume that the last block
4315         processed in a subroutine is a block which ends with a `ret'
4316         instruction.  With some control flows it is possible that the last
4317         block ends with an `athrow'.
4318
4319 Mon Jun 14 13:13:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4320
4321         * parse.y (qualify_ambiguous_name): Reorganized the post
4322         evaluation of non WFL leading expression nodes.
4323
4324 Fri Jun 11 21:37:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4325
4326         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
4327         CONVERT_EXPR.
4328
4329 Thu Jun 10 22:26:17 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4330
4331         * parse.y (qualify_ambiguous_name): Handle qualified expression
4332         beginning with a STRING_CST.
4333
4334 Thu Jun 10 20:27:25 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4335
4336         * parse.y (register_fields): Set DECL_INITIAL on both
4337         pre-initialized static and public fields.
4338         (resolve_field_access): Static field access expressions to always
4339         use pointer types.
4340         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
4341         qualification. CONVERT_EXPR to be resolved as an expression name.
4342         (java_complete_lhs): Identify and access qualified final
4343         initialized field in switch statement case expression.
4344         (fold_constant_for_init): Pre-initialized field decl constant to
4345         be folded.
4346
4347 Mon Jun  7 16:09:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4348
4349         * parse.y (note_possible_classname): Mark returned node with
4350         QUALIFIED_P only if the original class name contained a '/'.
4351
4352 Sat Jun  5 11:46:59 1999  Anthony Green  <green@cygnus.com>
4353
4354         * Make-lang.in (gcjh): More parallel build fixes.
4355
4356 1999-06-03  Mike Stump  <mrs@wrs.com>
4357
4358         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
4359
4360 Wed Jun  2 10:44:38 1999  Anthony Green  <green@cygnus.com>
4361
4362         * except.c (link_handler): Chain exception handlers in order.
4363
4364 Wed Jun  2 10:41:24 1999  Anthony Green  <green@cygnus.com>
4365
4366         * expr.c (expand_byte_code): Fill unreachable bytecode regions
4367         with nops and process as usual in order to always set correct EH
4368         ranges.  Emit detailed warnings about unreachable bytecodes.
4369
4370 Wed Jun  2 10:35:13 1999  Anthony Green  <green@cygnus.com>
4371
4372         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
4373         constant.
4374
4375 Fri May 28 18:22:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4376
4377         * parse.y (lookup_field_wrapper): Unified returned value to NULL
4378           or the searched field decl.
4379
4380 Fri May 28 11:34:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4381
4382         * parse.y (fold_constant_for_init): Convert numerical constant
4383         values to the type of the assigned field.
4384
4385 Thu May 27 19:57:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4386
4387         * expr.c (lookup_field): Relaxed the test on class loading error
4388         detection.
4389         * parse.y (fold_constant_for_init): Enabeled old code.
4390
4391 Wed May 26 18:06:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4392
4393         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
4394         decide the validity of the cast of a java.lang.Cloneable reference
4395         to an array.
4396         (patch_conditional_expr): Fixed first argument passed to
4397         binary_numeric_promotion.
4398
4399 Wed May 26 15:33:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4400
4401         * parse.y (qualify_ambiguous_name): Take into account that a
4402         CONVERT_EXPR might specify a type as a WFL.
4403
4404 Tue May 25 15:06:13 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4405
4406         * parse.y (patch_assignment): Save the rhs before using it as an
4407         argument to _Jv_CheckArrayStore.
4408
4409 Tue May 25 11:23:59 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4410
4411         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
4412
4413 Mon May 24 13:26:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4414
4415         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
4416         floating point litteral only when the exponent indicator has been
4417         parsed.
4418
4419 Sat May 22 13:54:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4420
4421         * parse.y (formal_parameter:): Construct argument tree list
4422         element even if a yet unsupported final parameter was encountered.
4423
4424 Tue May 18 00:28:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4425
4426         * parse.y (finish_method_declaration): Issue errors for native or
4427         abstract methods declared with a method body, as well as for non
4428         native or non abstract methods with no method body.
4429
4430 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4431
4432         * class.c (build_utf8_ref): Initialize variable `field'.
4433
4434         * decl.c (init_decl_processing): Initialize variable `field'.
4435
4436         * expr.c (build_known_method_ref): Mark parameters `method_type',
4437         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
4438         (process_jvm_instruction): Likewise for parameter `length'.
4439
4440         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
4441         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
4442         ATTRIBUTE_UNUSED.
4443
4444         * parse.y (maybe_generate_clinit): Remove unused variable
4445         `has_non_primitive_fields'.
4446         (find_in_imports_on_demand): Initialize variables `node_to_use'
4447         and `cl'.
4448         (patch_binop): Likewise for variable `prom_type'.
4449         (patch_unaryop): Likewise for variable `prom_type'.
4450
4451         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
4452
4453         * xref.c (xref_table): Add missing initializer.
4454
4455 1999-05-14  Tom Tromey  <tromey@cygnus.com>
4456
4457         * java-except.h (struct eh_range): Removed unused `next' member.
4458         * verify.c (verify_jvm_instructions): Call check_nested_ranges
4459         after adding all exception handlers.  Sort exception ranges in
4460         order of start PC.
4461         (struct pc_index): New structure.
4462         (start_pc_cmp): New function.
4463         * except.c (add_handler): Return `void'.  Don't call link_handler;
4464         instead construct an ordinary linked list and do range
4465         coalescing.
4466         (check_nested_ranges): New function.
4467         (link_handler): Changed interface to allow merging of eh_ranges.
4468         Split overlapping ranges.  Return `void'.
4469
4470 Mon May 17 19:20:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4471
4472         * parse.y (constructor_block_end:): New rule, tagged <node>.
4473         (constructor_body:): Use `constructor_block_end' instead of
4474         `block_end'.
4475
4476 Mon May 17 18:01:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4477
4478         * parse.y (statement_nsi:): Pop `for' statement block.
4479         (java_complete_lhs): Labeled blocks containing no statement are
4480         marked as completing normally.
4481
4482 Fri May 14 12:31:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4483
4484         * xref.c (xref_set_current_fp): New function, defined.
4485         * xref.h (xref_set_current_fp): New function, prototyped.
4486
4487 Fri May 14 11:57:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4488
4489         * check-init.c (check_init): Take into account that
4490         LABELED_BLOCK_STMT can be empty.
4491
4492 Thu May 13 18:30:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4493
4494         * parse.y (java_check_regular_methods): Warning check on not
4495         overriding methods with default access in other packages does not
4496         apply to `<clinit>'.
4497         (java_complete_lhs): If block body is an empty_stmt_node, replace
4498         it by NULL_TREE. This prevents gcc from generating an irrelevant
4499         warning.
4500
4501 Thu May 13 13:23:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4502
4503         * check-init.c (check_init): Removed code accepting to see things
4504         falling through default:, when doing xrefs.
4505         * java-tree.h (do_not_fold): New global variable, declared.
4506         * parse.y (do_not_fold): New global variable, defined.
4507         (java_complete_expand_method): Set `do_not_fold' to the value of
4508         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
4509         and reinstall them after them have been purged; do not check for
4510         initializations; do not issue missing return errors.
4511         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
4512         when doing xrefs.
4513         (patch_binop): Skip the fold part when doing xrefs.
4514         (build_string_concatenation): Skip the concatenation part when
4515         doing xrefs.
4516         (patch_synchronized_statement): Do not generate a try-finally when
4517         doing xrefs.
4518         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
4519         and keep the location where the throw was seen.
4520         * typeck.c (convert): When `do_not_fold' is set, do not attempt
4521         any treatment on the converted node an simply return a NOP_EXPR of
4522         the targeted type.
4523         * xref.c (xref_get_data): New function, defined.
4524         * xref.h (xref_get_data): New function, declared.
4525         (XREF_GET_DATA): Use xref_get_data.
4526
4527 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4528
4529         * gjavah.c (print_include): Cast the result of `strlen' to int
4530         when comparing against a signed value.
4531         (add_namelet): Likewise.
4532
4533 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4534
4535         * expr.c (expand_invoke): Mark parameter `nargs' with
4536         ATTRIBUTE_UNUSED.
4537         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
4538
4539         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
4540         ATTRIBUTE_UNUSED.
4541
4542         * jcf-reader.c (get_attribute): Cast a value to long
4543         when comparing against a signed expression.  Likewise.
4544
4545         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
4546         HOST_BITS_PER_CHAR.
4547
4548 1999-05-11  Andrew Haley  <aph@cygnus.com>
4549
4550         * parse.y (source_end_java_method): If the current method contains
4551         any exception handlers, force asynchronous_exceptions: this is
4552         necessary because signal handlers in libjava may throw exceptions.
4553         * decl.c (end_java_method): Ditto.
4554
4555 1999-05-11  Tom Tromey  <tromey@cygnus.com>
4556
4557         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
4558         flags.
4559         * jvspec.c (THREAD_NAME): Removed.
4560         (GC_NAME): Likewise.
4561         (MATHLIB): Likewise.
4562         (WITHLIBC): Likewise.
4563         (GCLIB): Likewise.
4564         (THREADLIB): Likewise.
4565         (MATH_LIBRARY): Likewise.
4566         (lang_specific_driver): Don't add `-l' options to command line.
4567         Instead, add a single --specs option.  Recognize `-L' options and
4568         use them to search for spec file.
4569         (find_spec_file): New function.
4570         (SPEC_FILE): New define.
4571
4572 Tue May 11 11:46:36 1999  Dave Brolley  <brolley@cygnus.com>
4573
4574         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
4575         cpplib-enabled build.
4576
4577 1999-05-05  Per Bothner  <bothner@cygnus.com>
4578
4579         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
4580         temporarily zero it while calling rest_of_decl_compilation.
4581
4582         * java-tree.h (string_ptr_type_node):  Add declaration.
4583         * decl.c:  Define and initialize string_ptr_type_node.
4584         * parse.y (patch_string_cst):  Use string_ptr_type_node.
4585
4586         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
4587         * parse.y (for_statement):  Now unconditionally exit_block.
4588         (finish_labeled_statement):  No longer exit_block if for-loop.
4589         (patch_loop_statement):  Check harder if the loop is already labeled.
4590
4591         * parse.y (patch_initialized_static_field):  Removed function.
4592         (maybe_generate_clinit):  Removed special handling for interfaces.
4593         (java_complete_expand_methods):  Do a preliminary java_complete_tree
4594         on <clinit> to determine if it can be removed.
4595         (java_complete_expand_method):  Remove special handling for <clinit>.
4596         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
4597         optimize if we get back empty_stmt_node.
4598         For MODIFY_EXPR, re-do checking of static initializers.
4599         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
4600         For VAR_DECL, pass correct context.
4601
4602         * verify.c (verify_jvm_instructions):  Better error messages.
4603
4604 1999-05-03  Tom Tromey  <tromey@cygnus.com>
4605
4606         * parse-scan.y (interface_declaration): Call
4607         report_class_declaration for interfaces.
4608
4609 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
4610
4611         * Makefile.in: Remove -v from bison command lines.
4612
4613 Fri Apr 30 17:54:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4614
4615         * check-init.c (check_init): Exclude a case of error when doing
4616         xrefs.
4617         * class.c (layout_class_method): Don't generate the error message
4618         twice when compiling from source.
4619         * lang-options.h: Added `-Wredundant-modifers' and
4620         `-Wunusupported-jdk11' flags and help text.
4621         * lang.c (lang_decode_option): Added support for
4622         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
4623         flag_static_local_jdk11 and flag_redundant set accordingly.
4624         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
4625         * parse.h (EXPR_WFL_ADD_COL): New macro.
4626         (DECL_END_SOURCE_LINE): Likewise.
4627         (DECL_INHERITED_SOURCE_LINE): Likewise.
4628         * parse.y (static_ref_err): New function, prototyped.
4629         (CCB_TK): Now tagged <operator>.
4630         (class_body:): Remember the location of the closing '}' of a class
4631         definition when doing xrefs.
4632         (block:): Likewise.
4633         (block_end:): Likewise.
4634         (create_class): Remember the location of the inherited class
4635         identifier when doing xrefs.
4636         (register_fields): Added test on first operand of `init' before
4637         testing it TREE_CODE.
4638         (method_header): Store the location of the class identifier in the
4639         class decl when doing xrefs.
4640         (finish_method_declaration): Don't combine first/last method line
4641         when doing xref.
4642         (java_check_regular_methods): Warning check on not overriding
4643         methods with default access on other packages move before check on
4644         static methods. Initialization of `aflags' also moved up.
4645         (resolve_expression_name): Call static_ref_err to report the error.
4646         (static_ref_err): New function, implemented.
4647         (resolve_field_access): Returned simplified static field access
4648         when doing xrefs.
4649         (resolve_qualified_expression_name): Check for illegal use of
4650         static fields in a non static context. Call static_ref_err to
4651         report error in various places.
4652         (java_complete_tree): Do not fold initialized static fields when
4653         doing xrefs.
4654         (java_complete_lhs): Likewise.
4655
4656 1999-04-29  Anthony Green  <green@cygnus.com>
4657
4658         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
4659         create internal labels.
4660         (lookup_label): Ditto.
4661
4662 Sat Apr 24 16:50:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4663
4664         * class.c (layout_class_method): Generate <clinit>'s rtl for
4665         interfaces.
4666         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
4667         for interfaces' <clinit>.
4668         * expr.c (lookup_field): Search for fields in interfaces.
4669         (expand_invoke): Fixed indentation.
4670         (expand_java_field_op): Likewise. Use IS_CLINIT.
4671         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
4672         (IS_CLINIT): New macro.
4673         * parse.y (type_declaration:): Call maybe_generate_clinit after an
4674         interface was parsed.
4675         (maybe_generate_clinit): Don't generate if the current class is an
4676         interface with only fields of primitive types.
4677         (reset_method_name): Use IS_CLINIT.
4678         (java_complete_expand_method): Expand <clinit> when it exists for
4679         interfaces. Use IS_CLINIT.
4680         (resolve_expression_name): Use DECL_CONTEXT instead of
4681         current_class to build static field references.
4682         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
4683         ARRAY_REF when doing xreferencing.
4684         (check_final_assignment): Fixed typo in leading comment. Use
4685         IS_CLINIT.
4686         (patch_array_ref): Don't fully expand array references when
4687         xreferencing.
4688         (patch_return): Use IS_CLINIT.
4689         (patch_throw_statement): Likewise.
4690
4691 1999-04-22  Tom Tromey  <tromey@cygnus.com>
4692
4693         * Make-lang.in (JAVA_SRCS): Added check-init.c.
4694
4695 Wed Apr 21 11:13:36 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4696
4697         * decl.c (predef_filenames, predef_filenames_size): New globals
4698         (init_decl_processing): predef_filenames and predef_filenames_size
4699         initialized.
4700         * java-tree.h (predef_filenames, predef_filenames_size): Declared
4701         extern.
4702         * jcf-parse.c (predefined_filename_p): New function.
4703         (yyparse): Check that files on the command line are specified only
4704         once and issue a warning otherwise.
4705         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
4706         * parse.y (source_end_java_method): Nullify NOP method bodies, to
4707         avoid a gcc warning with -W -Wall turned on.
4708         (java_expand_classes): Abort if errors were encountered.
4709         (java_complete_lhs): If the cross reference flag is set, wrap
4710         field DECL node around a WFL when resolving expression name.
4711
4712 Mon Apr 19 14:44:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4713
4714         * lang.c (lang_decode_option): Fixed returned value when parsing
4715         `-fxref=...' and `-Wall'.
4716         * parse.y (source_end_java_method): Do not generate code when
4717         flag_emit_xref is set.
4718         (resolve_expression_name): Do not build static field access when
4719         flag_emit_xref is set.
4720         (resolve_field_access): No special treatment on `length' when
4721         flag_emit_xref is set. Do not build qualified static field access
4722         when flag_emit_xref is set.
4723         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
4724         when flag_emit_xref is set.
4725         (patch_assignment): Do not generate array store runtime check when
4726         flag_emit_xref is set.
4727         * xref.c (xref_flag_value): Fixed function declaration
4728         indentation.
4729         (xset_set_data): New function.
4730         * xref.h (xref_set_data): Added prototype for new function.
4731         (typedef struct xref_flag_table): New field data.
4732         (XREF_GET_DATA): New macro.
4733
4734 1999-04-19  Tom Tromey  <tromey@cygnus.com>
4735
4736         * xref.h (enum): Removed trailing comma.
4737
4738         * parse.y (resolve_qualified_expression_name): Added missing
4739         `break'.
4740
4741 Thu Apr 15 13:08:03 1999  Anthony Green  <green@cygnus.com>
4742
4743         * gjavah.c: New prototypes for java_float_finite and
4744         java_double_finite.
4745
4746 Mon Apr 12 18:27:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4747
4748         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
4749         references.
4750
4751 Tue Apr  6 23:15:52 1999  Jeffrey A Law  (law@cygnus.com)
4752
4753         * Makefile.in (TREE_H): Add tree-check.h.
4754         (RTL_H): Add genrtl.h.
4755
4756 Tue Apr  6 15:15:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4757
4758         * parse.y (patch_assignment): Added ArrayStoreException runtime
4759         check.
4760
4761 1999-04-06  Per Bothner  <bothner@cygnus.com>
4762
4763         * expr.c (pop_type_0):  New function.
4764         (pop_type):  Use pop_type_0.
4765         * java-tree.h (pop_type_0):  New declaration.
4766         * verify.c (verify_jvm_instructions):  Check return instructions.
4767
4768         * parse.y (patch_binop):  Don't fold if non-constant and emiting
4769         class files.
4770
4771 Mon Apr  5 16:06:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4772
4773         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
4774
4775         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
4776         (main_jcf): Don't define.
4777         (process_file): Don't set `main_jcf'.
4778
4779         * java-tree.h (main_jcf): Don't declare.
4780
4781         * jcf-parse.c (main_jcf): Add static definition.
4782
4783         * lang.c (main_jcf): Don't define.
4784
4785 Mon Apr  5 15:43:51 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4786
4787         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
4788
4789         * decl.c (copy_lang_decl): Likewise for `bcopy'.
4790
4791         * jcf-depend.c: Include "config.h", not <config.h>.
4792
4793         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
4794         `bcopy' to PTR.
4795
4796         * jcf-path.c: Include "config.h", not <config.h>.
4797
4798         * lex.c: Don't include various system header files.
4799         (java_init_lex): Cast the argument of `bzero' to PTR
4800
4801         * parse-scan.y (java_push_parser_context): Likewise.
4802
4803         * parse.y (java_push_parser_context): Likewise.
4804         (patch_bc_statement): Match format specifier to variable argument.
4805
4806         * xref.c: Don't include <stdio.h>.
4807
4808 Mon Apr  5 11:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4809
4810         * parse.y (struct parser_ctxt *ctxp): Now global.
4811         (declare_local_variables): Use WFL compound value for the
4812         declaration source line value, when doing cross-referencing.
4813
4814 1999-03-31  Tom Tromey  <tromey@cygnus.com>
4815
4816         * gjavah.c (print_field_info): Allow constants of other types.
4817         (print_include): Generate include when new name is proper prefix
4818         of already printed name.
4819         (add_namelet): Likewise.
4820         (cxx_keyword_subst): New function.
4821         (print_method_info): Use it.
4822         (print_field_name): New function.
4823         (get_field_name): New function.
4824         (print_field_info): Use get_field_name and print_field_name.
4825
4826 Wed Mar 31 11:00:32 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4827
4828         * Makefile.in (keyword.h): Generate using gperf language 'C', not
4829         'KR-C', so gperf uses the `const' keyword on strings.
4830
4831         * keyword.gperf (java_keyword): Const-ify a char*.
4832
4833 Tue Mar 30 11:31:53 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4834
4835         * parse.y (patch_bc_statement): Fixed identation and a bogus
4836         `printf' format.
4837
4838 Tue Mar 30 11:29:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4839
4840         * parse.y (patch_assignment): Allow static variables in other
4841         classes to be assigned.
4842
4843 Sun Mar 28 22:12:10 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4844
4845         * class.c (maybe_add_interface): Remove unused variable
4846         `interface_binfo'.
4847         (make_class_data): Use = for assignment, not ==.  Likewise.
4848         (emit_register_classes): Remove unused variable `decl'.
4849
4850         * lex.c: Fix comment so as not to contain an embedded `/*'.
4851
4852         * verify.c (verify_jvm_instructions): Remove unused variable
4853         `self_type'.
4854
4855 Sat Mar 27 15:49:18 1999  Per Bothner  <bothner@cygnus.com>
4856
4857         * parse.y (complete_loop_body):  Rename to finish_loop_body.
4858         (complete_labeled_statement):  Rename to finish_labeled_statement.
4859         (complete_for_loop):  Rename to finish_for_loop.
4860         (complete_method_declaration):  Rename to finish_method_declaration.
4861
4862         * java-tree.h (continue_identifier_node):  New global node.
4863         * decl.c:  Define and initialize continue_identifier_node.
4864         * parse.y (generate_labeled_block):  Remove - no longer needed.
4865         (build_loop_body):  Use continue_identifier_node for continue block.
4866         (finish_labeled_statement):  Also do pop_labeled_block actions.
4867         (java_complete_lhs):  POP_LOOP even if error.
4868         (build_labeled_block):  Special handling for continue_identifier_node.
4869         (patch_loop_statement):  Re-organize.
4870         (patch_bc_statement):  Re-write.
4871
4872 Sat Mar 27 15:13:21 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4873
4874         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
4875         using a WFL compound value.
4876         * parse.y (xref.h): Include.
4877         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
4878         WFL compound value.
4879         (register_fields): Set WFL compound value to lineno if doing
4880         xrefs.
4881         (java_complete_expand_method): Call expand_xref if flag_emit_xref
4882         is set.
4883         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
4884         * xref.h (expand_xref): Prototype renamed from xref_generate.
4885
4886 Sat Mar 27 14:16:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4887
4888         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
4889         (GET_CURRENT_BLOCK): New macro.
4890         * parse.y (current_static_block): New global variable.
4891         (method_body:): Define action.
4892         (complete_method_declaration): Set current_function_decl to NULL
4893         when work on the current method is done.
4894         (declare_local_variables): Use GET_CURRENT_BLOCK.
4895         (java_method_add_stmt): Likewise.
4896         (java_complete_expand_method): Disable the use of `this' when
4897         expanding <clinit>.
4898         (enter_a_block): If no current method exist, use
4899         current_static_block to link static initializer blocks.
4900         (exit_block): Rewritten to use current_static_block when no current
4901         method decl exists.
4902         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
4903         (patch_return): Forbid the use of `return' in static initializers.
4904         (patch_throw_statement): Fixed indentation. Issue specific error
4905         for uncaught thrown checked exception in static initializer
4906         blocks. Removed FIXME.
4907
4908 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
4909
4910         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
4911         Link gcj from gcc.o.
4912
4913 Tue Mar 23 10:48:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4914
4915         * parse.y (find_applicable_accessible_methods_list): When dealing
4916         with interface: ensure that a given interface or java.lang.Object
4917         are searched only once.
4918
4919 Tue Mar 23 10:05:27 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4920
4921         * gjavah.c (print_c_decl): Remove unused argument `flags'.
4922
4923         * jcf-dump.c (print_access_flags): Add braces around if-else.
4924
4925         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
4926         COMBINE_INPUTS.
4927
4928         * lex.c (build_wfl_node): Add static prototype.
4929
4930         * lex.h (build_wfl_node): Remove static prototype.
4931
4932         * parse.y: Include lex.c early enough to declare everything needed.
4933         Ensure calls to `build_wfl_node' pass the proper arguments.
4934         (create_class): Remove unused variable `super_decl'.
4935         (get_printable_method_name): Initialize variable `name'.
4936
4937 Mon Mar 22 20:14:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4938
4939         * Changelog: Fixed 1999-03-22 typos.
4940         * lang.c (lang_decode_option): Fixed typo in error string in the
4941         XARG section.
4942
4943 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4944
4945         * Makefile.in (JAVA_OBJS): Added entry xref.o.
4946         (xref.o): New rule.
4947         * java-tree.h (flag_emit_xref): Declared extern.
4948         * lang.c (xref.h): Included.
4949         (flag_emit_xref): New global variable.
4950         (lang_decode_option): Added support for -fxref.
4951         * xref.c: Created.
4952         * xref.h: Likewise.
4953
4954 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
4955
4956         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
4957         linked with.
4958
4959 Sun Mar 21 08:30:30 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4960
4961         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
4962         $(srcdir)/../system.h and $(JAVA_TREE_H).
4963         (jcf-io.o): Depend on $(JAVA_TREE_H).
4964         (mangle.o): Likewise.
4965
4966         * check-init.c (check_cond_init): Add static prototype.
4967
4968         * class.c (build_java_method_type, hashUtf8String,
4969         make_field_value, get_dispatch_vector, get_dispatch_table,
4970         append_gpp_mangled_type, mangle_static_field): Likewise.
4971         (strLengthUtf8): Hide unused definition.
4972         (hashUtf8String): Const-ify.
4973         (make_field_value): Un-ANSI-fy.
4974
4975         * constants.c: Move inclusion of jcf.h above java-tree.h.
4976         (set_constant_entry, find_class_or_string_constant,
4977         find_name_and_type_constant, get_tag_node,
4978         build_constant_data_ref): Add static prototype.
4979
4980         * decl.c (push_jvm_slot, builtin_function,
4981         lookup_name_current_level): Likewise.
4982         (builtin_function): Const-ify.
4983
4984         * except.c (expand_start_java_handler, expand_end_java_handler):
4985         Add static prototype.
4986
4987         * expr.c (flush_quick_stack, push_value, pop_value,
4988         java_stack_swap, java_stack_dup, build_java_athrow,
4989         build_java_jsr, build_java_ret, expand_java_multianewarray,
4990         expand_java_arraystore, expand_java_arrayload,
4991         expand_java_array_length, build_java_monitor, expand_java_pushc,
4992         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
4993         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
4994         expand_compare, expand_test, expand_cond, expand_java_goto,
4995         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
4996         expand_java_field_op, java_push_constant_from_pool): Likewise.
4997
4998         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
4999         (build_java_arraynull_check): Mark parameters `node' and `type'
5000         with ATTRIBUTE_UNUSED.
5001         (note_label): Likewise for parameter `current_pc'.
5002         (expand_java_call, expand_java_ret): Hide unused definition.
5003
5004         * java-tree.h (make_class, build_constants_constructor,
5005         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
5006         init_outgoing_cpool, register_class, emit_register_classes,
5007         java_layout_seen_class_methods): Prototype.
5008         (unicode_mangling_length): Const-ify.
5009         (append_gpp_mangled_name, append_gpp_mangled_classtype,
5010         emit_unicode_mangled_name, format_int, format_uint,
5011         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
5012         jcf_print_utf8_replace, open_class): Prototype.
5013
5014         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
5015         <stdio.h>.  Include tree.h/java-tree.h.
5016         (utf8_equal_string usage, process_class): Add static prototype.
5017         (open_class): Don't prototype this here.
5018         (utf8_equal_string): Match arguments to format specifiers.
5019         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
5020         TABLE_SWITCH, disassemble_method): Likewise.
5021
5022         * jcf-io.c: Include tree.h/java-tree.h.
5023         (open_class, find_classfile, jcf_print_utf8,
5024         jcf_print_utf8_replace): Const-ify.
5025
5026         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
5027         parse_class_file): Add static prototype.
5028         (find_in_current_zip): Match definition to existing static
5029         prototype.
5030
5031         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
5032         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
5033         finish_jcf_block, define_jcf_label, get_jcf_label_here,
5034         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
5035         write_chunks, adjust_typed_op, generate_bytecode_conditional,
5036         generate_bytecode_return, perform_relocations, init_jcf_state,
5037         init_jcf_method, release_jcf_state, generate_classfile):
5038         Add static prototype.
5039         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
5040         (make_class_file_name): Const-ify.
5041
5042         * jcf.h (find_classfile): Const-ify.
5043
5044         * jv-scan.c (reset_report): Remove prototype.
5045
5046         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
5047         (error): Rewrite to allow varargs.
5048
5049         * lang.c (lang_f_options): Const-ify.
5050
5051         * lex.c (java_parse_escape_sequence): Add static prototype.
5052         (java_allocate_new_line): Match definition to existing static
5053         prototype.
5054
5055         * mangle.c Include tree.h/java-tree.h.
5056         (unicode_mangling_length, emit_unicode_mangled_name,
5057         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
5058
5059         * parse.h (jdep_code): Remove trailing comma in enumeration.
5060         (java_get_line_col): Move prototype outside of !JC1_LITE test.
5061         (reset_report): Add prototype.
5062
5063         * verify.c (push_pending_label, merge_types): Add static
5064         prototypes.
5065
5066         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
5067
5068 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5069
5070         * parse.y (find_applicable_accessible_methods_list): Extend the
5071         search to superinterfaces when relevant.
5072         (search_applicable_methods_list): New function.
5073
5074 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5075
5076         * class.c (unmangle_classname): Implemented stricter testing
5077         before setting the QUALIFIED_P flag on an identifier.
5078
5079 Tue Mar 16 15:15:41 1999  Per Bothner  <bothner@cygnus.com>
5080
5081         * parse.y (java_complete_lhs):  Call force_evaluation_order
5082         after patch_newarray.
5083         (patch_binop):  Don't call fold if there are side effects.
5084
5085 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5086
5087         * parse.y (java_stabilize_reference): Use save_expr instead of
5088         building a SAVE_EXPR node.
5089         (java_complete_lhs): Patch the resulting string of the `+='
5090         operator (if necessary) and complete the RHS after having built
5091         the cast.
5092
5093 Mon Mar 15 12:18:29 1999  Per Bothner  <bothner@cygnus.com>
5094
5095         * class.c (make_class):  Don't set CLASS_P here (because
5096         this function is also called by build_java_array_type).
5097         (push_class):  Set CLASS_P here instead.
5098         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
5099
5100         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
5101         context.  If the context is class, perfer "super" over "synchronized".
5102         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
5103
5104         * parse.y (create_class):  Don't call parser_check_super here;
5105         it is not robust.  Always wait until later.
5106
5107         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
5108         match what JDK 1.2 does), but don't set ACC_PUBLIC.
5109
5110 Sat Mar 13 18:16:34 1999  Per Bothner  <bothner@cygnus.com>
5111
5112         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
5113         * lex.h (UNGETC):  Change misleading macro.
5114
5115 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5116
5117         * parse.y (java_stabilize_reference): Return NODE when patching a
5118         COMPOUND_EXPR.
5119         (java_complete_lhs): Put parenthesis around truth values.
5120
5121 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5122
5123         * class.c (layout_class_method): Don't make rtl for interface
5124         methods.
5125         * parse.h (GET_TYPE_NAME): New macro.
5126         * parse.y (if_then_statement:): Fixed indentation.
5127         (if_then_else_statement:): Likewise.
5128         (for_statement:): Fixed spacing.
5129         (try_statement:): Fixed indentation.
5130         (create_interface): Don't force interfaces to be abstract.
5131         (method_header): Abstract methods are OK in interfaces.
5132         (declare_local_variables): Fixed typo in comment.
5133         (java_complete_expand_method): Fixed indentation.
5134         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
5135         non accessible fields.
5136         (java_stabilize_reference): New function.
5137         (java_complete_lhs): Fixed indentation. Use
5138         java_stabilize_reference in compound assignement. Insert the
5139         cast. If not processing `+' fix string constants before processing
5140         binop.
5141
5142 Fri Mar 12 19:42:55 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5143
5144         * constants.c (find_class_or_string_constant): Cast variable `j'
5145         to a `jword' when comparing against one.
5146
5147         * expr.c (java_lang_expand_expr): Remove unused variables
5148         `has_finally_p' and `op0'.
5149
5150         * gjavah.c (print_field_info): Cast a value to jint when comparing
5151         against one.  Likewise for a jlong.
5152         (add_namelet): Likewise cast a `sizeof' to an int when comparing
5153         against a signed quantity.
5154
5155         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
5156         (print_signature): Don't needlessly dereference variable `str'
5157
5158         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
5159         `max_locals' with ATTRIBUTE_UNUSED.
5160         (jcf_parse_class): Likewise for variable `index'.
5161
5162         * parse.h (reverse_jdep_list): Remove static prototype.
5163
5164         * parse.y (build_jump_to_finally): Remove prototype and definition.
5165         (reverse_jdep_list): Add static prototype.
5166
5167         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
5168         `assignment' and `expr_decl'.
5169
5170         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
5171
5172 1999-03-12  Andrew Haley  <aph@cygnus.com>
5173
5174         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
5175         we'll need a directory separator and a null character.
5176
5177 Wed Mar 10 23:20:11 1999  Per Bothner  <bothner@cygnus.com>
5178
5179         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
5180
5181   Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5182
5183         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
5184         interfaces.
5185
5186 Fri Mar  5 15:17:29 1999  Per Bothner  <bothner@cygnus.com>
5187
5188         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
5189
5190         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
5191
5192         * class.c (layout_class_method):  A static method in a base class
5193         is never overridden, so treat it like it doesn't exist.
5194         However, do complain about private non-static method overriding
5195         public static method.
5196
5197         * parse.y:  Don't set unused INITIALIZED_P flag.
5198         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
5199
5200         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
5201         (build_array_from_name):  Re-order &index[string] to &string[index].
5202
5203         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
5204         error_mark (it might catch more errors, but it is more likely to lose).
5205
5206 Sat Mar  6 11:17:16 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5207
5208         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
5209         (parse-scan.o): Depend on toplev.h.
5210
5211         * class.c (make_method_value): Add prototype.  Make it static.
5212         Remove unused second argument, caller changed.
5213
5214         * expr.c (java_lang_expand_expr): Remove unused variable
5215         `return_label'.
5216
5217         * java-tree.h: Don't prototype find_in_current_zip.
5218         Add prototypes for verify_constant_pool, start_java_method,
5219         end_java_method, give_name_to_locals, expand_byte_code,
5220         open_in_zip, set_constant_value, find_constant1, find_constant2,
5221         find_utf8_constant, find_string_constant, find_class_constant,
5222         find_fieldref_index, find_methodref_index, write_constant_pool,
5223         count_constant_pool_bytes and encode_newarray_type.
5224
5225         * jcf-dump.c: Remove unused variable `LONG_temp'.
5226
5227         * jcf-parse.c: Include parse.h.
5228         (jcf_parse_source): Remove unused parameter, all callers changed.
5229         (jcf_figure_file_type): Add static prototype.
5230         (find_in_current_zip): Likewise.  Also remove unused parameter,
5231         all callers changed.
5232         (read_class): Initialize variable `saved_pos'.
5233
5234         * jcf-reader.c (jcf_parse_preamble): Mark variables
5235         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
5236
5237         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
5238         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
5239         (java_parse_doc_section): Initialize variable `seen_star'.
5240         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
5241         (java_lex_error): Mark parameters `msg' and `forward' with
5242         ATTRIBUTE_UNUSED.
5243         (java_get_line_col): Mark parameters `filename' and `line' with
5244         ATTRIBUTE_UNUSED.
5245
5246         * parse-scan.y: Include toplev.h.
5247         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
5248
5249         * parse.h: use `struct JCF', not plain `JCF'.
5250         (java_parser_context_save_global, java_expand_classes
5251         java_parser_context_restore_global, java_parse): Add prototypes.
5252
5253         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
5254         `node'.
5255
5256 Wed Feb 24 16:13:59 1999  Per Bothner  <bothner@deneb.cygnus.com>
5257
5258         *  check-init.c (check_init):  COPYN takes word count, not bit count.
5259
5260 Fri Feb 26 14:06:21 1999  Per Bothner  <bothner@cygnus.com>
5261
5262         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
5263         explicit build_decl.  (Avoids crash in reload when optimizing.)
5264
5265 Thu Feb 25 21:05:04 1999  Per Bothner  <bothner@cygnus.com>
5266
5267         * decl.c (complete_start_java_method):  Handle synchronized method
5268         even when compiling from bytecode.
5269
5270 1999-02-26  Tom Tromey  <tromey@cygnus.com>
5271
5272         * gjavah.c (add_class_decl): Only generate `#include' if outer
5273         class is not the name of the class we are processing.  Correctly
5274         append `.h' in #include.
5275         (process_file): Clean up newlines around generated `#include's.
5276         (decode_signature_piece): Correctly handle inner classes.
5277         (struct include): New structure.
5278         (all_includes): New global.
5279         (print_include): New function.
5280         (add_class_decl): Use it.
5281         (process_file): Likewise.
5282         (add_class_decl): Generate include for java-array.h if array
5283         seen.
5284         (process_file): Don't generate java-array.h include.
5285
5286         * gjavah.c (add_namelet): Check for standard package names here.
5287         (add_class_decl): Don't check for standard package names here.
5288
5289 1999-02-25  Tom Tromey  <tromey@cygnus.com>
5290
5291         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
5292         When reading a zip file, only use strncmp if both strings are
5293         bigger than the buffer length.  Initialize `k' when looping
5294         through zip file.
5295
5296 1999-02-24  Tom Tromey  <tromey@cygnus.com>
5297
5298         * gjavah.c (struct namelet): New structure.
5299         (add_namelet): New function.
5300         (print_namelet): New function.
5301         (print_class_decls): Use add_namelet and print_namelet to generate
5302         namespaces and not classes.
5303         (method_printed): New global.
5304         (HANDLE_END_METHOD): Examine method_printed.
5305         (print_method_info): Set method_printed when required.  Print
5306         error if function to be ignored is marked virtual.  Handle $finit$
5307         method.
5308         (METHOD_IS_FINAL): New macro.
5309         (print_field_info): Use it.
5310         (HANDLE_METHOD): Clear method_printed.
5311         (method_pass): New global.
5312         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
5313         (process_file): Do two passes over both fields and methods.
5314         (HANDLE_METHOD): Examine method_pass.
5315         (root): New global.
5316         (add_class_decl): New function.
5317         (print_class_decls): Don't scan over entire constant pool.
5318
5319 1999-02-23  Tom Tromey  <tromey@cygnus.com>
5320
5321         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
5322         disable linking in that case.
5323
5324 1999-02-20  Tom Tromey  <tromey@cygnus.com>
5325
5326         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
5327         not 0x1f.
5328
5329 Sun Feb 21 14:56:11 1999  Per Bothner  <bothner@cygnus.com>
5330
5331         * decl.c (build_result_decl), java-tree.h:  New method.
5332         (complete_start_java_method):  Handle synchronized methods.
5333         Don't build DECL_RESULT here.  (Ordering dependency problem.)
5334         (start_java_method):  Call build_result_decl here instead  ...
5335         * parse.y (java_complete_expand_method):  ... and here.
5336         (expand_start_java_method): Don't call complete_start_java_method here.
5337         (java_complete_expand_method):  Call it here instead.
5338         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
5339         * java-tree.h:  ... here.
5340
5341         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
5342         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
5343         for ARRAY_REF - it doesn't work when array bounds are checked.
5344         (patch_array_ref):  Handle it here instead.
5345
5346         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
5347
5348 Fri Feb 19 15:35:01 1999  Per Bothner  <bothner@cygnus.com>
5349
5350         Force left-to-right evaluation of binary operations etc.
5351         * expr.c (force_evaluation_order), java-tree.h:  New function.
5352         * parse.y (java_complete_lhs):  Pass binary operations, procedure
5353         calls, and ARRAY_REFs to force_evaluation_order.
5354         (various):  Set TREE_SIDE_EFFECTS more carefully.
5355
5356         Tolerate random (non-UTF8) encoding in comments without complaining.
5357         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
5358         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
5359
5360         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
5361         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
5362
5363         * parse.y (java_complete_lhs):  Ignore an empty statement in a
5364         COMPOUND_EXPR.  Don't complain about empty statement after return.
5365
5366 Fri Feb 19 13:00:56 1999  Per Bothner  <bothner@cygnus.com>
5367
5368         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
5369         in TREE_LIST - just chain the POINTER_TYPEs together.
5370         (resolve_class):  If type already resolved, return decl.
5371         After resolving, update TREE_TYPE(class_type), and name (if array).
5372         * parse.h (do_resolve_class), parse.y:  Make non-static.
5373         * class.c (maybe_layout_super_class):  Take this_class argument.
5374         Do do_resolve_class if necessary.
5375         (layout_class, layout_class_methods): Adjust calls appropriately.
5376         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
5377         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
5378         * typeck.c (build_java_array_type):  Don't call layout_class.
5379
5380 Wed Feb 17 15:47:20 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5381
5382         * parse.y (check_pkg_class_access): Allow private class access
5383         within the same package.
5384         (strip_out_static_field_access_decl): New function.
5385         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
5386         operator argument before testing its nature.
5387
5388 Wed Feb  3 12:38:43 1999  Per Bothner  <bothner@cygnus.com>
5389
5390         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
5391         (TRY_EXPR):  Simplify - it no longer has a finally clause.
5392         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
5393         Simpler handling of TRY_EXPR, which no longer has a finally clause.
5394         * expr.c (java_lang_expand_expr):  Likewise.
5395         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
5396         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
5397         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
5398         (build_try_statement):  Remove finally parameter and handling.
5399         (build_try_finally_statement):  New function.
5400         (patch_try_statement):   No longer need to support finally clause.
5401         (try_statement):  Update grammar action rules.
5402         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
5403         Simpler handling of TRY_EXPR, which no longer has a finally clause.
5404
5405 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
5406
5407         * jcf-parse.c (get_constant): Add braces around computation of 'd'
5408         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
5409
5410 1999-02-17  Andrew Haley  <aph@cygnus.com>
5411
5412         * class.c (build_utf8_ref): Back out broken patch which was
5413         intended to to output signatures using '.' as a separator.
5414
5415         * class.c (make_class_data): Output signatures using '.' as a
5416         separator, rather than '/'.
5417         (mangled_classname): Likewise.
5418         (make_field_value): Likewise.
5419         (make_method_value): Likewise.
5420         * constants.c (alloc_class_constant): Likewise.
5421         * expr.c (build_invokeinterface): Likewise.
5422
5423 Thu Feb 11 21:25:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5424
5425         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
5426         of an ancient workaround.
5427
5428 Wed Feb 10 23:27:33 1999  Jeffrey A Law  (law@cygnus.com)
5429
5430         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
5431         here anymore.
5432
5433 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5434
5435         * lex.c (yylex): Encode \0 as UTF8.
5436
5437 1999-02-10  Tom Tromey  <tromey@cygnus.com>
5438
5439         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
5440         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
5441         (libgcj_zip): Renamed.
5442         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
5443         LIBJAVA_ZIP_FILE.
5444         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
5445
5446         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
5447         (GC_NAME): Renamed -lgc to -lgcjgc.
5448
5449 Tue Feb  9 19:31:09 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5450
5451         * lex.c (java_lang_cloneable): Initialize.
5452         * parse.y (java_lang_cloneable): New static variable.
5453         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
5454         doing one more qualification round.
5455         (valid_ref_assignconv_cast_p): Reject null source or
5456         destination. Allow an array to be cast into java.lang.Cloneable.
5457         (patch_cast): Swapped two first arguments to first call to
5458         valid_ref_assignconv_cast_p.
5459
5460 Mon Feb  8 11:50:50 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5461
5462         * parse.h: DECL_P renamed JDECL_P.
5463         * parse.y: DECL_P replaced by JDECL_P.
5464         (build_array_from_name): Always use pointer's type.
5465         (patch_bc_statement): Extra code to search continue target in a
5466         for loop. Fixed comments. Continue target is current loop when
5467         unlabeled.
5468
5469 1999-02-05  Andrew Haley  <aph@cygnus.com>
5470
5471         * class.c (make_class_data): The superclass of an interface should
5472         be null, not class Object.
5473
5474         * lex.c (java_lex): Sign extend hex literals.
5475
5476 1999-02-04  Andrew Haley  <aph@cygnus.com>
5477
5478         * class.c (build_utf8_ref): Output signatures using '.' as a
5479         separator, rather than '/'.
5480         (make_class_data): Likewise.
5481
5482 Wed Feb  3 22:50:17 1999  Marc Espie <Marc.Espie@liafa.jussieu.fr>
5483
5484         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
5485         mkstemp.o.  Get them from libiberty now.
5486
5487 Tue Feb  2 19:49:12 1999  Jeffrey A Law  (law@cygnus.com)
5488
5489         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
5490
5491 Tue Feb  2 20:04:50 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5492
5493         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
5494         from libiberty.h
5495
5496 Tue Feb  2 10:39:47 1999  Per Bothner  <bothner@cygnus.com>
5497
5498         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
5499         * jcf-write.c (generate_bytecode_return):  New function.
5500         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
5501
5502         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
5503         generate special [fd]const_[01] instructions.
5504
5505         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
5506
5507         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
5508         handling OPCODE_lookupswitch or OPCODE_tableswitch.
5509
5510 Mon Feb  1 20:44:47 1999  Per Bothner  <bothner@cygnus.com>
5511
5512         * parse.y (patch_method_invocation):  Handle calling static methods,
5513         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
5514
5515         * parse.y (java_complete_lhs):  Don't complain about unreachable
5516         exit condition in a do-while statement.
5517
5518 Fri Jan 29 18:19:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5519
5520         * lex.c (java_read_char): Fixed utf8 decoding.
5521         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
5522         range.
5523         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
5524         comments. Local variable `all_primitive' is gone. Broadened
5525         acceptance of `0' to floating point targets. `long' can now be
5526         widened to `double' or `float'.
5527         (valid_method_invocation_conversion_p): Added leading
5528         comment. Fixed tabulation.
5529         (build_string_concatenation): Optimize out left or right empty
5530         string constants.
5531
5532 Thu Jan 28 18:51:26 1999  Per Bothner  <bothner@cygnus.com>
5533
5534         * jcf-write.c (localvar_alloc):  Only emit entry for
5535         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
5536         (generate_bytecode_insns):  Only call put_linenumber if
5537         debug_info_level > DINFO_LEVEL_NONE.
5538         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
5539         is specified, add -g1 (for compatibility wih javac).
5540
5541 Thu Jan 28 09:17:51 1999  Hans-Peter Nilsson  <hp@axis.se>
5542
5543         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
5544         gjavah.o, check-init.o, jv-scan.o
5545
5546 Mon Feb  1 09:50:48 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5547
5548         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
5549
5550         * gjavah.c: Include config.h and system.h.
5551
5552         * javaop.h (inline): Don't define, its handled by system.h.
5553         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
5554         from `inline' to `static inline'.
5555
5556         * jcf.h (inline): Don't define, its handled by system.h.
5557
5558         * lex.c (inline): Likewise.
5559
5560 Sun Jan 31 20:34:29 1999  Zack Weinberg  <zack@rabi.columbia.edu>
5561
5562         * lang-specs.h: Map -Qn to -fno-ident.
5563
5564 Fri Jan 29 16:51:56 1999  Richard Henderson  <rth@cygnus.com>
5565
5566         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
5567
5568 1999-01-29  Tom Tromey  <tromey@cygnus.com>
5569
5570         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
5571         then cast it to Object before calling `append' method.
5572
5573 Thu Jan 28 14:45:39 1999  Per Bothner  <bothner@cygnus.com>
5574
5575         * check-init.c (check_bool2_init, check_bool_init, check_init):
5576         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
5577         * jcf-write.c (generate_bytecode_insns):  Likewise.
5578
5579 Thu Jan 28 11:50:11 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5580
5581         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
5582         * parse.y (patch_cast): Allow a boolean to be cast into a
5583         boolean.
5584
5585 Wed Jan 27 10:19:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5586
5587         * parse.y: (class_declaration:): Fixed indentation.
5588         (class_member_declaration:): Extra `;' after field declaration now
5589         accepted.
5590         (interface_declaration:): Removed debug messages in error reports.
5591         (patch_binop): Nodes created and returned inherit the orignal
5592         node's COMPOUND_ASSIGN_P flag value.
5593         (patch_cast): Fix cast from char to floating point.
5594
5595 Mon Jan 25 17:39:19 1999  Andrew Haley  <aph@cygnus.com>
5596
5597         * except.c, java-except.h (expand_resume_after_catch): new
5598         function.
5599         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
5600         to branch back to main flow of control after a catch block.
5601
5602 Sat Jan 23 23:02:43 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5603
5604         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
5605         $(srcdir)/../system.h.
5606         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
5607         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
5608         (jcf-write.o): Likewise.
5609         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
5610         (mangle.o): Depend on $(srcdir)/../toplev.h.
5611         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
5612         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
5613
5614         * class.c: Include output.h and parse.h.
5615         (mangled_classname): Add the `const' keyword to a char*.
5616         (find_named_method): Hide unused function definition.
5617         (build_utf8_ref): Change type of variable `c' to unsigned char.
5618         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
5619         (build_class_ref): Add the `const' keyword to a char*.
5620         (layout_class_method): Remove unused variable `buf'.
5621
5622         * decl.c (find_local_variable): Remove unused variable `rtl'.
5623         (pushdecl): Likewise for variables `different_binding_level' and
5624         `oldglobal'.
5625         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
5626         (maybe_build_cleanup): Likewise for parameter `decl'.
5627
5628         * except.c (expand_start_java_handler): Mark parameter `range'
5629         with ATTRIBUTE_UNUSED.
5630
5631         * expr.c: Include except.h.
5632         (pop_type): Remove unused variable `i'.
5633         (pop_value): Likewise for variables `n_words' and `i'.
5634         (expand_java_arrayload): Likewise for variable `convert'.
5635         (java_lang_expand_expr): Likewise for variables `op0', `type',
5636         `mode', `unsignedp', `node' and `elements'.
5637         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
5638         `eh_ranges'.
5639         (process_jvm_instruction): Add a `const' qualifier to a char*.
5640
5641         * gjavah.c (output_directory): Add the `const' keyword to a char*.
5642         (temp_directory): Likewise.
5643         (print_c_decl): Likewise.
5644         (print_method_info): Likewise.
5645         (decode_signature_piece): Likewise.
5646         (print_mangled_classname): Likewise.
5647
5648         * java-except.h: Provide prototypes for maybe_start_try,
5649         maybe_end_try and add_handler.
5650
5651         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
5652         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
5653         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
5654         init_expr_processing, push_super_field, init_class_processing,
5655         can_widen_reference_to, class_depth, verify_jvm_instructions,
5656         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
5657         set_local_type, merge_type_state, push_type, load_type_state,
5658         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
5659         emit_unicode_mangled_name): Add prototypes.
5660
5661         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
5662         (print_signature_type): Use ISDIGIT, not isdigit.
5663         (print_signature): Remove unused variable `j'.
5664
5665         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
5666         int when comparing against one.
5667
5668         * jcf-parse.c: Include toplev.h.
5669
5670         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
5671         (localvar_free): Remove unused variable `i'.
5672         (generate_bytecode_conditional): Likewise for variable `kind'.
5673
5674         * jv-scan.c: Include config.h and system.h.  Remove redundant
5675         OS header and gansidecl.h includes.
5676         (warning): Add the `const' keyword to a char*.  Also add
5677         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
5678         __STDC__, when determining whether to use ANSI-isms.
5679         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
5680         (xmalloc): Don't redundantly prototype here.
5681         (main): Remove unused parameter `envp'.  Also fix the arguments
5682         passed to function `fatal' to match the format specifier.
5683
5684         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
5685
5686         * mangle.c: Include toplev.h.
5687         (emit_unicode_mangled_name): Declare parameter `len'.
5688
5689         * parse.y (parse_warning_context): Add the `const' keyword to a
5690         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
5691         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
5692         (issue_warning_error_from_context): Add the `const' keyword to
5693         a char*.
5694         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
5695         not `__STDC__' for whether to use ANSI-isms.
5696
5697         * typeck.c (incomplete_type_error): Mark parameters `value' and
5698         `type' with ATTRIBUTE_UNUSED.
5699         (parse_signature_type): Use ISDIGIT, not isdigit.
5700
5701         * verify.c (check_pending_block): Add the `const' keyword to a char*.
5702         (verify_jvm_instructions): Likewise.  Remove unused variables
5703         `field_name' and `default_val'.
5704
5705         * zextract.c: Include config.h and system.h.  Remove redundant
5706         OS header includes.
5707
5708         * zipfile.h: Prototype `read_zip_archive'.
5709
5710 Thu Jan 21 16:00:06 1999  Andrew Haley  <aph@cygnus.com>
5711
5712         * typeck.c (convert): Allow conversions to void type: some
5713         optimizations in gcc do this.
5714
5715 Thu Jan 21 15:21:49 1999  Andrew Haley  <aph@cygnus.com>
5716
5717         * typeck.c (convert_ieee_real_to_integer): New function.
5718         (convert): When not using fast-math and using hardware fp, convert
5719         an IEEE NaN to zero.
5720
5721 1999-01-18  Andrew Haley  <aph@cygnus.com>
5722
5723         * parse.y (patch_binop): Do a type conversion from signed to
5724         unsigned and then back to signed when a ">>>" is found.
5725
5726 Sun Jan 17 22:34:22 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5727
5728         * java-tree.h: (check_for_initialization): Added prototype.
5729         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
5730         * parse.y (do_resolve_class): Removed unused locals.
5731         (read_import_dir): Likewise.
5732         (resolve_qualified_expression_name): Array creation
5733         expressions are valid primary expressions.
5734         (qualify_ambiguous_name): Likewise.
5735         (patch_synchronized_statement): Removed unused local.
5736
5737 Sun Jan 17 21:55:42 1999  Jeffrey A Law  (law@cygnus.com)
5738
5739         * Makefile.in (zextract.o): Add dependencies.
5740
5741         * Makefile.in: Do not put ^Ls at the start of a line.
5742
5743 Fri Jan 15 20:16:20 1999  Per Bothner  <bothner@cygnus.com>
5744
5745         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
5746         sub-type the result of the call that gets the exception value.
5747
5748         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
5749         don't call finish_class.
5750
5751         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
5752         clear found before continuing.
5753
5754         * verify.c (verify_jvm_instructions):  On an array load, allow
5755         and handle top of stack to be TYPE_NULL.
5756
5757         * gjavah.c (generate_access):  Translate Java package private or
5758         protected access to C++ public, but with a comment.
5759
5760 1999-01-13  Andrew Haley  <aph@cygnus.com>
5761
5762         * expr.c (generate_name): Name prefix changed to avoid clashes
5763         with assembler temp labels.
5764
5765         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
5766         MODIFY_EXPR.  Without this, code for the assignement may not be
5767         generated at all and the synchronized statement will read an
5768         uninitialized variable.
5769
5770 Wed Jan 13 01:24:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5771
5772         * class.c (maybe_layout_super_class): Fixed returned value.
5773         * lex.c: Added 1999 to the copyright.
5774         (java_init_lex): Initialize java_lang_imported.
5775         * lex.h: Added 1999 to the copyright.
5776         * parse.h: Added 1999 to the copyright.
5777         (REGISTER_IMPORT): Fixed typo in trailing macro.
5778         (CURRENT_OSB): New macro.
5779         (struct parser_ctxt): New fields osb_depth, osb_limit.
5780         * parse.y (java_lang_id): New global variable.
5781         (type_import_on_demand_declaration): Don't import java.lang.* twice.
5782         (array_creation_expression:): Use CURRENT_OSB.
5783         (dims:): Uses a stack to keep track of array dimensions.
5784         (cast_expression:): Use CURRENT_OSB.
5785         (find_expr_with_wfl): Return NULL if node found doesn't meet the
5786         conditions.
5787         (register_fields): Fixed typos in comment.
5788         (check_method_redefinition): Fixed comment indentation.
5789         (java_check_regular_methods): Set saved found wfl to NULL after
5790         having reinstalled it in the previously found DECL_NAME.
5791
5792 Sun Jan 10 13:36:14 1999  Richard Henderson  <rth@cygnus.com>
5793
5794         * gjavah.c (java_float_finite): Use a union to do type punning.
5795         (java_double_finite): Likewise.
5796
5797 Sat Jan  9 11:25:00 1999  Per Bothner  <bothner@cygnus.com>
5798
5799         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
5800         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
5801         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
5802         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
5803         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
5804         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
5805
5806 Fri Jan  8 15:48:03 1999  Per Bothner  <bothner@cygnus.com>
5807
5808         * check-init.c (check_init):  If compiling to native, we don't
5809         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
5810
5811 1999-01-08  Tom Tromey  <tromey@cygnus.com>
5812
5813         * parse-scan.y (variable_declarator_id): Set or increment
5814         bracket_count.
5815         (bracket_count): New global.
5816         (formal_parameter): Handle case where bracket pairs trail variable
5817         declarator id.
5818
5819 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
5820
5821         * jcf-parse.c (yyparse): variable len changed from a char to an
5822         int to prevent overflow.
5823
5824 Wed Jan  6 17:19:46 1999  Per Bothner  <bothner@cygnus.com>
5825
5826         * java-tree.h:  Declare read_class.
5827         * jcf-parse.c (read_class):  New function.
5828         (load_class):  Now just call read_class.
5829
5830         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
5831         * jcf-parse.c (parse_source_file):  Declare save_error_count,
5832         which is needed by java_parse_abort_on_error macro,
5833         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
5834
5835         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
5836         constructor, if initializing a static field.
5837         (patch_new_array_init):  Set TREE_CONSTANT if it is.
5838         * expr.c (java_lang_expand_expr):  For a static array constructor
5839         of primitive elements, allocate the array itself statically.
5840         Disabled until we can set the vtable field statically.
5841
5842         * check-init.c:  New file.  Checks for definite assignment.
5843         * Makefile.in (JAVA_OBJS):  Add check-init.o.
5844         * parse.y (java_complete_expand_method): Call check_for_initialization.
5845         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
5846
5847 Wed Jan  6 14:53:10 1999  Graham <grahams@rcp.co.uk>
5848
5849         * parse.y : include system.h instead of including
5850         standard headers directly with the exception of <dirent.h>.
5851
5852 Wed Jan  6 16:20:06 1999  Per Bothner  <bothner@cygnus.com>
5853
5854         * lex.h:  Moved static function declarations to lex.c,
5855         to shut up some -Wall warnings.
5856         * lex.c:  Static function declarations moved here.
5857         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
5858
5859 Tue Jan  5 22:15:40 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5860
5861         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
5862
5863 Tue Dec 22 11:25:19 1998  Per Bothner  <bothner@cygnus.com>
5864
5865         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
5866         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
5867
5868         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
5869         (localvar_alloc):  Change return type to void,
5870         (emit_unop):  Remove unused variable size.
5871
5872         * jcf-write.c (struct jcf_block):  Add new union.
5873         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
5874         (call_cleanups):  New functions.
5875         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
5876         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
5877         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
5878         * lang.c (lang_init):  Call using_eh_for_cleanups.
5879         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
5880         completing operands to patch_synchronized_statement.
5881         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
5882         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
5883         WITH_CLEANUP_EXPR instead of TRY_EXPR.
5884
5885 Sun Dec 20 16:15:44 1998  John F. Carr  <jfc@mit.edu>
5886
5887         * Make-lang.in: Comment out control-Ls; they upset some makes.
5888
5889 1998-12-18  Tom Tromey  <tromey@cygnus.com>
5890
5891         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
5892         consistently.
5893
5894 1998-12-17  Tom Tromey  <tromey@cygnus.com>
5895
5896         * parse.y (DIR_SEPARATOR): New define.
5897         (check_class_interface_creation): Use it.
5898
5899         * parse-scan.y (report_main_declaration): Recognize
5900         `java.lang.String' in argument to main.
5901
5902 Wed Dec 16 16:18:59 1998  Per Bothner  <bothner@cygnus.com>
5903
5904         * parse.y (create_interface):  Remove bogus test.
5905
5906 Wed Dec 16 14:42:19 1998  Per Bothner  <bothner@cygnus.com>
5907
5908         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
5909         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
5910
5911 1998-12-16  Tom Tromey  <tromey@cygnus.com>
5912
5913         * parse-scan.y (qualified_name): Use correct sprintf format.
5914
5915 1998-12-15  Tom Tromey  <tromey@cygnus.com>
5916
5917         * gjavah.c (print_field_info): Changed how most negative number is
5918         printed.
5919
5920 Mon Dec 14 18:49:29 1998  Per Bothner  <bothner@cygnus.com>
5921
5922         * parse.y (fold_constant_for_init):  New function.
5923         (resolve_expression_name):  Don't replace static final
5924         constant-initialized fields by its value.
5925         (java_complete_lhs):  New.  Same as java_complete_tree, except does
5926         not replace static final constant-initialized fields by their values.
5927         (register_fields):  If there is an initializer, set DECL_INITIAL and
5928         MODIFY_EXPR_FROM_INITIALIZATION_P.
5929         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
5930         Only call patch_initialized_static_field if
5931         MODIFY_EXPR_FROM_INITIALIZATION_P.
5932         (patch_initialized_static_field):  If not valid constant, clear
5933         DECL_INITIAL.
5934
5935         * parse.y (lookup_field_wrapper):  Fix thinko.
5936
5937         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
5938         set and restore global lineno.
5939
5940 1998-12-14  Tom Tromey  <tromey@cygnus.com>
5941
5942         * gjavah.c (print_field_info): If value to print is the smallest
5943         value of its size, then print as hex to avoid later warnings from
5944         C++ compiler.
5945
5946 1998-12-14  Tom Tromey  <tromey@cygnus.com>
5947
5948         * gjavah.c (decompile_method): Decompile `return null'.
5949         (process_file): Generate `#pragma interface'.
5950         (method_declared): New global.
5951         (print_method_info): Set it.
5952         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
5953         (print_method_info): Handle abstract methods.
5954
5955 Sun Dec 13 17:31:40 1998  Per Bothner  <bothner@cygnus.com>
5956
5957         * parse.y (patch_method_invocation):  If class_decl is null
5958         (e.g. an array type), use original type.
5959
5960         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
5961         errors about uncaught exception from clone (of array, specifically).
5962
5963 1998-12-13  Tom Tromey  <tromey@cygnus.com>
5964
5965         * gjavah.c (decompile_method): Handle all types of `return'
5966         opcode.  Decompile `return this' and `return'.
5967         (method_access): New global.
5968         (print_method_info): Set it.
5969         (decompile_method): Don't decompile a synchronized method.
5970
5971 1998-12-13  Tom Tromey  <tromey@cygnus.com>
5972
5973         * jcf-reader.c (jcf_parse_one_method): Recognize
5974         HANDLE_END_METHOD.
5975         * gjavah.c (HANDLE_END_METHOD): New macro.
5976         (HANDLE_CODE_ATTRIBUTE): New macro.
5977         (decompile_method): New function.
5978         (print_method_info): Don't print `;\n' at end of function decl.
5979         Include java-opcodes.h.
5980         (decompiled): New global.
5981
5982 Sat Dec 12 20:13:19 1998  Per Bothner  <bothner@cygnus.com>
5983
5984         * class.c (build_class_ref):  Handle PRIMTYPE.class if
5985         flag_emit_class_files.
5986         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
5987         if flag_emit_class_files.
5988         * parse.y (java_complete_tree):  Pre-liminary support for
5989         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
5990
5991         * parse.y (patch_synchronized_statement):   Don't call monitorexit
5992         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
5993
5994         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
5995
5996         * zipfile.h (opendir_in_zip):  New declaration.
5997         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
5998         (opendir_in_zip):  New function, using code from open_in_zip.
5999         (open_in_zip):  Call opendir_in_zip.
6000         (find_class):  Remove no-longer-used do_class_file parameter,
6001         but add source_ok parameter.  Change logic so if we find a .java file,
6002         we don't look for .class in later classpath emtries.
6003         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
6004         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
6005         * gjavah.c: Update call to find_class.
6006         * jcf-dump.c:  Likewise.
6007
6008         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
6009         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
6010         nothing if body is empty_stmt_node.
6011         Various little fixes so SP gets correctly adjusted.
6012         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
6013         For CALL_EXPR, test if static first.
6014         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
6015         such as the ones we create for Object and Class.
6016         Set and restore current_function_decl.
6017         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
6018         (note_possible_classname):  New function.
6019         (read_import_entry):  Removed.  Merged with read_import_dir.
6020         (read_import_dir):  Don't call find_class - that only gives us
6021         the first classpath entry having the needed package.
6022         Use the struct buffer data structure from buffer.h.
6023         (read_import_dir, find_in_imports_on_demand):  The remembered
6024         class names now use '.' (not '/') as package separator.
6025
6026         * parse.y (java_complete_expand_methods):  Call write_classfile
6027         here, and not in java_expand_classes (which only gets first class).
6028
6029 Sat Dec 12 19:46:04 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6030
6031         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
6032         (register_fields):  If a static fields has an initializer, just
6033         chain it on ctxp->static_initialized, and handle later.
6034         (java_complete_expand_methods):  Force <clinit> first.
6035         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
6036         - it's already been completed.
6037         (patch_initialized_static_field):  New function.
6038         (java_complete_field):  Call it.
6039
6040 Sat Dec 12 19:21:11 1998  Per Bothner  <bothner@cygnus.com>
6041
6042         * expr.c (encode_newarray_type, build_new_array):  New functions.
6043         * java-tree.h:  Declare build_new_array.
6044         * jcf-write.c (patch_newarray):  Use build_new_array.
6045
6046         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
6047         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
6048
6049         * parse.y (patch_new_array_init):  Re-organize.
6050         Now is passed the actual array (pointer) type of the value.
6051         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
6052         (patch_array_constructor):  Removed - merged into patch_new_array_init.
6053         (java_complete_tree):  Update patch_new_array_init.
6054
6055         * jcf-write.c (find_constant_index):  New function.
6056         (generate_bytecode_insns):  Use find_constant_index.
6057         (generate_classfile):  Use find_constant_index for ConstantValue.
6058
6059 1998-12-11  Tom Tromey  <tromey@cygnus.com>
6060
6061         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
6062         * decl.c (init_decl_processing): Renamed dtable -> vtable.
6063         * class.c (make_class_data): Renamed dtable -> vtable, and
6064         dtable_method_count -> vtable_method_count.
6065
6066 Thu Dec 10 20:00:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6067
6068         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
6069         global variables, initialized.
6070         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
6071         Declared new global variables.
6072         * lex.c (java_lex): Return long_zero_node, float_zero_node,
6073         double_zero_node, integer_zero_node upon direct matching.
6074         * parse.y (purify_type_name): Added function prototype.
6075         (duplicate_declaration_error_p): Consider new_type as potentially
6076         being a incomplete type. Use purify_type_name on type string.
6077         (method_header): saved_type: unused variable removed. Don't figure
6078         return type if method name is invalid.
6079         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
6080         processed by patch_unaryop.
6081         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
6082         increment/decrement node into its original type after binary
6083         numeric promotion on its operands.
6084
6085 Thu Dec 10 11:02:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6086
6087         * parse.y (array_initializer:): Array init operand is NULL_TREE
6088         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
6089         now an error. Fixed indentation problems.
6090         (patch_string): Handle error_mark_node as an argument.
6091         (patch_new_array_init): Fixed indentation problems.
6092         (array_constructor_check_entry): Removed check on null wfl_value.
6093         Return an error if wfl_value's walk returns an error.
6094
6095 Wed Dec  9 15:37:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6096
6097         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
6098         * lex.c (java_lex): Remember column position before advancing one
6099         token. Retain location information on OCB_TK.
6100         * lex.h (typedef struct java_lc): Added new field.
6101         * parse.h (GET_SKIP_TYPE): New macro.
6102         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
6103         * parse.y (build_new_array_init, patch_new_array_init,
6104         patch_array_constructor, maybe_build_array_element_wfl,
6105         array_constructor_check_entry): New function prototypes.
6106         (switch_block:): Tagged <node>.
6107         (OCB_TK): Tagged <operator>.
6108         (array_initializer:): Installed actions.
6109         (variable_initializer): Build location information on element if
6110         necessary.
6111         (switch_statement:): Fixed indentation typo.
6112         (switch_block:): Redefined default action.
6113         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
6114         (patch_assignment): Removed duplicate code.
6115         (maybe_build_array_element_wfl, build_new_array_init,
6116         patch_new_array_init, patch_array_constructor,
6117         array_constructor_check_entry): New functions.
6118
6119 Mon Dec  7 15:13:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6120
6121         * parse.y (array_initializer): Tagged <node>.
6122         (variable_initializer:): Use default rule.
6123         (array_initializer:): Defined actions.
6124         (variable_initializers:): Likewise.
6125         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
6126         non-static field accesses.
6127         (patch_invoke): Fixed indentation typo.
6128         (java_complete_tree): Likewise.
6129         (build_labeled_block): Changed leading comment. Generate an error
6130         in case of duplicate loop labels.
6131         (patch_conditional_expr): Patch results of string concatenation
6132         operations.
6133
6134 Sun Dec  6 13:45:00 1998  Per Bothner  <bothner@cygnus.com>
6135
6136         * constants.c (find_methodref_index):  When the class is an interface,
6137         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
6138
6139         * decl.c (finit_identifier_node):  Use "$finit$", rather than
6140         "<finit>" (which Sun's verifier rejects).
6141         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
6142         (generate_field_initialization_code):  Removed.
6143         (fix_constructors)  Don't add call to $finit$ here (wrong order).
6144         (patch_method_invocation):  Add $finit$ call here.
6145
6146         * java-tree.h (CALL_USING_SUPER):  New macro.
6147         * parse.y (patch_invoke):  Remove im local variable.
6148         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
6149         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
6150         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
6151
6152         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
6153
6154         * parse.y (java_complete_tree):  Don't complain about unreachable
6155         statement if it is empty_stmt_node.
6156
6157         * jcf-write.c (find_constant_wide):  New function.
6158         (push_long_const):  Use find_constant_wide.
6159
6160         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
6161         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
6162         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
6163         Emit invokeinterface when calling an interface method.
6164         Emit invokespecial also when calling super or private methods.
6165
6166         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
6167
6168 Sun Dec  6 13:21:18 1998  Per Bothner  <bothner@cygnus.com>
6169
6170         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
6171
6172 Thu Dec  3 17:11:12 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6173
6174         * java-tree.h (java_layout_seen_class_methods): New function
6175         prototype.
6176         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
6177         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
6178         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
6179         * parse.y (method_declarator:): Defined action.
6180         (issue_warning_error_from_context): input_filename saved, set to
6181         the appropriate value and restored after java_error is called.
6182         (build_unresolved_array_type): Fixed comment.
6183         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
6184         (method_header): Deal with return type the same way type are
6185         handled for fields and method's parameters and local variables
6186         types are handled.
6187         (check_method_redefinition): Removed extra CR.
6188         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
6189         (java_layout_seen_class_methods): New function.
6190         (java_layout_classes): Call java_layout_seen_class_methods.
6191
6192 Thu Dec  3 15:56:50 1998  Per Bothner  <bothner@cygnus.com>
6193
6194         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
6195
6196 Thu Dec  3 15:08:30 1998  Per Bothner  <bothner@cygnus.com>
6197
6198         * jcf-dump.c (main):  Fix error message.
6199         * jcf-path.c (add_entry):  Style fix.
6200
6201 Wed Dec  2 15:52:25 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6202
6203         * class.c (layout_class_method): Call build_java_argument_signature
6204         on constructors too.
6205         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
6206         (patch_method_invocation): Define a primary when resolving an
6207         expression name. Augmented comment on code checking illegal `this'
6208         usage. Loosened it test by accepting NEW_CLASS_EXPR.
6209
6210 Tue Dec  1 13:53:24 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6211
6212         * class.c (layout_class_method): Don't report error on non-static
6213         overriding static if the method is private.
6214         * java-tree.h (finish_class): Prototype added.
6215         * lex.c (java_get_line_col): Handle col argument -2 value.
6216         * parse.h: All static method declarations moved to parse.y.
6217         * parse.y: Now contains all static method declarations previously
6218         found in parse.h.
6219         (find_expr_with_wfl, missing_return_error,
6220         unreachable_stmt_error): New functions.
6221         (java_get_real_method_name): Identify constructors bearing class
6222         names in source code compiled classes only.
6223         (java_complete_expand_methods): Call missing_return_error.
6224         (invocation_mode): Private methods invoked as static methods.
6225         (java_complete_tree): Call unreachable_stmt_error.
6226
6227 1998-12-01  Tom Tromey  <tromey@cygnus.com>
6228
6229         * Makefile.in (+target): Removed.
6230         (+xmake_file): Likewise.
6231         (+tmake_file): Likewise.
6232         (.NOEXPORT): Removed duplicate.
6233
6234 Fri Nov 27 13:20:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6235
6236         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
6237
6238         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
6239
6240         * jvgenmain.c: Remove the xmalloc prototype, we get it from
6241         libiberty.h.  Provide an xmalloc definition.
6242
6243         * jvspec.c: Remove the xmalloc prototype.
6244
6245         * parse-scan.y: Include config.h and system.h.  Don't include
6246         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
6247         Provide an xstrdup definition.
6248
6249 Thu Nov 26 22:03:58 1998  Alexandre Oliva  <oliva@dcc.unicamp.br>
6250
6251         * jcf-path.c (add_entry): Recognize ".jar" too.
6252         * lang-specs.h: Likewise.
6253
6254 Thu Nov 26 12:44:07 1998  Per Bothner  <bothner@cygnus.com>
6255
6256         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
6257         soft_monitorenter_node, soft_monitorexit_node, throw_node.
6258
6259         * jcf-write.c (generate_bytecode_insns):
6260         Handle pre/post-increment/decrement of long.
6261
6262         * jcf-write.c (generate_bytecode_insns):
6263         Handle missing exception handler (finally for synchronized).
6264
6265 Wed Nov 25 09:47:15 1998  Per Bothner  <bothner@cygnus.com>
6266
6267         * java-tree.h (end_params_node):  Declare global.
6268         * decl.c (end_params_node):  New global.
6269         (init_decl_processing, start_java_method):  Use end_params_node for
6270         end of list of parameter types.  Follows correct gcc conventions.
6271         * expr.c (pop_argument_types, pop_arguments):  Likewise.
6272         * lang.c (put_decl_node):  Likewise.
6273         * typeck.c (various places):  Likewise.
6274         * class.y (various places):  Likewise.
6275         * parse.y (various places):  Likewise.
6276
6277         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
6278         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
6279
6280         * class.c:  Add #include flags.h, remove no-longer needed declaration.
6281
6282         * class.c (layout_class_method):  Remove commented-out code, re-format.
6283         Don't add vtable entry (or index) for private methods.
6284         * expr.c (expand_invoke):  A private method is implicitly final.
6285         * class.c (make_class_data):  If inlining or optimizing,
6286         skip private methods.
6287
6288         * class.c (finish_class):  New function.  Calls existing methods,
6289         but alls emits deferred inline functions.
6290         * jcf-parse.c (parse_class_file):  Call finish_class.
6291         * parse.y (java_complete_expand_methods):  Likewise.
6292
6293         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
6294
6295         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
6296
6297 Wed Nov 25 00:50:58 1998  Marc Espie <espie@quatramaran.ens.fr>
6298
6299         * jcf-write.c (generate_bytecode_conditional): Fix typo.
6300
6301 Tue Nov 24 17:06:38 1998  Per Bothner  <bothner@cygnus.com>
6302
6303         * (generate_classfile): Always write class access flag with
6304         ACC_SUPER set.
6305
6306 Tue Nov 24 16:34:33 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6307
6308         * class.c (maybe_layout_super_class): New function.
6309         (layout_class): Reorganized. Loop on class methods dispatched into
6310         a new function. Call maybe_layout_super_class.
6311         (layout_class_methods, layout_class_method): New functions.
6312         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
6313         class.
6314         (expand_invoke): Likewise.
6315         * java-tree.h (all_class_list): New global variable declared.
6316         (layout_class_methods, layout_class_method): New function
6317         prototypes.
6318         (LAYOUT_SEEN_CLASS_METHODS): New macro.
6319         * jcf-parse.c (all_class_list): New global variable.
6320         (load_class): Extended what class_or_name can be. Use parser
6321         context mechanism to save globals before calling jcf_parse.
6322         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
6323         is set on the file name.
6324         (jcf_parse): Layout class methods when Object is loaded, otherwise
6325         record class in all_class_list for delayed method layout.
6326         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
6327         * lang.c (put_decl_node): Decode <init> into the decl context
6328         class name.
6329         * lex.c (java_allocate_new_line): Use xmalloc.
6330         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
6331         pointers, not TREE_LIST elements.
6332         (struct parser_ctxt): Fixed comment indentations, added comments
6333         and reordered some fields.
6334         (java_check_methods): Function prototype removed.
6335         * parse.y (java_push_parser_context): Use xmalloc.
6336         (java_parser_context_restore_global): Pop extra pushed ctxp only
6337         when there's nothing next.
6338         (maybe_create_class_interface_decl): Fixed comment, add new
6339         created class decl to all_class_list.
6340         (method_header): Use GET_REAL_TYPE on argument's types.
6341         (method_declarator): Use GET_REAL_TYPE, change type to the real
6342         type in TREE_LIST dependency node. Build argument list with the
6343         real type.
6344         (create_jdep_list): Use xmalloc. Removed allocation error message.
6345         (obtain_incomplete_type): Fixed leading comment. Broadened
6346         incoming argument meaning.
6347         (register_incomplete_type): Use xmalloc. Removed allocation error
6348         message.
6349         (safe_layout_class): Fixed leading comment.
6350         (jdep_resolve_class): Reversed if statement condition and switch
6351         if and else bodies.
6352         (resolve_and_layout): Fixed leading comment. Broadened incoming
6353         argument meaning.
6354         (complete_class_report_errors): New local variable name, for
6355         clarity. purify_type_name used for all error cases.
6356         (java_get_real_method_name): Stricter check on constructors.
6357         (java_check_regular_methods): Reverse methods list only if not
6358         already laid out. Layout artificial constructor.
6359         (java_check_methods): Deleted.
6360         (source_start_java_method): Obtain incomplete type for patchable
6361         method arguments.
6362         (java_layout_classes): Fixed leading comment. Use
6363         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
6364         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
6365         before returning. Fixed comments.
6366         (java_expand_classes): Check for errors up front.
6367         (patch_method_invocation): Class to search is resolved and laid
6368         out.
6369
6370 Tue Nov 24 12:57:13 1998  Per Bothner  <bothner@cygnus.com>
6371
6372         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
6373
6374         * javaop.h (int8):  Removed - not used.
6375         (jbyte):  Redefine portably with correct signedness.
6376
6377         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
6378
6379         * jcf-write.c (generate_bytecode_insns):  Fix typo
6380         OPCODE_getstatic to OPCODE_getfield.
6381
6382         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
6383         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
6384         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
6385
6386 Thu Nov 19 11:16:55 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6387
6388         * jcf-parse.c (jcf_parse_source): Function returned type is
6389         void. Added prototype.
6390         (jcf_parse): Function returned type is void.
6391         (yyparse): Remove call to fclose on the last parsed file.
6392
6393         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
6394
6395 Wed Nov 18 23:54:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6396
6397         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
6398         (layout_class): Cope with methods featuring WFL in decl names.
6399         * decl.c (unqualified_object_id_node): New global variable,
6400         initialized.
6401         (build_decl_no_layout): Removed.
6402         * expr.c (build_primtype_type_ref): Handle Double.
6403         (java_lang_expand_expr): Fixed indentations.
6404         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
6405         (flag_wall, flag_redundant, flag_not_overriding,
6406         flag_static_local_jdk1_1, unqualified_object_id_node): Global
6407         variable declarations.
6408         (build_decl_no_layout): Removed prototype.
6409         (java_get_real_method_name): Added prototype.
6410         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
6411         (java_parse_abort_on_error): Macro now just returns.
6412         * jcf-parse.c (jcf_parse_source): Check fclose returned
6413         value. Call emit_register_classes if java_report_errors returns
6414         zero.
6415         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
6416         flag_static_local_jdk1_1): New integer flags.
6417         (lang_decode_option): New flags set here.
6418         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
6419         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
6420         the flag_redundant variable.
6421         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
6422         when parsing java.lang.Object class.
6423         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
6424         NULL_TREE to build.
6425         (resolve_qualified_expression_name): Fixed indentation.
6426         (patch_array_ref): Changed prototype.
6427         (not_initialized_as_it_should_p): Prototype removed.
6428         (java_report_errors): Added function prototype.
6429         * parse.y (formal_parameter:): Changed error message for not yet
6430         supported final parameters.
6431         (class_type_list:): Set both PURPOSE and VALUE of created
6432         TREE_LIST to be class_type.
6433         (primary_no_new_array:): Handle class literals on primitive types.
6434         (parse_warning_context): Reinstalled correct force_error and
6435         do_warning flags setups.
6436         (java_report_errors): Changed prototype. Return java_error_count
6437         value.
6438         (variable_redefinition_error): Consider treating variable type as
6439         a fake pointer.
6440         (create_interface): Warn about redundant abstract modifier if
6441         flag_redundant is set. Changed error message.
6442         (lookup_field_wrapper): Save/restore globals before/after looking
6443         up field.
6444         (duplicate_declaration_error_p): Consider treating declaration
6445         type as a fake pointer.
6446         (register_fields): Extract real type from dependency node. Check
6447         for duplicate field declaration after type adjustment. Use
6448         DECL_INITIAL to store static final initialized values.
6449         (method_header): Extract real function type from dependency node.
6450         (check_abstract_method_header): Use GET_METHOD_NAME.
6451         (obtain_incomplete_type): Layout fake pointer type.
6452         (safe_layout_class): Don't try to check for methods before layout.
6453         (java_complete_class): Don't check for correct throws clause
6454         elements inheritance here.
6455         (resolve_and_layout): Broadened name parameter meaning.
6456         (reset_method_name): Use GET_METHOD_NAME.
6457         (java_get_real_method_name): New function.
6458         (java_check_regular_methods): Don't check methods in
6459         java.lang.Object.  Verify lineage of throws clause elements. Use
6460         flag_no_overriding in warning report.
6461         (check_throws_clauses): Don't check if class was from
6462         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
6463         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
6464         (declare_local_variables): Use flag_static_local_jdk1_1 to report
6465         warning on unsupported final local variables. Use build_decl
6466         instead of build_decl_no_layout. Get real local variable type from
6467         dependency node.
6468         (source_start_java_method): Get real parameter type from
6469         dependency node. Call build_decl instead of build_decl_no_layout.
6470         (java_layout_classes): Reverse tree and layout type and class as
6471         required. Mark class as loaded when done.
6472         (resolve_field_access): Fixed indentation. Restricted condition
6473         leading to static field access code generation. Set field_type
6474         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
6475         (resolve_qualified_expression_name): Initialize type_found to
6476         null. Handle static field resolved during qualification. Fixed
6477         layout on non primitive field decl types.
6478         (not_accessible_p): Fixed typo in comment.
6479         (patch_method_invocation): Resolve and layout class to search from
6480         type.
6481         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
6482         layout non primitive type, if necessary. Make method node only to
6483         report errors.
6484         (find_applicable_accessible_methods_list): Consider WFL'ed method
6485         decl names. Fixed indentation.
6486         (argument_types_convertible): Resolve and layout target type if
6487         necessary.
6488         (java_complete_tree): Fixed indentation problems. Rewrote
6489         CALL_EXPR thrown exceptions check. Re-installed further processing
6490         of the assignment in certain cases.
6491         (patch_assignment): Call maybe_build_primttype_type_ref to perform
6492         inlining on class literals.
6493         (valid_builtin_assignconv_identity_widening_p): Cope with constant
6494         0 literal.
6495         (valid_method_invocation_conversion_p): Likewise.
6496         (patch_string): Temporary disable forbidden use of `this' in
6497         explicit constructor invocations when doing string concatenation
6498         within their scope.
6499         (patch_unaryop): Added comment. Reinstalled code to disable
6500         further check on assignment operation with cast expression RHS.
6501         (patch_switch_statement): Fixed indentation.
6502         (build_try_statement): Call build_decl instead of
6503         build_decl_no_layout.
6504         (patch_synchronized_statement): Likewise.
6505         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
6506         IS_UNCHECKED_EXPRESSION_P.
6507         (check_thrown_exceptions_do): Changed leading comment. Resolve and
6508         layout argument exception type.
6509         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
6510         of IS_UNCHECKED_EXPRESSION_P.
6511
6512 Wed Nov 18 14:21:48 1998  Anthony Green  <green@cygnus.com>
6513
6514         * jcf-parse.c (yyparse): Open class file in binary mode.
6515
6516 Sun Nov 15 17:14:17 1998  Per Bothner  <bothner@cygnus.com>
6517
6518         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
6519
6520         * jcf-write.c (perform_relocations):  Move check out one loop.
6521
6522 Sun Nov 15 15:09:56 1998  Anthony Green  <green@hoser.cygnus.com>
6523
6524         * Make-lang.in: Fix reference to srcdir.
6525         * jv-scan.c: Add missing xmalloc prototype.
6526         * jvgenmain.c: Ditto.
6527
6528 Sun Nov 15 14:36:29 1998  Per Bothner  <bothner@cygnus.com>
6529
6530         * decl.c (error_mark_node), java-tree.h:  New global.
6531         * parse.y:  Use empty_stmt_node instead of size_zero_node.
6532         (build_if_else_statement):  If missing else, use empty_stmt_node.
6533
6534         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
6535         (java_complete_expand_method):  Complain if return is missing.
6536         (java_check_regular_methods):  Comment out incorrect error check.
6537         (not_accessible_p):  Fix incorrect handling of protected methods.
6538         (patch_method_invocation):  Pass correct context to not_accessible_p.
6539         (find_applicable_accessible_methods_list):  Likewise.
6540         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
6541         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
6542         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
6543         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
6544
6545         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
6546         (push_int_const):  Remove reundant NOTE_PUSH.
6547         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
6548         (- case SWITCH_EXPR):  Fix code generation bug.
6549         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
6550         (generate_classfile):  More robust for abstract methods.
6551
6552 Sun Nov 15 13:52:39 1998  Anthony Green  <green@cygnus.com>
6553
6554         * Makefile.in: jv-scan and jvgenmain all require libiberty.
6555         * Make-lang.in: Ditto.
6556
6557         * jv-scan.c: Remove xmalloc and xstrdup definitions.
6558         * jvgenmain: Ditto.
6559
6560 Sun Nov 15 14:10:56 1998  Per Bothner  <bothner@cygnus.com>
6561
6562         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
6563
6564         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
6565
6566 Sat Nov 14 17:19:18 1998  Per Bothner  <bothner@cygnus.com>
6567
6568         Allow uses of interface types to verify.  This is not really
6569         type-safe, but it matches what Sun does, and is OK as long as
6570         there are appropriate run-time checks.
6571         * verify.c (merge_types):  If merging two interface types,
6572         just set the result to java.lang.Object.
6573         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
6574
6575 1998-11-13  Tom Tromey  <tromey@cygnus.com>
6576
6577         * gjavah.c (main): Handle --output-class-directory argument.
6578         * jvspec.c (lang_specific_driver): Translate `-d' into
6579         -foutput-class-dir.
6580         * jcf.h (jcf_write_base_directory): Declare.
6581         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
6582         * lang-options.h: Mention -foutput-class-dir.
6583         * jcf-write.c (jcf_write_base_directory): New global.
6584         (make_class_file_name): Put generated .class file into `-d'
6585         directory, or into source directory if -d not given.  Function now
6586         static.
6587         (write_classfile): Free class file name.  Handle case where class
6588         file name is NULL.
6589         (DIR_SEPARATOR): New macro.
6590         Include <sys/stat.h>
6591
6592         * Makefile.in (prefix): New macro.
6593
6594 Thu Nov 12 14:15:07 1998  Per Bothner  <bothner@cygnus.com>
6595
6596         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
6597         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
6598         here (done in patch_invoke instead).
6599         (case_identity):  Moved here from parse.y.
6600
6601         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
6602         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
6603         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
6604         so they can be efficiently scanned without recursion.
6605         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
6606         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
6607         in BLOCK iteratively, rather than recursively.
6608
6609         * parse.y (do_unary_numeric_promotion):  New function.
6610         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
6611
6612         * parse.y (patch_newarray):  Various fixes.
6613
6614         Re-do handling of switch statements (for proper block scoping).
6615         * parse.y:  Add just a single block for the enture switch block,
6616         but don't create any "case blocks".
6617         (group_of_labels):  Rmeoved unneeded non-terminal.
6618         CASE_EXPR and DEFAULT_EXPR are added to current block.
6619         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
6620         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
6621         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
6622         * parse.y (wfl_operator, print_int_node): Make non-static.
6623         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
6624         as part of recursive scan of block.
6625         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
6626         (patch_switch_statement):  Most tests move dinto java_complete_tree.
6627
6628         * parse.y:  Make various production be non-typed (void).
6629         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
6630         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
6631         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
6632
6633         * jcf-write.c (struct jcf_handler):  New type.
6634         (struct jcf_switch_state):  New type.
6635         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
6636         (alloc_handler, emit_unop, emit_reloc):  New functions.
6637         (adjust_typed_op):  Add extra parameter ("max type" offset).
6638         (emit_switch_reloc, emit_case-reloc):  New function.
6639         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
6640         (generate_bytecode_insns):  Support REAL_CST, switch statements,
6641         exception handling, method calls, object/array creation, and more.
6642
6643         * class.c:  Remove some unused variables.
6644         * constants.c (find_string_constant):  New function.
6645         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
6646         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
6647         if flag_emit_class_files.
6648
6649 1998-11-12  Tom Tromey  <tromey@cygnus.com>
6650
6651         * jcf-io.c (find_class): Added explanatory comment.
6652
6653         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
6654         trailing slash to `.zip' entries.
6655
6656         * jvspec.c (lang_specific_driver): Correctly handle case where
6657         GC_NAME not defined.
6658
6659 1998-11-11  Tom Tromey  <tromey@cygnus.com>
6660
6661         * jvspec.c (GC_NAME): New define.
6662         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
6663         if required.
6664         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
6665
6666 Wed Nov 11 19:08:52 1998  Per Bothner  <bothner@cygnus.com>
6667
6668         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
6669
6670 1998-11-11  Tom Tromey  <tromey@cygnus.com>
6671
6672         * jcf-dump.c (main): Correctly recognize `--'-style long options.
6673
6674 Tue Nov 10 12:34:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6675
6676         * class.c (is_compiled_class): Call safe_layout_class for class
6677         compiled from source.
6678         * conver.h (convert_to_integer, convert_to_real,
6679         convert_to_pointer): Added prototypes.
6680         * decl.c (init_decl_processing): Non longer push the decls of
6681         `methodtable', `constants', `Class', `Field', `dispatchTable'
6682         `jexception' and `Method'.
6683         * expr.c (build_invokeinterface): New function.
6684         (expand_invoke): static variable CLASS_IDENT now in
6685         build_invokeinterface. Use build_invokeinterface.
6686         (expand_java_field_op): Moved code to inline
6687         java.lang.PRIMTYPE.TYPE into a function.
6688         (build_primtype_type_ref): New function.
6689         * java-tree.def (INSTANCEOF_EXPR): New tree code.
6690         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
6691         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
6692         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
6693         (DECL_LOCAL_STATIC_VALUE): New macro.
6694         (build_invokeinterface, build_primtype_type_ref): New function
6695         prototypes.
6696         (java_parse_abort_on_error): Macro rewritten.
6697         * jcf-parse.c (current_method): Add comment to declaration.
6698         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
6699         Function prototypes fixed.
6700         (jcf_parse_source): push/pop parser context. save/restore global.
6701         (parse_source_file): Fixed leading comment. Now take a
6702         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
6703         classes and pop the parser context anymore.
6704         (yyparse): Push parser context, save globals, parse the source
6705         file, restore globals and pop the parser context when processing a
6706         source file.
6707         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
6708         * lex.c (java_parse_doc_section): New function.
6709         (java_lex): Call java_parse_doc_section when appropriate. Build an
6710         operator around INSTANCEOF_TK.
6711         * lex.h (java_lineterminator, java_sprint_unicode,
6712         java_unicode_2_utf8, java_lex_error, java_store_unicode):
6713         Prototypes rewritten.
6714         (java_parse_escape_sequence, java_letter_or_digit_p,
6715         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
6716         java_read_unicode, java_store_unicode, java_read_char,
6717         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
6718         Added function prototypes.
6719         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
6720         define.
6721         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
6722         New macros
6723         (struct parser_ctxt): New fields: deprecated,
6724         current_parsed_class_un, gclass_list.
6725         (fix_method_argument_names, issue_warning_error_from_context,
6726         resolve_package, lookup_package_type): New function prototypes.
6727         (resolve_expression_name): Fixed function prototype.
6728         (find_applicable_accessible_methods_list): Fixed indentation, added
6729         extra argument in prototype.
6730         (check_final_assignment, build_null_of_type, check_deprecation,
6731         check_method_redefinition, reset_method_name,
6732         java_check_regular_methods, java_check_abstract_methods,
6733         maybe_build_primttype_type_ref): New function prototype.
6734         * parse.y (conver.h): Include.
6735         (INSTANCEOF_TK): Tagged <operator>.
6736         (single_type_import_declaration): Use REGISTER_IMPORT macro.
6737         (relational_expression:): Build binop for instanceof.
6738         (java_push_parser_context): Remember ctxp->gclass_list across
6739         contexts.
6740         (java_pop_parser_context): Simply return if no context
6741         exists. Remember gclass_list across contexts.
6742         (issue_warning_error_from_context): New function.
6743         (parse_error_context): Don't setup ctxp->elc here. Call
6744         issue_warning_error_from_context instead.
6745         (parse_warning_context): Likewise.
6746         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
6747         setup. Link new class/interface to ctxp->gclass_list.
6748         (add_superinterfaces): Register interface as incomplete if not
6749         loaded.
6750         (create_class): Remember class unqualified name in
6751         ctxp->current_parsed_class_un. Check class deprecation.
6752         (register_fields): Check field deprecation. Remember static final
6753         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
6754         processing INIT.
6755         (method_header): New local variable ORIG_ARG. Use unqualified
6756         current class name for check on constructor errors. Promote return
6757         type if of record type. Argument list fix moved in
6758         fix_method_argument_names, called here. Check method deprecation.
6759         (fix_method_argument_names): New function.
6760         (method_declarator): Promote record typed arguments.
6761         (safe_layout_class): Check class methods before layout.
6762         (java_complete_class): Compute field layout when patched.
6763         (do_resolve_class): Try to load class after having it renamed
6764         after the package name.
6765         (get_printable_method_name): Use DECL_CONTEXT.
6766         (reset_method_name): New function.
6767         (check_method_redefinition): Use reset_method_name.
6768         (java_check_regular_methods): New local variable
6769         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
6770         names for error report. Check for compile-time error when method
6771         found has default (package) access.
6772         (java_check_abstract_methods): Now takes an interface DECL node as
6773         an argument. Also reinstall real name on unchecked
6774         overriding/hiding methods for error report.
6775         (java_check_methods): Fixed leading comment. Get classes to verify
6776         from ctxp->gclass_list. Use CHECK_METHODS macro and set
6777         CLASS_METHOD_CHECKED_P on class verification.
6778         (lookup_java_method2): Get real method name if necessary.
6779         (find_in_imports): Don't check package class access here.
6780         (resolve_package, lookup_package_type): New functions.
6781         (java_layout_classes): Fixed leading comment. Take classes to be
6782         laid out from ctxp->gclass_list.
6783         (java_complete_expand_methods): Don't expand native and abstract
6784         methods.
6785         (java_expand_classes): New function.
6786         (resolve_expression_name): Use additional argument ORIG.  Retrieve
6787         values of static final field of primitive types.
6788         (resolve_field_access): Handles static final field of promotive
6789         type.
6790         (resolve_qualified_expression_name): Handle STRING_CST as
6791         primaries and package name resolution. Check deprecation on found
6792         decls. Set where_found and type_found on non static field resolved
6793         during qualification. Layout non primitive field decl types.
6794         (check_deprecation): New function.
6795         (maybe_access_field): Simplified.
6796         (patch_method_invocation_stmt): Local variable CLASS_TYPE
6797         removed. Reverse method's argument when primary is a type. Don't
6798         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
6799         instead. Include abstract class in the list of class searchable
6800         for constructors. Use DECL_CONTEXT of found method for access
6801         checks. Check method deprecation.
6802         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
6803         converting arguments. Handle INVOKE_INTERFACE.
6804         (lookup_method_invoke): Search constructor using existing
6805         infrastructure (don't rely on lookup_java_constructor anymore).
6806         (find_applicable_accessible_methods_list): Extra argument flag
6807         LC. Now include constructor in the search.
6808         (qualify_ambiguous_name): Conditional expression are primaries.
6809         (not_initialized_as_it_should_p): static final are always
6810         initialized.
6811         (java_complete_tree): Pass extra NULL argument to
6812         resolve_expression_name. Stricter test to carry on patching
6813         assignments. New case for INSTANCEOF_EXPR.
6814         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
6815         (check_final_assignment, maybe_build_primttype_type_ref): New
6816         functions.
6817         (patch_assignment): Detect resolved static finals and carry normal
6818         assignment error check on them. Inline PRIMTYPE.TYPE read access.
6819         (try_builtin_assignconv): Access constant 0 on all primitive
6820         types.
6821         (valid_builtin_assignconv_identity_widening_p): Accept identical
6822         types. Accept all promoted type on int type.
6823         (valid_ref_assignconv_cast_p): Accept a null pointer to be
6824         assigned to a reference.
6825         (valid_method_invocation_conversion_p): Accept to check null
6826         pointers.
6827         (build_binop): Merge declaration and initialization of local
6828         variable BINOP.
6829         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
6830         numeric types. Improved validity test for qualify operators on
6831         references.
6832         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
6833         and PREINCREMENT_EXPR. Also detect resolved static finals of a
6834         primitive type and issue the appropriate error message.
6835         (resolve_type_during_patch): Mark class loaded when resolved.
6836         (patch_cast): Allow null to be cased to reference types.
6837         (build_null_of_type): New function.
6838         (patch_array_ref): Handle array on references correctly.
6839         (patch_return): Removed unused local variable MODIFY. Force
6840         boolean to be returned as integers. Allows null to be returned by
6841         a function returning a reference.
6842         * typeck.c (convert_to_integer, convert_to_real,
6843         convert_to_pointer): Prototypes moved to convert.h
6844         (lookup_argument_method): Use method real name, if necessary.
6845
6846 1998-10-30  Tom Tromey  <tromey@cygnus.com>
6847
6848         * class.c (build_class_ref): Changed name of primitive classes to
6849         start with `_Jv_'.
6850
6851         * class.c (make_class_data): Renamed fields: nmethods to
6852         method_count, method_count to dtable_method_count.  Always set
6853         `state' field to 0.
6854         * decl.c (init_decl_processing): Likewise.
6855
6856 Wed Oct 28 08:03:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6857
6858         * class.c (layout_class): Don't mangle <finit>, produce
6859         __finit<class> instead. Don't verify artificial methods.
6860         * decl.c (finit_identifier_node): New declared global.
6861         (init_decl_processing): finit_identifier_node initialized.
6862         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
6863         * java-tree.h (finit_identifier_node): Declared as extern.
6864         (struct lang_decl): New field called_constructor.
6865         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
6866         (CLASS_HAS_FINIT_P): New macro.
6867         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
6868         explicit constructor invocation.
6869         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
6870         CALL_SUPER_CONSTRUCTOR_P): New macros.
6871         (write_classfile): Added prototype.
6872         * jcf-parse.c (jcf_parse_source): Parse and remember for
6873         generation if the file was seen on the command line.
6874         (parse_source_file): Don't write the class file here.
6875         (yyparse): Loop on files rewritten. Set current_jcf.
6876         (parse_zip_file_entries): Parse class file only if it was found.
6877         * lang.c (init_parse): Don't open command line provided filename
6878         here.
6879         (lang_parse): Don't set main_jcf anymore.
6880         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
6881         (JCONSTRUCTOR_CHECK): New macro.
6882         (JBSC_TYPE_P): New macro.
6883         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
6884         (COMPLETE_CHECK_OP_2): New macro.
6885         (struct parse_ctxt): New field explicit_constructor_p.
6886         (check_class_interface_creation): Fixed prototype indentation.
6887         (patch_method_invocation_stmt): Prototype reflects added argument.
6888         (patch_invoke): Likewise.
6889         (complete_method_declaration, build_super_invocation,
6890         verify_constructor_circularity,
6891         build_this_super_qualified_invocation, get_printable_method_name,
6892         patch_conditional_expr, maybe_generate_finit, fix_constructors,
6893         verify_constructor_super, create_artificial_method,
6894         start_artificial_method_body, end_artificial_method_body,
6895         generate_field_initialization_code): New function prototypes.
6896         * parse.y: Fixed leading comment
6897         (constructor_header:, constructor_body:, block_end:): Rules tagged
6898         <node>.
6899         (type_declaration:): Call maybe_generate_finit.
6900         (method_declaration:): Action for method_body: placed in new
6901         function complete_method_declaration, called here.
6902         (constructor_declaration:): Defined actions. Removed leading
6903         FIXME.
6904         (constructor_header:): New rule with action.
6905         (constructor_body:): Rule rewritten using block_begin: and
6906         block_end:. Defined actions.
6907         (constructor_declarator:, explicit_constructor_invocation:):
6908         Defined actions.
6909         (block:): Use new rules block_begin: block_end:.
6910         (block_begin:, block_end:): New rules and actions.
6911         (block_statements:): Fixed error message for explicit
6912         constructors.
6913         (method_invocation:): Call build_this_super_qualified_invocation
6914         if primary is `this' or `super' was seen.
6915         (conditional_expression:): Action defined.
6916         (extra_ctxp_pushed_p): New static global flag.
6917         (java_parser_context_save_global): Create parser context if
6918         necessary. Use extra_ctxp_pushed_p to remember it.
6919         (java_parser_context_restore_global): Pop extra parser context if
6920         one exists.
6921         (build_array_from_name): Array on primitive types are marked
6922         loaded.
6923         (register_fields): Restore new name in field initializer
6924         expression if type was altered. Non static fields initialized upon
6925         declaration marked initialized.
6926         (maybe_generate_finit): New function.
6927         (maybe_generate_clinit): Use create_artificial_method,
6928         start_artificial_method_body, end_artificial_method_body. Generate
6929         debug info for enclosed initialization statements.
6930         (method_header): Fixed leading comment. Check constructor
6931         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
6932         accordingly.
6933         (complete_method_declaration, constructor_circularity_msg,
6934         verify_constructor_circularity): New functions.
6935         (get_printable_method_name): New function.
6936         (check_method_redefinition): Don't rename <finit> methods. Fix
6937         declared constructor names. Error message for
6938         constructors modified.
6939         (java_check_regular_methods): Local variable seen_constructor
6940         renamed saw_constructor. Skip verification on constructors. Create
6941         default constructor with create_artificial_method.
6942         (java_check_methods): Removed unnecessary empty line.
6943         (create_artificial_method, start_artificial_method_body,
6944         end_artificial_method_body): New functions.
6945         (java_layout_classes): Changed leading comment. Reverse fields
6946         list if necessary. Always layout java.lang.Object if being
6947         defined.
6948         (java_complete_expand_methods): Verify constructor circularity.
6949         (java_complete_expand_method): Call fix_constructor on
6950         constructors.  Local variable no_ac_found removed. Restore
6951         bindings if method body expansion failed.
6952         (fix_constructors, verify_constructor_super,
6953         generate_field_initialization_code): New function.
6954         (java_expand_classes): Fixed leading comment. Write class file
6955         here.
6956         (resolve_expression_name): Check for illegal instance variable
6957         usage within the argument scope of an explicit constructor
6958         invocation.
6959         (resolve_qualified_expression_name): Pass extra from_super flag
6960         when invoking patch_method_invocation_stmt. New case for
6961         conditional expression when used as a primary. Check for error
6962         when acquiring super.
6963         (patch_method_invocation_stmt): Added extra argument super. New
6964         local variable is_static_flag. Set class_to_search according to
6965         the nature of the constructor invocation. Don't add `this'
6966         argument when expanding NEW_CLASS_EXPR. Check for illegal method
6967         invocation within the argument scope of explicit constructor
6968         invocation. Set is_static according to is_static_flag. Provide
6969         extra `super' argument to patch_invoke invocation.
6970         (patch_invoke): New argument from_super. Loop on arguments
6971         indentation fixed. Pass from_super to invocation_mode. New switch
6972         case INVOKE_SUPER. Fixed error message in switch default case.
6973         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
6974         value.
6975         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
6976         (lookup_method_invoke): Fixed prototypes in candidates list. Error
6977         message takes constructors into account.
6978         (find_applicable_accessible_methods_list): Fixed indentation.
6979         (qualify_ambiguous_name): Take explicit constructor invocation
6980         into account. Deal with a conditional expression as a primary to
6981         a method call.
6982         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
6983         case. Added extra argument to patch_method_invocation_stmt.
6984         Register calls made to explicit constructor `this'. Don't call
6985         save_expr in ARRAY_REF case when emitting class files. Check for
6986         illegal use of this when expanding explicit constructor invocation
6987         arguments.
6988         (complete_function_arguments): Set and reset parser context
6989         explicit_constructor_p field value when appropriate.
6990         (build_super_invocation, build_this_super_qualified_invocation):
6991         New functions.
6992         (patch_assignment): Fixed typo.
6993         (patch_unaryop): Check on final fields occurs only when a decl
6994         exits.
6995         (patch_return): Take constructors into account.
6996         (patch_conditional_expr): New function.
6997         * typeck.c (build_java_signature): Removed unnecessary empty line.
6998
6999 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
7000
7001         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
7002
7003 1998-10-28  Tom Tromey  <tromey@cygnus.com>
7004
7005         * decl.c (init_decl_processing): Renamed fields.
7006         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
7007         interface_len, msize fields.
7008
7009         * class.c (make_class_data): Removed subclass_head and
7010         subclass_next fields.
7011         * decl.c (init_decl_processing): Removed subclass_head and
7012         subclass_next fields.
7013
7014 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
7015
7016         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
7017         * mangle.c (emit_unicode_mangled_name): Similarly.
7018
7019 Mon Oct 26 12:17:23 1998  Nick Clifton  <nickc@cygnus.com>
7020
7021         * jcf-parse.c (get_constant): Place braces around code to compute
7022         'd' when REAL_ARITHMETIC is not defined.
7023
7024 Sun Oct 25 14:58:05 1998  H.J. Lu  (hjl@gnu.org)
7025
7026         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
7027         dependency.
7028
7029 1998-10-23  Tom Tromey  <tromey@cygnus.com>
7030
7031         * lang-specs.h: `.zip' files are input to jc1.
7032
7033 Thu Oct 22 23:01:54 1998  Per Bothner  <bothner@cygnus.com>
7034
7035         * jvspecs.c:  Add (but don't enable) support for combining multiple
7036         .class and .java input filenames to a single jc1 invocation.
7037         Add support for -C flag (copile to .class files).
7038         Translate -classpath and -CLASSPATH arguments.
7039         * lang-specs.h:  Don't set %2 spec.
7040
7041 1998-10-22  Tom Tromey  <tromey@cygnus.com>
7042
7043         * jcf-path.c (add_entry): Don't add trailing separator if entry is
7044         a .zip file.
7045         (add_path): Don't add trailing separator to non-empty path
7046         elements.
7047
7048         * lang.c (lang_decode_option): Check for -fclasspath and
7049         -fCLASSPATH before examining other `-f' options.
7050
7051         * java-tree.h (finalize_identifier_node): Don't declare.
7052         * class.c (make_class_data): Don't push "final" field.
7053         * decl.c (init_decl_processing): Don't push "final" field.
7054         (finalize_identifier_node): Removed.
7055         (init_decl_processing): Don't set finalize_identifier_node.
7056
7057         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
7058
7059 Sun Oct 11 10:31:52 1998  Anthony Green  <green@cygnus.com>
7060
7061         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
7062         (JV_SCAN_SOURCES): New macro.
7063         (JCF_DUMP_SOURCES): Likewise.
7064         (jcf-dump$(exeext)): New target.
7065         (jv-scan$(exeext)): New target.
7066
7067 1998-10-22  Tom Tromey  <tromey@cygnus.com>
7068
7069         * Makefile.in (LEX): Removed.
7070         (LEXFLAGS): Likewise.
7071         (SET_BISON): New macro.
7072         (BISON): Removed.
7073         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
7074         spurious diffs in parse.c.
7075         ($(PARSE_SCAN_C)): Likewise.
7076         (PARSE_DIR): New macro.
7077         (PARSE_C): Use it.
7078         (PARSE_SCAN_C): Likewise.
7079         (PARSE_RELDIR): New macro.
7080
7081         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
7082
7083         * jcf-io.c (find_class): Use saw_java_source to determine when to
7084         look for `.java' file.
7085         * jcf-parse.c (saw_java_source): New global.
7086         (yyparse): Set it if `.java' file seen.
7087
7088         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
7089         (GCJH_SOURCES): Likewise.
7090         * Makefile.in (datadir): New macro.
7091         (libjava_zip): Likewise.
7092         (JAVA_OBJS): Added jcf-path.o.
7093         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
7094         (../gcjh$(exeext)): Likewise.
7095         (jcf-path.o): New target.
7096         * java-tree.h (fix_classpath): Removed decl.
7097         * jcf-parse.c (fix_classpath): Removed.
7098         (load_class): Don't call fix_classpath.
7099         * parse.y (read_import_dir): Don't call fix_classpath.
7100         * lex.h: Don't mention classpath.
7101         * lex.c (java_init_lex): Don't initialize classpath.
7102         * jcf-io.c (classpath): Removed global.
7103         (find_class): Use jcf_path iteration functions.  Correctly search
7104         class path for .java file.
7105         (open_in_zip): New argument `is_system'.
7106         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
7107         classpath-related options.
7108         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
7109         and -I.
7110         (lang_init): Call jcf_path_init.
7111         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
7112         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
7113         Correctly put braces around second string in each entry.
7114         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
7115         classpath-related options.
7116         (help): Updated for new options.
7117         * jcf.h: Declare functions from jcf-path.c.  Don't mention
7118         `classpath' global.
7119         * jcf-path.c: New file.
7120
7121         * jcf-depend.c: Include jcf.h.
7122
7123         * jcf-write.c (localvar_alloc): Returns `void'.
7124         (localvar_free): Removed unused variable.
7125
7126         * lang.c (OBJECT_SUFFIX): Define if not already defined.
7127         (init_parse): Use OBJECT_SUFFIX, not ".o".
7128
7129 Wed Oct 21 07:54:11 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7130
7131         * class.c (emit_register_classes): Renamed from
7132         emit_register_class.
7133         * java-tree.h (emit_register_classes): Prototype renamed from
7134         emit_register_class.
7135         * jcf-parse.c (yyparse): Call emit_register_classes once before
7136         returning.
7137         * parse.y (java_expand_classes): No longer register classes.
7138
7139 Tue Oct 20 09:15:38 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7140
7141         * class.c (is_compiled_class): New local variable
7142         seen_in_zip. Identify classes found in currently compiled source
7143         file(s).
7144         * decl.c (complete_start_java_method): Fixed typo.
7145         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
7146         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
7147         (CLASS_P): Moved around.
7148         (java_parse_abort_on_error): Macro moved from jcf-parse.c
7149         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
7150         java-parse.h
7151         (jcf_parse_source): Changed leading comment. Removed unnecessary
7152         fclose and CLASS_FROM_SOURCE_P marking.
7153         (parse_source_file): New local variables remember_for_generation
7154         and filename. Mark parsed file name identifier node. Removed block
7155         executed when parse_only was null. Set remember_for_generation.
7156         Use it as an argument to java_pop_parser_context.
7157         (yyparse): New local variables several_files, list, next node and
7158         current_file_list. Split ampersand separated file names into
7159         current_file_list. Iterate through the list and parse accordingly.
7160         * parse.h (java_pop_parser_context): New function prototype.
7161         * parse.y (ctxp_for_generation): New static global variable.
7162         (java_pop_parser_context): New argument generate. Link popped ctxp
7163         to ctxp_for_generation list accordingly.
7164         (java_complete_expand_methods): Fixed indentation.
7165         (java_expand_classes): New function.
7166
7167 Sat Oct 17 11:25:21 1998  Per Bothner  <bothner@cygnus.com>
7168
7169         * Makefile.in:  Link with libiberty.a instead of memmove.o.
7170
7171 Fri Oct 16 10:59:01 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7172
7173         * lex.c (setjmp.h): No longer included.
7174         * lex.h (setjmp.h): Included.
7175         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
7176         (duplicate_declaration_error_p): Renamed from
7177         duplicate_declaration_error.
7178         (build_array_from_name): New function prototype.
7179         * parse.y (setjmp.h): No longer included.
7180         (variable_declarator_id): Define action.
7181         (build_array_from_name): New function.
7182         (duplicate_declaration_error_p): Renamed from
7183         duplicate_declaration_error.  Fixed leading comment.
7184         (register_fields): Main `for' loop reorganized. Uses
7185         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
7186         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
7187         build_array_from_name.
7188         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
7189         types.
7190         (read_import_dir): Don't try to skip `.' and `..'.
7191         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
7192         build_array_from_name. Main `for' loop reorganized.
7193         (resolve_qualified_expression_name): When building access to a
7194         field, use the type where the field was found, not its own type.
7195         (maybe_access_field): Use field DECL_CONTEXT if the type where the
7196         field was found is null.
7197         (qualify_ambiguous_name): Sweep through all successive array
7198         dimensions.
7199
7200 Wed Oct 14 18:21:29 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7201
7202         * java-tree.h (pop_labeled_block, lang_printable_name,
7203         maybe_add_interface, set_super_info, get_access_flags_from_decl,
7204         interface_of_p, inherits_from_p, fix_classpath,
7205         complete_start_java_method, emit_handlers, init_outgoing_cpool,
7206         make_class_data, register_class, alloc_name_constant): New
7207         function prototypes.
7208         * lang.c (lang_decode_option): Set argc argument unused. Fixed
7209         indentation. Added cast to remove warning.
7210         (lang_printable_name): Set v argument unused.
7211         (lang_print_error): Added argument to lang_printable_name call.
7212         (java_dummy_print, print_lang_decl, print_lang_type,
7213         print_lang_identifier, lang_print_xnode): All argument marked
7214         unused.
7215         * lex.c (java_unget_unicode): Removed unnecessary argument.
7216         (java_allocate_new_line): Unused local variable is gone.
7217         (java_read_char): Added parenthesis in expressions to remove
7218         warnings.  Added final return statement.
7219         (java_read_unicode): Added parenthesis in expression to remove
7220         warning.
7221         (java_parse_end_comment): Fixed java_unget_unicode invocation.
7222         (java_parse_escape_sequence): Likewise.
7223         (java_lex): Unused local variables are gone. Fixed
7224         java_unget_unicode invocation.
7225         * lex.h (set_float_handler): Prototype added when JC1_LITE not
7226         defined.
7227         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
7228         lang_printable_name invocation in macro.
7229         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
7230         Likewise.
7231         (duplicate_declaration_error): Suppressed unused argument in
7232         prototype.
7233         (identical_subpath_p): Function declaration is gone.
7234         (patch_invoke): Suppressed unused argument in prototype.
7235         (patch_cast, build_labeled_block, check_thrown_exceptions):
7236         Likewise.
7237         * parse.y (setjmp.h): Included
7238         (toplev.h): Likewise.
7239         (field_declaration:): Suppressed unused local
7240         (label_decl:): Fixed build_labeled_block invocation.
7241         (java_pop_parser_context): Put extra parenthesis around assignment
7242         in if.
7243         (yyerror): Suppressed unused local variables.
7244         (variable_redefinition_error): Fixed lang_printable_name
7245         invocation.
7246         (create_interface): Suppressed unused local variables.
7247         (create_class): Likewise.
7248         (duplicate_declaration_error): Suppressed unused argument. Fixed
7249         lang_printable_name invocation.
7250         (register_fields): Suppressed unused local variable. Fixed
7251         duplicate_declaration_error invocation.
7252         (method_header): Suppressed unused local variable.
7253         (method_declarator, parser_check_super): Likewise.
7254         (java_complete_class): Suppressed unused local variable. Fixed
7255         fatal error message.
7256         (complete_class_report_errors): Added default: in switch.
7257         (java_check_regular_methods): Fixed lang_printable_name
7258         invocations.
7259         (check_throws_clauses): Likewise.
7260         (java_check_abstract_methods): Suppressed unused local
7261         variable. Fixed lang_printable_name invocation.
7262         (read_import_entry): Added supplemental return statement.
7263         (read_import_dir): Suppressed unused local variables.
7264         (check_pkg_class_access, declare_local_variables): Likewise.
7265         (source_start_java_method): Suppressed unused extern variable
7266         declarations
7267         (expand_start_java_method): Suppressed unused extern and local
7268         variable declarations.
7269         (java_complete_expand_methods): Likewise.
7270         (java_complete_expand_method): Suppressed unused local variables.
7271         (make_qualified_name): Likewise.
7272         (resolve_qualified_expression_name): Added default: in
7273         switch. Fixed lang_printable_name invocation.
7274         (class_instance_creation_expression): Added parenthesis around
7275         expressions.
7276         (patch_method_invocation_stmt): Fixed lang_printable_name and
7277         patch_invoke invocations.
7278         (check_for_static_method_reference): Fixed lang_printable_name
7279         invocation.
7280         (patch_invoke): Suppressed unused arguments and local variables.
7281         (lookup_method_invoke): Suppressed unused local variables.
7282         (qualify_ambiguous_name): Added default: in switch.
7283         (identical_subpath_p): Function removed.
7284         (patch_assignment): Suppressed unused local variables. Suppressed
7285         unnecessary if statement. Fixed lang_printable_name invocations.
7286         (try_builtin_assignconv): Fixed lang_printable_name invocations.
7287         (valid_ref_assignconv_cast_p): Parenthesis around
7288         expression. Suppressed unused local variables.
7289         (build_binop): Suppressed unused local variables. fixed
7290         lang_printable_name invocations.
7291         (string_constant_concatenation): Suppressed unused local
7292         variables.
7293         (patch_unaryop): Fixed lang_printable_name invocation.
7294         (patch_cast): Suppressed unnecessary argument. Fixed
7295         lang_printable_name invocation.
7296         (patch_array_ref): Fixed lang_printable_name invocation.
7297         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
7298         (build_labeled_block): Suppressed unused argument.
7299         (generate_labeled_block): Fixed build_labeled_block invocation.
7300         (build_loop_body): Suppressed unused local variables.
7301         (patch_loop_statement): Likewise.
7302         (patch_exit): Fixed lang_printable_name invocation.
7303         (patch_switch_statement): Likewise.
7304         (case_identity): First argument marked unused.
7305         (patch_try_statement): Fixed lang_printable_name invocations.
7306         (patch_synchronized_statement, patch_throw_statement): Likewise.
7307         (check_thrown_exceptions): Fixed check_thrown_exceptions and
7308         lang_printable_name invocations.
7309         (check_thrown_exceptions_do): Suppressed unused argument.
7310
7311 1998-10-14  Tom Tromey  <tromey@cygnus.com>
7312
7313         * jcf-write.c (write_classfile): Add output class file as target.
7314         * lang-options.h: Added -MD, -MMD, -M, and -MM.
7315         * jcf.h: Added declarations for dependency-tracking functions.
7316         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
7317         * lang.c (lang_decode_option): Recognize -MD and -MMD.
7318         (finish_parse): Call jcf_dependency_write.
7319         (dependency_tracking): New global.
7320         (DEPEND_SET_FILE): New define.
7321         (DEPEND_ENABLE): New define.
7322         (init_parse): Enable dependency tracking if required.
7323         Include "flags.h".
7324         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
7325         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
7326         (../gcjh$(exeext)): Likewise.
7327         (jcf-depend.o): New target.
7328         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
7329         (GCJH_SOURCES): Likewise.
7330         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
7331         dep_name argument.
7332         (find_classfile): Added dep_name argument.
7333         (find_class): Compute name of dependency.
7334         (open_in_zip): Call jcf_dependency_add_file.
7335         * gjavah.c (output_file): No longer global.
7336         (usage): Don't mention "gjavah".
7337         (help): Likewise.
7338         (java_no_argument): Likewise.
7339         (version): Likewise.
7340         (main): Recognize and handle -M family of options.
7341         (print_mangled_classname): Return is void.
7342         (process_file): Handle case where output is suppressed.
7343         (HANDLE_END_FIELD): Likewise.
7344         (HANDLE_METHOD): Likewise.
7345         * jcf-depend.c: New file.
7346
7347 Tue Oct 13 23:34:12 1998  Jeffrey A Law  (law@cygnus.com)
7348
7349         * java-tree.def: Add missing newline at EOF.
7350
7351 1998-10-13  Tom Tromey  <tromey@cygnus.com>
7352
7353         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
7354         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
7355         function.
7356         Include <config.h> and "system.h".
7357         (disassemble_method): Undefine RET to avoid clash with
7358         config/i386/i386.h.
7359
7360 Tue Oct 13 03:50:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7361
7362         * decl.c (runtime_exception_type_node, error_exception_type_node):
7363         New global variables.
7364         (init_decl_processing): Initialized.
7365         * expr.c (java_lang_expand_expr): Set caught exception type to
7366         null if catch handler argument doesn't exit.
7367         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
7368         tree codes.
7369         * java-tree.h (runtime_exception_type_node,
7370         error_exception_type_node): Global variables declared.
7371         (DECL_FUNCTION_THROWS): New macro.
7372         (DECL_FUNCTION_BODY): Modified comment.
7373         (DECL_SPECIFIC_COUNT): Likewise.
7374         (struct lang_decl): New field throws_list.
7375         (IS_UNCHECKED_EXPRESSION_P): New macro.
7376         * lex.c (java_lex): Generate location information for THROW_TK.
7377         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
7378         EXCEPTIONS_P): New macros.
7379         (enum jdep_code): New value JDEP_EXCEPTION.
7380         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
7381         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
7382         PATCH_METHOD_RETURN_ERROR): New macros.
7383         (patch_method_invocation_stmt): Added new argument to prototype.
7384         (patch_synchronized_statement, patch_throw_statement,
7385         check_thrown_exceptions, check_thrown_exceptions_do,
7386         purge_unchecked_exceptions, check_throws_clauses): New function
7387         prototypes.
7388         * parse.y Fixed typo in keyword section.
7389         (throw:): Rule tagged <node>.
7390         (THROW_TK): Keyword tagged <operator>.
7391         (method_header:): Last argument to call to method_header passed
7392         from throws: rule.
7393         (throws:, class_type_list:, throw_statement:,
7394         synchronized_statement:, synchronized:): Defined actions.
7395         (method_header): New local variable current. Register exceptions
7396         from throws clause.
7397         (java_complete_tree): Complete and verify exceptions from throws
7398         clause.
7399         (complete_class_report_errors): Error message on exceptions not
7400         found
7401         (java_check_regular_methods): Fixed typo. Shortcut on private
7402         overriding methods. Changed error message on method
7403         redefinition. Check for throws clause compatibility.
7404         (check_throws_clauses): New function.
7405         (java_check_abstract_methods): Use DECL_NAME for wfl or current
7406         method. Changed error message on method redefinition.
7407         (currently_caught_type_list): New static variable.
7408         (java_complete_expand_methods): Purge unchecked exceptions from
7409         throws clause list. Call PUSH_EXCEPTIONS before walk and
7410         POP_EXCEPTIONS after.
7411         (resolve_qualified_expression_name): Pass new argument as NULL to
7412         patch_method_invocation_stmt.
7413         (patch_method_invocation_stmt): New argument ref_decl. Invoke
7414         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
7415         argument list when appropriate. Use new argument if non null to
7416         store selected method decl.
7417         (patch_invoke): Convert if necessary args of builtin types before
7418         forming CALL_EXPR. Argument list no longer reversed here.
7419         (invocation_mode): Treat final methods as static methods.
7420         (java_complete_tree): New cases for THROW_EXPR: and
7421         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
7422         function call.
7423         (complete_function_arguments): No more RECORD_TYPE
7424         conversion. Function parameter nodes no longer saved.
7425         (valid_ref_assignconv_cast_p): Avoid handling null type.
7426         (patch_binop): Fixed null constant reference handling.
7427         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
7428         BUILD_THROW macros.
7429         (patch_try_statement): Fixed comments. Record caught types in
7430         list, push the list, expand try block and pop the list.
7431         (patch_synchronized_statement, patch_throw_statement,
7432         check_thrown_exceptions, check_thrown_exceptions_do,
7433         purge_unchecked_exceptions): New functions.
7434         * typeck.c (lookup_argument_method): Allow WFL in place of method
7435         DECL_NAME during method definition check
7436
7437 1998-10-09  Tom Tromey  <tromey@cygnus.com>
7438
7439         * gjavah.c (decode_signature_piece): New function.
7440         (print_c_decl): Use it.  Added `name_override' argument.
7441         (print_method_info): Use name_override argument to print_c_decl.
7442         (seen_fields): Removed.
7443         (print_field_info): Don't update seen_fields.
7444         (struct method_name): New structure.
7445         (method_name_list): New global.
7446         (print_method_info): Add new method to list of methods.
7447         (name_is_method_p): New function.
7448         (print_field_info): If field name has same name as method, then
7449         change field name.
7450         (process_file): Parse methods before fields.
7451         (field_pass): New global.
7452         (HANDLE_END_FIELD): Take field_pass into account.
7453
7454 Wed Oct  7 12:10:48 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7455
7456         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
7457         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
7458
7459 Sat Oct  3 13:29:46 1998  Anthony Green  <green@cygnus.com>
7460
7461         * jvspec.c: Fix bug in jvgenmain_spec patch.
7462
7463 Fri Oct  2 17:22:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7464
7465         * Makefile.in (lang.o:): Install dependency on java-tree.def.
7466         * decl.c (soft_exceptioninfo_call_node): New global variable.
7467         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
7468         takes extra integer argument. soft_exceptioninfo_call_node
7469         initialized.
7470         * except.c (java_set_exception_lang_code): New function
7471         (method_init_exceptions): Called here.
7472         (prepare_eh_table_type): New function.
7473         (expand_end_java_handler): Called here.
7474         * expr.c (build_java_throw_out_of_bounds_exception): Now features
7475         one argument. Modified generation of call to
7476         soft_badarrayindex_node to use new argument.
7477         (build_java_arrayaccess): Pass faulty index value to
7478         build_java_throw_out_of_bounds_exception.
7479         (generate_name): New function.
7480         (java_lang_expand_expr): New local variables node, current,
7481         has_finally_p. Expand TRY_EXPR node.
7482         (process_jvm_instruction): Replace top of the stack with thrown
7483         object reference when entering exception handler.
7484         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
7485         specific tree codes.
7486         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
7487         global.
7488         (DECL_SPECIFIC_COUNT): New macro.
7489         (prepare_eh_table_type, java_set_exception_lang_code,
7490         generate_name): New function declarations.
7491         (match_java_method): Declaration deleted.
7492         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
7493         macros.
7494         * lex.c (TRY_TK, CATCH_TK): Generate location information.
7495         * parse.h (redefinition_error, refine_accessible_methods_list,
7496         can_cast_to_p): Function declaration removed.
7497         (classitf_redefinition_error, variable_redefinition_error,
7498         parse_jdk1_1_error, find_applicable_accessible_methods_list,
7499         find_most_specific_methods_list, argument_types_convertible,
7500         enter_a_block, valid_builtin_assignconv_identity_widening_p,
7501         valid_cast_to_p, valid_method_invocation_conversion_p,
7502         try_reference_assignconv, add_stmt_to_compound,
7503         build_jump_to_finally, build_tree_list, patch_try_statement,
7504         java_get_catch_block): New function declarations.
7505         * parse.y (string_buffer_type): Global variable deleted.
7506         (group_of_labels, catches, catch_clause, catch_clause_parameter,
7507         finally): Rules tagged <node>.
7508         (TRY_TK, CATCH_TK): Token tagged <operator>.
7509         (class_body_declaration:, class_member_declaration:,
7510         formal_parameter:, explicit_constructor_invocation:,
7511         interface_member_declaration:, constant_declaration:,
7512         primary_no_new_array:, class_instance_creation_expression:,
7513         array_creation_expression:): Issue error on unsuported JDK1.1
7514         features.
7515         (try_statement:, catches:, finally:): Define actions.
7516         (catch_clause_parameter): New rule.
7517         (catch_clause:): Use new rule catch_clause_parameter.
7518         (parse_jdk1_1_error): New function.
7519         (redefinition_error): Renamed classitf_redefinition_error.
7520         (variable_redefinition_error): New function.
7521         (check_class_interface_creation): Call
7522         classitf_redefinition_error.
7523         (java_complete_tree): Added error message on JDEP_TYPE: case.
7524         (complete_class_report_errors): Fixed indentation.
7525         (declare_local_variables): Call variable_redefinition_error.
7526         (source_end_java_method): Call java_set_exception_lang_code and
7527         emit_handlers where appropriate.
7528         (java_method_add_stmt): Call add_stmt_to_block.
7529         (add_stmt_to_block): New function.
7530         (lookup_method_invoke): Fixed outside comment. new local variable
7531         candicates.  Call find_applicable_accessible_methods_list and
7532         find_most_specific_methods_list when searching for a
7533         method. Modified error report to list possible candidates when
7534         applicable.
7535         (find_applicable_accessible_methods_list,
7536         find_most_specific_methods_list, argument_types_convertible): New
7537         function.
7538         (refine_accessible_methods_list): Function deleted.
7539         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
7540         expr (if applicable) before calling patch_array_ref.
7541         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
7542         (enter_block): Fixed comment.
7543         (enter_a_block): New function.
7544         (patch_assignment): Reorganized. Call try_reference_assignconv for
7545         references. Call valid_cast_to_p instead of can_cast_to_p.
7546         (try_reference_assignconv,
7547         valid_builtin_assignconv_identity_widening_p): New functions.
7548         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
7549         (valid_cast_to_p, valid_method_invocation_conversion_p): New
7550         functions.
7551         (build_string_concatenation): Don't resolve StringBuffer.
7552         (patch_cast): Fixed inverted arguments.
7553         (patch_array_ref): Code to save array expr deleted. Call
7554         valid_cast_to_p instead of can_cast_to_p.
7555         (generate_labeled_block): Call generate_name.
7556         (build_jump_to_finally, build_try_statement, java_get_catch_block,
7557         patch_try_statement): New functions.
7558         * typeck.c (match_java_method): Function deleted.
7559
7560 Fri Oct  2 13:48:36 1998  Anthony Green  <green@cygnus.com>
7561
7562         * jvspec.c: jvgenmain_spec uses different temporary file names.
7563
7564 Fri Oct  2 12:50:19 1998  Anthony Green  <green@cygnus.com>
7565
7566         * jvspec.c (lang_specific_driver): Fail if user specifies
7567         --main= when not linking.
7568
7569 Mon Sep 28 13:48:33 1998  Tom Tromey  <tromey@cygnus.com>
7570
7571         * class.c (make_class_data): Push value for `thread' field.
7572         * decl.c (init_decl_processing): Added `thread' field to class.
7573
7574         * class.c (add_field): Always make static fields externally
7575         visible.
7576
7577 Sat Sep 26 08:22:47 1998  Anthony Green  <green@cygnus.com>
7578
7579         * expr.c (build_java_athrow,
7580         build_java_throw_out_of_bounds_exception, expand_invoke,
7581         build_newarray, expand_java_multianewarray, build_java_monitor):
7582         Update comments to reflect _Jv_* function names.
7583
7584 Fri Sep 25 16:03:02 1998  Per Bothner  <bothner@cygnus.com>
7585
7586         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
7587         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
7588         * parse.y (expand_start_java_method):  Likewise.
7589
7590 Thu Sep 24 12:20:35 1998  Per Bothner  <bothner@cygnus.com>
7591
7592         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
7593
7594         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
7595         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
7596         * expr.c:  Remove no-longer-needed calls to promote_type.
7597         * decl.c (give_name_to_locals):  Liekwise.
7598         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
7599         * parse.y:  Add/remove promote_type calls as appropriate.
7600         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
7601         (parse_signature_string):  Likewise.
7602         (build_java_array_type):  Fix for now signature convenions.
7603
7604         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
7605
7606 Wed Sep 23 14:49:35 1998  Tom Tromey  <tromey@cygnus.com>
7607
7608         * class.c (init_class_processing): libjava function renamed to
7609         _Jv_RegisterClass.
7610
7611 Tue Sep 22 12:00:02 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7612
7613         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
7614         * java-tree.def: Fixed DEFTREECODE third argument.
7615         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
7616         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
7617         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
7618         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
7619         JAVA_THIS_EXPR): Now replaced by tree code definitions.
7620         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
7621         * lang.c (java_tree_code_type, java_tree_code_length,
7622         java_tree_code_name): New arrays.
7623         (lang_init): Append Java tree node definitions to Gcc ones.
7624         * lex.c (expression_obstack): Declared as extern when JC1_LITE
7625         defined.
7626         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
7627         wfl_to_string.
7628         (java_lex): Allow declaration of empty string constants. Retain
7629         location information on CASE_TK and DEFAULT_TK.
7630         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
7631         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
7632         Modified to be more robust.
7633         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
7634         (build_new_invocation, try_builtin_assignconv,
7635         patch_switch_statement, string_constant_concatenation,
7636         build_string_concatenation, patch_string_cst, patch_string,
7637         java_expand_switch): New function declarations.
7638         * parse.y: Rules related to switch and EH tagged <node>.
7639         (label_id): Set to NULL_TREE
7640         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
7641         tree nodes.
7642         (this_or_super:): Fixed indentation.
7643         (statement:, statement_nsi:, statement_without_trailing_substatement:,
7644         statement_expression:): Removed call to RULE on all sub-rules.
7645         (switch_expression:, switch_labels:): New rules.
7646         (switch_statement:, switch_block:, switch_block_statement_groups:,
7647         switch_block_statement_group:, switch_labels:, switch_label:):
7648         Defined actions.
7649         (throw_statement:, synchronized_statement:, try_statement:):
7650         Defined temporary actions.
7651         (class_instance_creation_expression:): Call
7652         build_new_invocation. Fixed indentation.
7653         (field_access): Fixed indentation.
7654         (method_invocation): Likewise.
7655         (make_qualified_primary): Use THIS_EXPR.
7656         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
7657         resolving from SUPER, set *type_found.
7658         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
7659         (java_complete_tree): Removed unused local variable `location'. Case
7660         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
7661         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
7662         on MODIFY_EXPR: and all binary operator tree code cases. Removed
7663         STRING_CST: case. default: checks for patchable strings.
7664         (complete_function_arguments): Transform string constant or
7665         crafted StringBuffer if necessary.
7666         (build_method_invocation): Fixed comments.
7667         (build_new_invocation): New function.
7668         (patch_assignment): Call try_builtin_assignconv to figure a valid
7669         assignment conversion between builtin types.
7670         (try_builtin_assignconv): New function.
7671         (build_binop): Use URSHIFT_EXPR directly to call build.
7672         (operator_string): Use UNARY_PLUS_EXPR.
7673         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
7674         operator.
7675         (do_merge_string_cste, merge_string_cste,
7676         string_constant_concatenation, build_string_concatenation,
7677         patch_string, patch_string_cst): New function.
7678         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
7679         (patch_unaryop): Likewise. New test of valid ++/-- operands.
7680         (build_newarray_node): Use NEW_ARRAY_EXPR.
7681         (build_this): Use THIS_EXPR.
7682         (build_return): Enable debug information on return statement.
7683         (build_if_else_statement): Likewise.
7684         (complete_labeled_statement): Fixed related comment.
7685         (build_loop_body): Fixed comment.
7686         (build_bc_statement): Enable debug information on break/continue
7687         statements.
7688         (patch_bc_statement): Fixed typos. Handle SWITCH statement
7689         context.
7690         (patch_switch_statement, case_identity, java_expand_switch): New
7691         functions.
7692
7693 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
7694
7695         * buffer.h (BUFFER_INIT):  New macro.
7696         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
7697         Pass (struct jcf_partial *state) to most functions.
7698         (jcf_block, jcf_relocation):  New types.
7699         Support labels, branches, conditionals, loops.
7700
7701 Mon Sep 21 15:08:48 1998  Tom Tromey  <tromey@cygnus.com>
7702
7703         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
7704
7705 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
7706
7707         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
7708         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
7709         not integer_type_node (INT_TYPE_SIZ bits).
7710
7711         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
7712
7713         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
7714         * jcf-dump.c (print_exception_table):  New function.
7715         (disassemble_method):  Better handling of wide instructions.
7716         Make more robust for bad input.
7717
7718 Wed Sep 30 20:53:51 1998  Jeffrey A Law  (law@cygnus.com)
7719
7720         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
7721         FreeBSD.
7722
7723 Thu Sep 17 19:45:01 1998  Jeffrey A Law  (law@cygnus.com)
7724
7725         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
7726
7727 Thu Sep 17 16:21:52 1998  Tom Tromey  <tromey@cygnus.com>
7728
7729         * Makefile.in ($(PARSE_H)): Removed target.
7730
7731 Thu Sep 17 01:57:07 1998  Jeffrey A Law  (law@cygnus.com)
7732
7733         * Makefile.in (JAVA_OBJS): Add memmove.o
7734         (memmove.o): New target & rules.
7735
7736 Tue Sep 15 23:21:55 1998  Tom Tromey  <tromey@cygnus.com>
7737
7738         * expr.c (expand_invoke): Don't generate a call to the class init
7739         code.
7740
7741 Mon Sep 14 10:14:47 1998  Jeffrey A Law  (law@cygnus.com)
7742
7743         * Makefile.in: Add many missing dependencies.
7744         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
7745         as appropriate.
7746         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
7747         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
7748
7749 Fri Sep 11 14:05:21 1998  Per Bothner  <bothner@cygnus.com>
7750
7751         * decl.c (complete_start_java_method):  If method is static (and
7752         not private) call _Jv_InitClass.
7753         * expr.c (expand_invoke):  Don't call build_class_init.
7754
7755         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
7756
7757 Thu Sep 10 10:33:31 1998  Jeffrey A Law  (law@cygnus.com)
7758
7759         * Make-lang.in (GCJ): Define before using.
7760
7761 Wed Sep  9 21:23:10 1998  Jeffrey A Law  (law@cygnus.com)
7762
7763         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
7764         losing due to namespace pollution in GNU getopt.h
7765
7766 Wed Sep  9 13:33:39 1998  Tom Tromey  <tromey@cygnus.com>
7767
7768         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
7769         (java.all.cross): Likewise.
7770         (java.rest.encap): Likewise.
7771
7772 Tue Sep  8 10:34:05 1998  Jeffrey A Law  (law@cygnus.com)
7773
7774         * gjavah.c (print_class_decls): Fix thinko in arglist
7775         * jcv-io.c (find_classfile): Similarly.
7776
7777 Mon Sep  7 13:59:49 1998  Jeffrey A Law  (law@cygnus.com)
7778
7779         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
7780
7781 Sat Sep  5 16:08:01 1998  Tom Tromey  <tromey@cygnus.com>
7782
7783         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
7784         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
7785         * Makefile.in (PARSE_C): New macro.
7786         (PARSE_H): Likewise.
7787         (PARSE_SCAN_C): Likewise.
7788         ($(PARSE_C)): Target renamed from parse.c.
7789         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
7790         (clean): Remove parse-scan.c as well.
7791         (parse.o): Depend on $(PARSE_C).
7792
7793 Sat Sep  5 08:48:40 1998  Anthony Green  <green@cygnus.com>
7794
7795         * README, license.terms: Removed.
7796
7797         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
7798         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
7799         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
7800         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
7801         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
7802         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
7803         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
7804         and Java trademark attribution.
7805
7806 Fri Sep  4 10:42:05 1998  Tom Tromey  <tromey@cygnus.com>
7807
7808         * Makefile.in: Use gcjh, not gjavah.
7809         * config-lang.in (stagestuff): Use gcjh, not gjavah.
7810         * Make-lang.in: Changed gjavah to gcjh everywhere.
7811
7812 Thu Sep  3 18:04:09 1998  Per Bothner  <bothner@cygnus.com>
7813
7814         * gjavah.c:  Support new -prepend -add -append flags.
7815         (print_method_info):  Method is not virtual if class is final.
7816
7817 Thu Sep  3 12:03:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7818
7819         * jv-scan.c: Fixed copyright assignment.
7820         * keyword.gperf: Likewise.
7821         * keyword.h: Likewise.
7822         * lex.c: Fixed copyright assignment.
7823         (java_lex): Push unicode back when parsing '<'.
7824         * lex.h: Fixed copyright assignment.
7825         * parse-scan.y: Likewise.
7826         * parse.h: Fixed copyright assignment.
7827         (build_debugable_stmt, complete_for_loop): New function prototypes.
7828         * parse.y: Fixed copyright assignment.
7829         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
7830         size_zero_node when completing a loop with no exit condition.
7831         (for_statement_nsi:): Define action.
7832         (for_init:, for_update:): Return size_zero_node when empty.
7833         (declare_local_variables): Call build_debugable_stmt.
7834         (build_debugable_stmt): New function.
7835         (build_loop_body): Build debugable statement around loop
7836         condition part.
7837         (complete_loop_body): Take into account the debugable statement
7838         around the EXIT_EXPR.
7839         (complete_loop_body): New function.
7840         (patch_exit_expr): Fixed condition inversion.
7841
7842 Wed Sep  2 11:53:58 1998  Tom Tromey  <tromey@cygnus.com>
7843
7844         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
7845         name of thread define.
7846         * jvspec.c (THREAD_NAME): New macro.
7847         (GCLIB): Likewise.
7848         (THREADLIB): Likewise.
7849         (lang_specific_driver): Recognize attempt to link with thread
7850         library or gc library.  Recognize -ljava on command line so it
7851         isn't linked against more than once.
7852
7853 Wed Sep  2 11:28:35 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7854
7855         * parse-scan.y (report_main_declaration): Name of the class
7856         containing `main' can be a qualified name.
7857
7858 Mon Aug 31 13:25:58 1998  Tom Tromey  <tromey@cygnus.com>
7859
7860         * config-lang.in: Changed gjavac to gjc everywhere.
7861         * Make-lang.in: Changed gjavac to gjc everywhere.
7862
7863 Thu Aug 27 02:28:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7864
7865         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
7866         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
7867         and install the files.
7868         * Makefile.in (JAVA_OBJS_LITE): New variable.
7869         (compiler:): Now include jv-scan as a dependency.
7870         (../jv-scan$(exeext), parse-scan.c): New targets.
7871         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
7872         * config-lang.in (compilers): Removed gcj, gjavah from the list.
7873         * jcf-parse.c (parse_source_file): Call java_layout_classes and
7874         check for errors even if parse_only.
7875         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
7876         defined.
7877         (yylex): New function. Uses java_lex body.
7878         (java_lex): Removed commented out statement. Remove local variable
7879         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
7880         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
7881         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
7882         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
7883         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
7884         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
7885         where appropriate.
7886         (java_lex_error): Empty if JC1_LITE is defined.
7887         (java_get_line_col): Return 0 if JC1_LITE is defined.
7888         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
7889         SET_MODIFIER_CTX): Moved into the section containing the macros
7890         conditionally defined by JC1_LITE.
7891         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
7892         argument if JC1_LITE is defined.
7893         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
7894         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
7895         is defined.
7896         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
7897         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
7898         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
7899         to different values according to JC1_LITE.
7900         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
7901         declared if JC1_LITE set.
7902         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
7903         defined if JC1_LITE not set.
7904         (struct parser_ctx): Reorganized and skip the jc1 front end part
7905         if JC1_LITE set.
7906         (java_layout_classes): New function definition.
7907         (java_push_parser_context, java_init_lex, yyparse, yylex,
7908         yyerror): Prototype always declared. All other static function
7909         prototypes declared only if JC1_LITE is not set.
7910         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
7911         declared in parse.h.
7912         (java_layout_classes): New function.
7913         (java_complete_expand_methods): No longer layout the class here.
7914         * parse-scan.y: New file.
7915         * jv-scan.c: New file.
7916
7917 Tue Aug 25 10:17:54 1998  Tom Tromey  <tromey@cygnus.com>
7918
7919         * gjavah.c (main): Handle -friend option.
7920         (friend_specs): New global.
7921         (generate_access): Handle friend_specs.
7922         (process_file): Likewise.
7923         (MAX_FRIENDS): New macro.
7924         (friend_count): New global.
7925         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
7926         Changed all callers.
7927
7928 Mon Aug 24 20:19:27 1998  Per Bothner  <bothner@cygnus.com>
7929
7930         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
7931         (main):  Handle processing all the entries of a named .zip archive.
7932         * jcf-io.c (jcf_trim_old_input):  New function.
7933         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
7934
7935 Mon Aug 24 07:35:13 1998  Per Bothner  <bothner@cygnus.com>
7936
7937         * lang.c (flag_assume_compiled):  Make default be on.
7938
7939 Fri Aug 21 17:29:04 1998  Per Bothner  <bothner@cygnus.com>
7940
7941         * jcf-dump.c:  Add bunches of flags to control output more.
7942         (process_class):  New function;  support printing more than one class.
7943         (main): Support new --print-main and --javap flags.
7944         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
7945         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
7946
7947 Thu Aug 20 14:24:47 1998  Per Bothner  <bothner@cygnus.com>
7948
7949         Change mangling of dispatch table to match C++ vtable (w/thunks).
7950         * class.c (build_dtable_decl), java-tree.h:  New function.
7951         (make_class_data):  Call it.
7952         * decl.c (init_decl_processing):  Likewise.
7953
7954 Wed Aug 19 17:57:07 1998  Warren Levy  <warrenl@cygnus.com>
7955
7956         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
7957         soft_anewarray; adjust args passed.
7958         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
7959         match _Jv_NewObjectArray.
7960
7961 Wed Aug 19 09:33:23 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7962
7963         * decl.c (push_labeled_block, pop_labeled_block): New functions.
7964         * expr.c (loopup_label): Call create_label_decl.
7965         (create_label_decl): New function.
7966         (java_lang_expand_expr): Call expand_start_bindings with argument
7967         set to zero.
7968         * java-tree.h Added space after PROTO in function declarations
7969         when necessary.
7970         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
7971         (create_label_decl, push_labeled_block): New function
7972         declarations.
7973         * lex.c (label_id): Initialize.
7974         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
7975         switch.
7976         * parse.h Added space after PROTO in function declarations when
7977         necessary.
7978         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
7979         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
7980         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
7981         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
7982         macros.
7983         (struct parser_ctxt): New fields current_loop,
7984         current_labeled_block.
7985         (build_if_else_statement, patch_if_else_statement,
7986         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
7987         generate_labeled_block, complete_labeled_statement,
7988         build_bc_statement, patch_bc_statement, patch_loop_statement,
7989         build_new_loop, build_loop_body, complete_loop_body): New function
7990         declarations.
7991         * parse.y (java_warning_count): New global variable.
7992         (label_id): New static variable.
7993         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
7994         (block:): Return size_zero_node when block is empty.
7995         (empty_statement:): Return size_zero_node.
7996         (statement:): Implement supplemental action when for_statement: is
7997         reduced.
7998         (label_decl:): New rule.
7999         (labeled_statement:): Rewritten using label_decl. Actions
8000         implemented.
8001         (labeled_statement_nsi:): Likewise.
8002         (if_then_statement): Actions implemented.
8003         (while_expression): New rule.
8004         (while_statement:): Rewritten using while_expression. Actions
8005         implemented.
8006         (while_statement_nsi:): Likewise.
8007         (do_statement_begin:): New rule.
8008         (do_statement:): Rewritten using do_statement_begin. Actions
8009         implemented.
8010         (for_statement:): Rewritten using for_begin. Actions implemented.
8011         (for_statement_nsi:): Likewise.
8012         (for_header:, for_begin:): New rules.
8013         (for_init:): Actions implemented.
8014         (statement_expression_list:, break_statement:,
8015         continue_statement:): Likewise.
8016         (yyerror): Count number of issued warning(s).
8017         (java_report_errors): Report error(s) and/or warning(s).
8018         (java_complete_class): Use build_java_argument_signature to
8019         recompute completed method signature.
8020         (java_check_regular_methods): New locals method_wfl and aflags.
8021         Use method_wfl instead of lookup_cl during error reports. Fixed
8022         indentation and modified some error messages. Use
8023         lang_printable_name in method instead of the DECL_NAME. New code
8024         to issue warnings on methods not overriding corresponding methods
8025         private to a different package.
8026         (java_method_add_stmt): Call add_stmt_to_compound.
8027         (add_stmt_to_compound): New function.
8028         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
8029         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
8030         (build_if_else_statement, patch_if_else_statement,
8031         build_labeled_block, generate_labeled_block,
8032         complete_labeled_statement, build_new_loop, build_loop_body,
8033         complete_loop_body, patch_loop_statement, build_bc_statement,
8034         patch_bc_statement, patch_exit_expr): New functions.
8035         * typeck.c (build_java_signature): Build argument signature before
8036         enclosing it in between parenthesis.
8037
8038 Mon Aug 17 17:44:24 1998  Warren Levy  <warrenl@cygnus.com>
8039
8040         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
8041         (JAVA_OBJS): Added reminder comment
8042
8043 Thu Aug 13 10:01:45 1998  Nick Clifton  <nickc@cygnus.com>
8044
8045         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
8046         be interpreted as a long long.
8047
8048 Thu Aug 13 14:34:07 1998  Warren Levy  <warrenl@cygnus.com>
8049
8050         * decl.c (init_decl_processing): Use _Jv_InitClass, not
8051         soft_initialise_class.  Use _Jv_NewMultiArray, not
8052         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
8053         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
8054         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
8055         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
8056
8057 Wed Aug 12 14:23:13 1998  Per Bothner  <bothner@cygnus.com>
8058
8059         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
8060         length_identifier_node):  New global tree node constants.
8061         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
8062         Replace uses by super_identifier_node etc.
8063         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
8064
8065         * parse.y (resolve_field_access):  Don't special-case ".length" if
8066         flag_emit_class_files.
8067         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
8068         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
8069         and ARRAY.length.
8070
8071 Tue Aug 11 11:31:55 1998  Per Bothner  <bothner@cygnus.com>
8072
8073         * decl.c (init_decl_processing): Remove unused method_type_node fields.
8074         * class.c (make_method_value):  Remove init for removed fields.
8075
8076         * class.c (layout_class):  Use build_java_argument_signature.
8077         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
8078
8079         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
8080         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
8081         (build_java_signature):  Don't use push_java_argument_signature.
8082
8083         * typeck.c (lookup_argument_method):  New function.
8084         * parse.y (java_check_regular_methods):  Use lookup_argument_method
8085         instead of lookup_java_method2 followed by lookup_java_method.
8086
8087         * parse.y (check_method_redefinition):  Minor optimization.
8088
8089         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
8090         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
8091
8092 Mon Aug 10 09:57:15 1998  Tom Tromey  <tromey@cygnus.com>
8093
8094         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
8095         c-pragma.o.
8096
8097         * gjavah.c (java_float_finite): Use K&R-style definition.
8098         (java_double_finite): Likewise.
8099         (generate_access): Now returns void.  Changed all callers.
8100         (last_access_generated): Removed.
8101         (process_file): Only make a single pass over the .class file.
8102
8103 Wed Jul 29 17:50:23 1998  Per Bothner  <bothner@cygnus.com>
8104
8105         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
8106         for compatibility for G++ (with -fvtable-thunks).
8107         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
8108
8109         * gjavah.c (process_file):  Use public inheritance for super-class.
8110
8111 Wed Jul 29 13:19:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8112
8113         * lex.c (java_init_lex): Initialize ctxp->package.
8114         * parse.h (struct parser_ctxt): package and package_len replaced
8115         by tree package, an identifier node. Field method_decl_list is
8116         gone. Fixed comments.
8117         (lookup_field_wrapper, merge_qualified_name, not_accessible,
8118         class_in_current_package): New function prototypes.
8119         * parse.y (array_type:): Set class loaded flag on primitive type
8120         arrays.
8121         (package_declaration:): Assign ctxp->package to the
8122         identifier node.
8123         (method_invocation:): Handle invocation of method qualified by
8124         `super'.
8125         (single_type_import_declaration:): Removed ambiguity check.
8126         (java_pop_parser_context): New local variable `next'. Reset and
8127         set IMPORT_CLASSFILE_NAME flags on current and previous import
8128         list.
8129         (java_accstring_lookup): Use new local macro COPY_RETURN.
8130         (lookup_field_wrapper): New function.
8131         (parser_qualified_classname): Use merge_qualified_name.
8132         (parser_check_super_interface): Broaden error message.
8133         (do_resolve_class): Check for qualified class name in the current
8134         compilation unit if appropriate.
8135         (process_imports): Check for already defined classes.
8136         (check_pkg_class_access): Got rid of call to
8137         get_access_flags_from_decl.
8138         (java_complete_expand_methods): Call safe_layout_class based on
8139         the current class size.
8140         (make_qualified_primary): Build a WFL qualification on primary if
8141         none exists.
8142         (merge_qualified_name): New function.
8143         (make_qualified_name): Use merge_qualified_name.
8144         (resolve_expression_name): Use safe_lookup_field.
8145         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
8146         (resolve_qualified_expression_name): Likewise. Check on resolved
8147         element accessibility.
8148         (not_accessible_p, class_in_current_package): New functions.
8149         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
8150         (patch_method_invocation_stmt): Merged common pieces. Check
8151         accessibility of invoked method.
8152         (check_for_static_method_reference): Add returned type in error
8153         message.
8154         (invocation_mode): Get rid of bogus check on PRIVATE methods.
8155         (refine_accessible_methods_list): Merged two conditions in test.
8156         (java_complete_class): Sanity check on stabilize_ref gone.
8157         * zextract.c (read_zip_archive): Cast lseek second argument to long.
8158
8159 Tue Jul 28 21:39:22 1998  Per Bothner  <bothner@cygnus.com>
8160
8161         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
8162
8163 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
8164
8165         * gjavah.c (F_NAN): Removed.
8166         (F_NAN_MASK): New macro.
8167         (F_POSITIVE_INFINITY): Removed.
8168         (F_NEGATIVE_INFINITY): Likewise.
8169         (java_float_finite): Rewrote.
8170         (D_NAN_MASK): Renamed.
8171         (java_double_finite): Rewrote.
8172         (D_POSITIVE_INFINITY): Removed.
8173         (D_NEGATIVE_INFINITY): Likewise.
8174
8175         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
8176         If verbose, print underlying representation of value in hex.
8177
8178 Fri Jul 24 14:14:32 1998  Per Bothner  <bothner@cygnus.com>
8179
8180         * buffer.h, buffer.c:  New files.
8181         * Makefile.in (JAVA_OBJS):  Add buffer.o.
8182
8183         Support locals variables and writing their debug entries to .class.
8184         * jcf-write.c:  Simplify some by user new buffer type.
8185         (vode_buffer_grow):  Removed.
8186         (struct localvar_info):  New type.
8187         (localsvars, localvartable):  New buffers.
8188         (localvar_alloc, localvar_free):  New functions.
8189         (generate_bytecode_insns):  Handle local variables.
8190         (generate_classfile):  Write LocalVariableTable attribute.
8191
8192 Fri Jul 24 13:46:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8193
8194         * jcf-io.c (open_in_zip): Check the zipfile magic number.
8195         * zipfile.h (ZIPMAGIC): New macro.
8196
8197 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
8198
8199         * Makefile.in (gjavah.o): Updated dependencies.
8200         (jcf-dump.o): Likewise.
8201         (all.indirect): Use ../gjavah.
8202         (../gjavah$(exeext)): Likewise.
8203         (clean): Don't remove gjavah.
8204         (clean): Remove parse.c, not java/parse.c.
8205         * Make-lang.in (java): Added gjavah.
8206         (gjavah$(exeext)): New target.
8207         (GJAVAH_SOURCES): New macro.
8208         (java.all.build): Added gjavah.
8209         (java.all.cross): Likewise.
8210         (java.rest.encap): Likewise.
8211         * config-lang.in (compilers, stagestuff): Added gjavah.
8212
8213 Thu Jul 23 18:33:56 1998  Tom Tromey  <tromey@cygnus.com>
8214
8215         * gjavah.c (java_float_finite): New function.
8216         (java_double_finite): Likewise.
8217         (F_POSITIVE_INFINITY): New macro.
8218         (F_NEGATIVE_INFINITY): Likewise.
8219         (F_NAN): Likewise.
8220         (D_POSITIVE_INFINITY): Likewise.
8221         (D_NEGATIVE_INFINITY): Likewise.
8222         (D_NAN): Likewise.
8223         (print_field_info): Use java_float_finite and java_double_finite.
8224
8225 Thu Jul 23 15:28:24 1998  Per Bothner  <bothner@cygnus.com>
8226
8227         * parse.y (method_header):  Name "this" implicit argument.
8228
8229 Wed Jul 22 15:47:30 1998  Per Bothner  <bothner@cygnus.com>
8230
8231         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
8232         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
8233         (put_linenumber):  New function.
8234         (generate_bytecode_insns, generate_classfile):  Write line numbers.
8235
8236 Wed Jul 22 14:39:00 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8237
8238         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
8239         (lookup_name, build_known_method_ref, build_class_init,
8240         build_invokevirtual, invoke_build_dtable, match_java_method,
8241         build_field_ref, pushdecl_force_head, build_java_binop,
8242         binary_numeric_promotion, build_decl_no_layout,
8243         build_java_arrayaccess, build_newarray, build_anewarray,
8244         build_java_array_length_access, build_java_arraynull_check): New
8245         extern function prototypes.
8246         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
8247         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
8248         java-tree.h.
8249         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
8250         to NULL
8251         * jcf.h (jcf_out_of_synch): New extern function prototype.
8252         * parse.h: Static/global function implemented in parse.y
8253         prototyped and declarations moved at the end of the file.
8254         (DECL_P): Check that the argument isn't null.
8255         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
8256         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
8257         (QUAL_DECL_TYPE): New macro.
8258         (PARAMS): Macro definition removed.
8259         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
8260         (return_statement:): Call build_return.
8261         (field_access:): Call make_qualified_primary in sub rule.
8262         (method_invocation:): Build method invocation and call
8263         make_qualified_primary when processing primaries.
8264         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
8265         get_type_from_signature.
8266         (java_check_regular_method): Extra integer 0 argument when calling
8267         lookup_java_method2.
8268         (lookup_java_interface_method2): Extra method DECL argument when
8269         calling lookup_java_interface_method2.
8270         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
8271         COMPOUND_EXPR node.
8272         (java_complete_expand_method): Layout current class iff not
8273         already done. Don't process interface's methods.
8274         (java_complete_expand_method): Use super class only if it
8275         exists. Use current class otherwise.
8276         (make_qualified_primary): New function.
8277         (resolve_expression_name): Process qualified expression or
8278         expression from primary the same way.
8279         (resolve_expression_name): Two last arguments to
8280         resolve_field_access are now NULL_TREEs.
8281         (resolve_field_access): New variable is_static. Local field must
8282         be DECLs. is_static computed on field DECLs only. Append code in
8283         where_found to the field access if necessary. Use QUAL_DECL_TYPE
8284         to initialize field_type.
8285         (resolve_qualified_expression_name): New local variable,
8286         previous_call_static and is_static. Handle primaries with function
8287         calls, casts, array references and `this'. `super' now handled as
8288         `(super_class)this'. Use is_static to clarify boolean expressions.
8289         Added code to handle case where a proper handle is required to
8290         access a field. Use QUAL_DECL_TYPE where applicable.
8291         (maybe_access_field): New function.
8292         (patch_method_invocation_stmt): New arguments primary, where,
8293         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
8294         deleted. Use `where' as a type to search from if specified. Check
8295         for static method reference where forbidden. Append primary or
8296         current_this to the argument list if not calling constructor nor
8297         static methods.
8298         (check_for_static_method_reference): New function.
8299         (patch_invoke): Layout the class on which new is done if
8300         necessary.
8301         (lookup_method_invoke): Changed format to report errors on
8302         methods.
8303         (qualify_ambiguous_name): New local variable this_found. Now
8304         handle things from primaries. Method call are considered
8305         expression names.
8306         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
8307         changed into NULLs.
8308         (not_initialized_as_it_should_p): Comply with the new DECL_P.
8309         (java_complete_tree): New case fo RETURN_EXPR. Process function
8310         call arguments in separate function.
8311         (complete_function_arguments): New function.
8312         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
8313         anymore.
8314         (patch_assignment): Take the return function slot into account as
8315         a RHS. Distinguish assignment from a return.
8316         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
8317         when checking methods in interfaces.
8318         (resolve_type_during_patch): NULL argument to unresolve_type_p
8319         instead of NULL_TREE.
8320         (patch_newarray): Fixed typo in comment.
8321         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
8322         (build_return, patch_return): New functions.
8323         * typeck.c (lookup_java_constructor): Fixed typo in comment.
8324
8325 Tue Jul 21 12:10:04 1998  Per Bothner  <bothner@cygnus.com>
8326
8327         * constants.c (find_name_and_type_constant, find_fieldref_index,
8328         find_methodref_index):  New methods.
8329         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
8330         just return given method.  Also, rename to build_known_method_ref.
8331         (expand_invoke):  Rename call to build_invoke_non_interface.
8332         * java-tree.h, parse.h:  Update prototype.
8333         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
8334         (such as expand_expr_stmt) if flag_emit_class_files.
8335         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
8336         STACK_TARGET, IGNORE_TARGET):  New macros.
8337         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
8338         (generate_bytecode_insn):  New function to generate method's bytecode.
8339         (generate_classfile):  Node generate Code attribute for a method.
8340         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
8341         push_long_const, field_op, adjust_typed_op, maybe_wide):
8342         New functions used by generate_bytecode_insn.
8343
8344         * typeck.c (signature_include_return):  Remove variable.
8345         (push_java_argument_signature, build_java_argument_signature):  New.
8346         (build_java_signature):  Use push_java_argument_signature.
8347         * parse.y:  Use build_java_argument_signature instead of fiddling
8348         with signature_include_return.
8349
8350 Fri Jul 17 09:48:51 1998  Tom Tromey  <tromey@cygnus.com>
8351
8352         * gjavah.c (print_c_decl): Always generate JArray<>* for array
8353         types.
8354
8355         * Makefile.in (all.indirect): Added gjavah$(exeext).
8356         (gjavah$(exeext)): Added $(exeext).
8357         (clean): Likewise.
8358
8359 Thu Jul 16 15:29:20 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8360
8361         * class.c (layout_class): Call to java_layout_parsed_class replace
8362         by safe_layout_class.
8363         * expr.c (build_java_array_length_access): Removed static storage
8364         class in the function definition.
8365         (build_java_arraynull_check): Likewise.
8366         Also fixed typos in two comments.
8367         * lex.c (java_init_lex): Initialize static global kw_length.
8368         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
8369         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
8370         java_lex_error.
8371         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
8372         * parse.h (resolve_no_layout): New static function declaration.
8373         (get_identifier_in_static): Declaration removed.
8374         (java_layout_parsed_class): Function name declaration changed to
8375         safe_layout_class.
8376         (build_newarray_node, patch_newarray, resolve_type_during_patch,
8377         not_initialized_as_it_should_p, build_this): New static function
8378         declarations.
8379         (pushdecl_force_head, build_java_binop, int_fits_type_p,
8380         binary_numeric_promotion, stabilize_reference,
8381         build_decl_no_layout, build_java_arrayaccess): Extern function
8382         declarations moved into their own section.
8383         (build_newarray, build_anewarray, build_java_array_length_access,
8384         build_java_arraynull_check): New extern function declarations.
8385         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
8386         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
8387         fake tree codes.
8388         (CALL_CONSTRUCTOR_P): New macro.
8389         * parse.y (kw_length): New static global tree node.
8390         (return_statement): Tagged <node>.
8391         (RETURN_TK): Tagged <operator>.
8392         (variable_declarator_id:): Build variable declaration with an
8393         empty initialization value if a syntax error was found in the
8394         initialization part of the variable declaration.
8395         (statement_without_trailing_substatement:): return_statement: now
8396         uses the default rule.
8397         (return_statement:): Temporarily fixed to return NULL_TREE.
8398         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
8399         (class_instance_creation_expression:): Class creation rules now
8400         call build_method_invocation upon reduction.
8401         (array_creation_expression:): Rules call build_newarray_node upon
8402         reduction.
8403         (dim_exprs:): Build a list of dimension expressions.
8404         (dim_expr:): Store location of the OSB_TK in the dimension
8405         expression node.
8406         (method_invocation:): Added a new error rule.
8407         (build_unresolved_array_type): WFL argument may also be an array
8408         on a primitive type. Name of the argument changed to reflect this.
8409         (method_declarator): Insert argument type at the beginning of the
8410         argument type list and later reverse the list.
8411         (unresolved_type_p): Argument 'returned' may be optionally
8412         NULL_TREE.
8413         (java_layout_class_from_source): Function renamed
8414         safe_layout_class.
8415         (resolve_and_layout): Now call resolve_no_layout and
8416         safe_layout_class.
8417         (resolve_no_layout): New function.
8418         (purify_type_name): New function.
8419         (complete_class_report_errors): Call purify_type_name during error
8420         report on a type not found.
8421         (process_imports): error_found local variable doesn't need to be
8422         initialized to zero.
8423         (declare_local_variables): New local type_wfl. Fixed typo in error
8424         message. type_wfl assigned to unresolved type and used to register
8425         incomplete type. Build a WFL around the variable initialization
8426         statement so that debug info can be generated on it.
8427         (source_start_java_method): Reverse argument list after they've
8428         been processed.
8429         (current_this): New static global variable.
8430         (java_complete_expand_methods): Set current_this when appropriate.
8431         (resolve_expression_name): Build correct static and non static
8432         field access bearing a simple name.
8433         (resolve_field_access): Resolve the length field of arrays. Handle
8434         f.m() cases.
8435         (patch_method_invocation_stmt): Set the type of the method
8436         invocation to error_mark_node. This value is later overridden by a
8437         valid type, if any. Don't handle qualified constructor invocation
8438         as qualified method invocation. Call lookup_method_invoke with its
8439         new flag. It's no longer necessary to access the selected method
8440         as the value of a tree list. Handle constructor invocation.
8441         (patch_invoke): Reverse argument list when invoking non interface
8442         methods. Insert call to new as the first argument of the
8443         constructor.
8444         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
8445         defined within a final class. Return INVOKE_STATIC if the invoked
8446         method is a constructor.
8447         (lookup_method_invoke): New lc argument is a flag to indicate a
8448         constructor lookup. Now handle constructor lookup. Choose the most
8449         specific method in case several were matching the invocation
8450         requirements. Return a method decl instead of a tree list featuring
8451         one single method decl element.
8452         (refine_accessible_methods_list): New lc flag argument to
8453         indicate that a constructor is being looked up.
8454         (not_initialized_as_it_should_p): New function.
8455         (java_complete_tree): Now process fake tree codes
8456         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
8457         save_expr on resolved function call arguments. Case on
8458         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
8459         (patch_assignment): LHS can be a field access expression. When
8460         dealing with reference, lhs_type is the promoted type of the
8461         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
8462         applicable.
8463         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
8464         (patch_binop): Use not_initialized_as_it_should_p where
8465         applicable.
8466         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
8467         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
8468         where applicable.
8469         (resolve_type_during_patch): New function.
8470         (patch_cast): Call resolve_type_during_patch to resolve type and
8471         report error accordingly.
8472         (patch_array_ref): Use not_initialized_as_it_should_p where
8473         applicable. Array base expression is saved before being
8474         used. Promote the type of an array elements if it contains non
8475         builtin types.
8476         (build_newarray_node, patch_newarray, build_this): New functions.
8477
8478 Thu Jul 16 10:46:47 1998  Tom Tromey  <tromey@cygnus.com>
8479
8480         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
8481         increment it in `for' statement.
8482         (print_field_info): If number is inf or nan, don't print it.
8483         (print_method_info): If method name is `delete', just ignore it.
8484         (print_c_decl): Special-case jstringArray.
8485
8486         * gjavah.c (help): New function.
8487         (no_argument): New function.
8488         (usage): Changed text.
8489         (main): Rewrote argument handling.  Now handles -v, --help,
8490         --version.
8491         (version): New function.
8492         (found_error): New global.
8493         (main): Return found_error.
8494         (generate_access): Set found_error.
8495         (print_c_decl): Likewise.
8496
8497 Wed Jul 15 10:36:27 1998  Tom Tromey  <tromey@cygnus.com>
8498
8499         * gjavah.c (print_c_decl): Don't print "," when examining field.
8500         Skip type name when looking at "[L" types.
8501         (process_file): Now static.
8502         (generate_access): Now returns int.
8503         (last_access_generated): New global.
8504         (process_file): Clear last_access_generated; make multiple passes
8505         over the class.
8506         (print_field_info): Just return if generate_access returns true.
8507         (print_method_info): Likewise.  Also, allow <init> functions to
8508         pass through.
8509         (print_c_decl): Added is_init argument.  Print constructors
8510         properly.
8511         (print_cxx_classname): Use UTF8_GET to extract characters from
8512         string.
8513         (print_base_classname): New function.
8514         (print_class_decls): New function.
8515         (process_file): Use it.
8516         (utf8_cmp): New function.
8517
8518 Mon Jul 13 14:21:47 1998  Nick Clifton  <nickc@cygnus.com>
8519
8520         * lang-options.h: Format changed to match changes in gcc/toplev.c
8521         to implement a --help option.
8522
8523 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
8524
8525         * decl.c (init_decl_processing): Revert change to dtable_type.
8526
8527 Thu Jul  9 18:22:12 1998  Per Bothner  <bothner@cygnus.com>
8528
8529         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
8530
8531 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
8532
8533         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
8534
8535         * lang.c (lang_init): Default flag_exceptions to 1, without
8536         checking to see if it's 2 first.
8537
8538 Wed Jul  8 03:01:32 1998  Jeffrey A Law  (law@cygnus.com)
8539
8540         * constants.c: Include "system.h".
8541         * decl.c: Likewise.
8542         * lang.c (flag_new_exceptions): Get via extern now.
8543         (lang_init_options): New functions.  Turn on flag_new_exceptions.
8544
8545 Tue Jul  7 12:56:48 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8546
8547         * lex.c (java_lex): Return 0 when we see an invalid character in
8548         the input.
8549
8550         * lex.c (java_read_char): Specify extra argument when calling
8551         java_lex_error.
8552         (java_read_unicode, java_parse_end_comment,
8553         java_parse_escape_sequence): Likewise,
8554         (java_lex): Specify extra argument when calling
8555         java_lex_error. Test that IDs are beginning with a legal character
8556         for IDs. Handle invalid characters with an error message and a
8557         call to java_lex_error.
8558         (java_lex_error): Adjust column position by new argument
8559         `forward'. Issue an error even if in the middle of reporting an
8560         other error.
8561
8562 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
8563
8564         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
8565         we don't explicitly put a null pointer when we're copying it.
8566
8567 Tue Jul  7 09:38:38 1998  Tom Tromey  <tromey@cygnus.com>
8568
8569         * gjavah.c (print_cxx_classname): New function.
8570         (super_class_name): Likewise.
8571         (print_super_fields): Removed.
8572         (in_super): Removed.
8573         (print_field_info): Never generate #defines.
8574         (print_c_decl): Changed generated types to match JNI.  No longer
8575         print class name before method name.
8576         (print_method_info): Print "static" before static methods.
8577         Print "virtual" before non-final methods.
8578         (usage): Use exit(1), not exit(-1).
8579         (main): Likewise.
8580         (print_field_info): Use %.17g to print a double.
8581         (last_access): New globals.
8582         (process_file): Initialize last_access.
8583         (usage): Now static.
8584         (ACC_VISIBILITY): New define.
8585         (generate_access): New function.
8586         (print_field_info): Call it.
8587         (print_method_info): Likewise.  Also, generate information for all
8588         methods, not just native methods.  Return void.
8589         (print_c_decl): Return void.
8590         (print_field_info): Return void.
8591
8592 Thu Jul  2 16:53:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8593
8594         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
8595         processing the jc1 grammar file. Prefix bison functions and
8596         variables with java_.
8597         (parse.c): Dependencies on parse.h and lex.h
8598         * expr.c (build_java_arrayaccess): Function now global.
8599         * java-tree.h: Comment reorganized to carry on previous
8600         classification effort.
8601         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
8602         RESOLVE_TYPE_NAME_P): New flags on WFLs.
8603         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
8604         java_parse (new prefix java_ generated by bison).
8605         (java_layout_parsed_class, java_register_parsed_class): Function
8606         call removed.
8607         (yyparse): Removed unnecessary call to init_outgoing_cpool.
8608         * lex.c (static tree wfl_op): Variable deleted.
8609         (java_init_lex): Initialize kw_super and kw_this. Initialize more
8610         ctxp fields to NULL_TREE.
8611         (java_lex): No longer create WFL for operators. Filename caching
8612         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
8613         created as STRING_CST and later expanded. Removed extra argument
8614         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
8615         and SUPER.
8616         (build_wfl_node): Removed code in comments.
8617         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
8618         store token and location data in the current bison token.
8619         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
8620         static/extern function declaration at the beginning of the file.
8621         (struct qualification): Data structure definition deleted.
8622         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
8623         (qualify_ambiguous_name): Function declaration modified. Function
8624         now returns nothing.
8625         (build_array_ref, patch_array_ref, make_qualified_name,
8626         resolve_qualified_expression_name, maybe_generate_clinit,
8627         resolve_field_access): New static function declarations.
8628         (build_java_arrayaccess): New extern function declaration.
8629         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
8630         (CALL_EXPR_PRIMARY): Macro deleted.
8631         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
8632         (struct parser_ctxt): Field initialized_final
8633         removed. non_static_initialized, static_initialized: New fields.
8634         * parse.y (static tree kw_super, static tree kw_this): New global
8635         static.
8636         (%union): tree wfl field of operator member replaced by int
8637         location. WFLs are non longer created for operators.
8638         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
8639         (qualified_name:): Now calls make_qualified_name to build the
8640         identifier.
8641         (type_declaration:): Consider generating <clinit> when class
8642         parsing completed.
8643         (variable_declarator:): Directly build an assignment node when the
8644         variable is initialized when declared.
8645         (this_or_super:): Build a WFL and set current location when THIS
8646         or SUPER are parsed.
8647         (expression_statement:): Wrap statement around a WFL.
8648         (primary_no_new_array:): Fixed typo. Changed value returned by
8649         THIS_TK because of its new type (temporary).
8650         (dim_exprs:): Temporary fix because of OSB_TK's new type.
8651         (field_access:): Build qualified name with SUPER.
8652         (method_invocation:): Fixed returned value because of SUPER's new
8653         type.
8654         (array_access:): Use OSB_TK location information.
8655         (post_increment_expression:, post_decrement_expression:,
8656         unary_expression:, pre_increment_expression:,
8657         pre_decrement_expression:, unary_expression_not_plus_minus:,
8658         cast_expression:, multiplicative_expression:,
8659         additive_expression:, shift_expression:, relational_expression:,
8660         equality_expression:, and_expression:, exclusive_or_expression:,
8661         inclusive_or_expression:, conditional_and_expression:,
8662         conditional_or_expression:, assignment:): Use new location/token
8663         information available on operators.
8664         (create_class): Set super_decl_type to NULL_TREE when processing
8665         java.lang.Object.
8666         (register_fields): Field initialization is now a MODIFY_EXPR
8667         node. Chain initialization code to the matching lists (according
8668         the the field declaration modifiers).
8669         (maybe_generate_clinit): New function.
8670         (method_header): Don't set method's DECL_NAME to a WFL when adding
8671         methods to java.lang.Object.
8672         (resolve_and_layout): Now can return NULL_TREE if the type
8673         resolution fails. Otherwise, return the class DECL instead of its
8674         TYPE.
8675         (check_method_redefinition): Don't patch method DECL_NAME if it
8676         belongs to java.lang.Object.
8677         (process_imports): Simply assign error_found to the value returned
8678         by check_pkg_class_access.
8679         (declare_local_variables): Don't use their init statements (if
8680         any) when parsing error were previously found. Reuse MODIFY_EXPR
8681         build during parsing as an init statement.
8682         (java_method_add_stmt): Now return the current method body.
8683         (java_layout_parsed_class, java_register_parsed_class): Functions
8684         removed.
8685         (java_complete_expand_methods): Initialize the constant pool on a
8686         per class basis. Layout the classes before expanding their method
8687         bodies. Don't try expand artificial constructor code if error were
8688         found. Make the classes data and register them if no error were
8689         found.
8690         (java_complete_expand_method): Retrieve an artificial constructor
8691         argument list before entering its body. Assign the top block to
8692         the artificial constructor function body and set types of declared
8693         blocks and compound statements to void. Walk method body if not an
8694         artificial constructor.
8695         (make_qualified_name, cut_identifier_in_qualified): New functions.
8696         (resolve_expression_name): Fixed comments. Save/restore the
8697         current class CLASS_LOADED_P flag value. Build non qualified
8698         static field access and handle qualified expression names.
8699         (resolve_field_access, resolve_qualified_expression_name): New
8700         functions.
8701         (patch_method_invocation_stmt): Use the new expression resolution
8702         scheme, calling resolve_field_access when the function call is
8703         resolved as an expression.
8704         (qualify_ambiguous_name): Function rewritten to work on qualified
8705         expression produced by make_qualified_name.
8706         (java_complete_tree): Promote type when function's argument are
8707         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
8708         the assignment to discover further errors if RHS is a expression
8709         name that fails to evaluate. Declare LHS initialized even though
8710         the assignment failed. Don't use the location variable and removed
8711         extra argument in patch function calls. Now handle the ARRAY_REF
8712         case and build internal string representation when STRING_CSTs are
8713         walked.
8714         (build_method_invocation): Don't wrap function call around a WFL.
8715         (build_assignment): Likewise. Use the operator location
8716         information.
8717         (patch_assignment): Handle array access LHSs. Handle error
8718         provenance, resulting in a better error report.
8719         (build_binop): Use op_location from operator as binop location
8720         information.
8721         (build_unaryop, build_incdec, build_cast): Likewise.
8722         (patch_binop): Extract location information from the node. Fixed
8723         typo in error message.
8724         (patch_unary_op): Extract location information from the node.
8725         (build_array_ref, patch_array_ref): New functions.
8726
8727 Wed Jul  1 13:11:36 1998  Tom Tromey  <tromey@cygnus.com>
8728
8729         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
8730         match _Jv_IsInstanceOf.
8731         * decl.c (init_decl_processing): Use _Jv_NewArray, not
8732         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
8733
8734 Tue Jun 30 14:12:54 1998  Tom Tromey  <tromey@cygnus.com>
8735
8736         * decl.c (init_decl_processing): Functions are now named
8737         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
8738
8739 Mon Jun 29 14:47:10 1998  Per Bothner  <bothner@cygnus.com>
8740
8741         * java-tree.h (load_class):  Add prototype.
8742         * class.c (is_compiled_class):  Add missing arg to load_class.
8743         * expr.c (expand_java_NEW):  Call load_class.
8744         * parse.y (process_import):  Removed bogus use of void return value.
8745
8746 Thu Jun 25 11:50:48 1998  Per Bothner  <bothner@cygnus.com>
8747
8748         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
8749         Function name is "_Jv_Throw" instead of "soft_athrow".
8750         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
8751         Function name is "_Jv_AllocObject" instead of "soft_new".
8752         Takes an extra parameter (object size).
8753         * expr.c:  Update calls.
8754
8755 Wed Jun 24 13:59:02 1998  Per Bothner  <bothner@cygnus.com>
8756
8757         * lex.c (java_get_line_col):  Handle end-of-file.
8758         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
8759
8760 Wed Jun 24 09:22:34 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
8761
8762         * lang.c (lang_init): Make -fexceptions the default.
8763         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
8764         exception handling is not turned on.
8765
8766 Tue Jun 23 10:17:09 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
8767
8768         * lang.c (flag_new_exceptions): Make this this default.
8769         * decl.c (end_java_method): Call emit_handlers.
8770         * except.c (method_init_exceptions): Set language code and version.
8771         (expand_start_java_handler): Enable exception, and call
8772         expand_eh_region_start.
8773         (expand_end_java_handler): Enable exception, and set up catch blocks.
8774         (emit_handlers): New routine to generate the saved handlers.
8775         * java-except.h (emit_handlers): Add prototype.
8776
8777 Fri Jun 12 11:31:24 1998  Per Bothner  <bothner@cygnus.com>
8778
8779         We used to have three different representations of the constant pool:
8780         the CPool structure, the tree_constant_pool, and the constructures
8781         used to build the Class object (which may need class and string
8782         constants) in compiled code.  None were appropriate for compiling
8783         to .class files, so I did a major overhaul.
8784
8785         First, the tree_constant_pool array was removed.  Things were
8786         modified to the CPool structure in the JCF could be used.
8787         Second, a "capacity" field was added to the CPool, and functions
8788         written to search for a matching constant, adding one if not found.
8789         The code that generated the Class object was changed to use a CPool.
8790         The actual TREE_LISTs used to build the CONSTRUCTORs used for
8791         the static Class object are now only in build_constants_constructor.
8792         Finally, I wrote code which can generate a .class file (including its
8793         constant pool) from the RECORD_TYPE of a class.  This is a big step
8794         on the way to compiling Java source into .class files.
8795
8796         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
8797         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
8798
8799         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
8800         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
8801         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
8802         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
8803         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
8804         (lang_type):  Removed constant_pool field.
8805         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
8806         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
8807         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
8808         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
8809
8810         * constants.c (current_constant_pool_tags, current_constant_pool_data,
8811         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
8812         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
8813         (set_constant_entry, find_constant1, find_constant2,
8814         find_class_constant, count_constant_pool_bytes, write_constant_pool,
8815         find_utf8_constant, find_class_or_string_constant):  New functions.
8816
8817         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
8818         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
8819         (give_name_to_class, get_class_constant):  Likewise.
8820         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
8821         (get_name_and_type_constant, get_ref_constant):  Removed.
8822         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
8823         * parse.y:  Don't save/restore tree_constant_pool.
8824         * verify.c (verify_jvm_instructions):  Update for new approach.
8825         * expr.c (expand_invoke, expand_java_field_op): Likewise.
8826
8827         * lang-options.h:  Added -femit-class-file, -femit-class-files.
8828         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
8829         (lang_f_options):  Added "emit-class-file(s)".
8830
8831         * expr.c (build_java_arrayaccess):  Generate more efficient array
8832         bounds checking, by using unsigned compare.
8833
8834         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
8835
8836 Wed Jun 10 17:34:42 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8837
8838         * parse.h: New comment on the handling of unresolved type
8839         identifiers. JDEPs are now part of the jdep_code enum.
8840         (typedef struct jdep): Now use enum jdep_code or int, depending on
8841         availability. Both are narrowed down to an 8 bits bitfield.
8842         (CALL_EXPR_PRIMARY): Fixed comment.
8843
8844 Wed Jun 10 10:54:39 1998  Tom Tromey  <tromey@cygnus.com>
8845
8846         * Make-lang.in (java): Added gjavac and jvgenmain.
8847         (java.start.encap): Depend on gjavac.
8848         (java.rest.encap): Depend on jvgenmain.
8849
8850         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
8851         (JAVA_CROSS_NAME): Likewise.
8852         (java.all.build): Depend on jvgenmain and gjavac.
8853         (java.all.cross): Depend on jvgenmain and gjavac-cross.
8854         (jvgenmain$(exeext)): New target.
8855         (java.install-common): Wrote.
8856         * config-lang.in (compilers, stagestuff): Added gjavac and
8857         jvgenmain.
8858
8859 Wed Jun 10 12:19:04 1998  Dave Brolley  <brolley@cygnus.com>
8860
8861         * lang.c (lang_decode_option): New argc/argv interface.
8862
8863 Tue Jun  9 18:12:46 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8864
8865         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
8866         * decl.c (build_decl_no_layout): New function.
8867         * expr.c (java_lang_expand_expr): Layout declarations found in
8868         blocks before they're pushed.
8869         * jcf-parse.c (load_class): Save current line when parsing class
8870         file.
8871         (parse_source_file): Register class before expanding their
8872         methods.
8873         * lang.c (put_decl_node): Produce `null' when `void *' is
8874         processed.
8875         * lex.c (static tree wfl_op): New static global, for error report
8876         on casts.
8877         (java_init_lex): wfl_operator and wfl_op initialized
8878         here. Filename caching added for wfl_op. Return wfl_op when `(' is
8879         parsed.
8880         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
8881         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
8882         build_unresolved_array_type): New static function definitions.
8883         (build_decl_no_layout): New extern function declared.
8884         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
8885         faulty modifier exists.
8886         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
8887         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
8888         (UNARY_PLUS_EXPR): New fake operator.
8889         (struct parser_ctxt): New field osb_number.
8890         * parse.y (static tree wfl_operator): New static WFL for operator
8891         bound error messages.
8892         (DECR_TK, INCR_TK): Moved.
8893         (OP_TK): Tagged <operator>.
8894         (array_type:): Now call build_unresolved_array_type.
8895         (dim_expr:): Count the number of '[' seen.
8896         (post_increment_expression, post_decrement_expression,
8897         pre_increment_expression, pre_decrement_expression,
8898         unary_expression_not_plus_minus, unary_expression:): Actions are
8899         now building the corresponding unary expressions.
8900         (cast_expression:): Actions are now building cast expressions.
8901         (build_unresolved_array_type): New function.
8902         (create_interface): Reset the number of declared interfaces.
8903         (create_class): Likewise.
8904         (method_header): Methods declared within the scope of an interface
8905         are now implicitly set public and abstract.
8906         (java_complete_class): Variable's and parameter's type are patched
8907         with a promoted type.
8908         (declare_local_variables): Resolved non builtin types are promoted
8909         before being used to build a variable decl. Removed type patch
8910         posted on variable initialization statement.
8911         (source_start_java_method): Use build_decl_no_layout to build the
8912         decl of a parameter of incomplete type.
8913         (java_register_parsed_class): Process interfaces too. Call
8914         rest_of_decl_compilation on each processed class declarations.
8915         (java_complete_expand_methods): Don't attempt to expand things in
8916         interfaces.
8917         (java_complete_tree): Process CONVERT_EXPR, even though it always
8918         has a type. Propagate error_mark_node to node's type too. Promote
8919         method's call argument type and return error_mark_node if
8920         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
8921         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
8922         handle unary operator nodes.
8923         (build_assignment): Added comment.
8924         (print_int_node): New function.
8925         (patch_assignment): New second argument. New error handling. Use
8926         print_int_node. Handle references. Use can_cast_to_p to issue
8927         different error message according to the context and check upon
8928         the initialization of the RHS.
8929         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
8930         (operator_string): Handle more operators.
8931         (patch_binop): No longer use a function static
8932         wfl_operator. Improved error message on shift distance.
8933         (build_unaryop, build_incdec, build_cast, patch_unaryop,
8934         patch_cast): New functions.
8935
8936 Fri Jun  5 18:03:07 1998  Per Bothner  <bothner@cygnus.com>
8937
8938         * jvspec.c:  New file.
8939         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
8940
8941         * java-tree.h (identifier_subst):  Add declaration.
8942
8943 Thu Jun  4 13:44:23 1998  Tom Tromey  <tromey@cygnus.com>
8944
8945         * jvgenmain.c (main): Generate call to JvRunMain.
8946
8947         * class.c (make_class_data): Push value for "sync_info" field.
8948         * decl.c (init_decl_processing): Push "sync_info" field.
8949
8950 Wed Jun  3 20:39:14 1998  Per Bothner  <bothner@cygnus.com>
8951
8952         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
8953         Java (source) name, not signature.
8954         Set TYPE_ALIGN to (at least) that of element_type.
8955
8956 Tue Jun  2 15:19:19 1998  Per Bothner  <bothner@cygnus.com>
8957
8958         * class.c:  Moved classname-mangling-rekated code to ...
8959         * mangle.c:  ... this new file.
8960         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
8961         * Makefile.in:  Update for above changes.
8962
8963 Mon Jun  1 09:58:36 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8964
8965         * expr.c (truthvalue_conversion): Convert integer and floating
8966         point value to their truth value.
8967         * lex.c (java_lex): Handle the `null' literal.
8968         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
8969         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
8970         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
8971         New macros.
8972
8973         * parse.y: Reorganization/documentation on token declaration.
8974         (binop_lookup[]): New added new tree codes.
8975         (relational_expression): Build corresponding binary operators.
8976         (equality_expression, conditional_and_expression,
8977         conditional_or_expression): Likewise.
8978         (java_complete_class): Fix crash in debug message.
8979         (java_complete_tree): Check initialization of method call
8980         arguments. Further bogus node evaluation to detect more error
8981         during assignments. Handles more binary operators.
8982         (patch_assignment): Use DECL_P.
8983         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
8984         code.
8985         (operator_string): Handle more case. Compacted source.
8986         (patch_binop): Changed function comment. Checking for
8987         uninitialized first operand takes the compound assignment into
8988         account and uses DECL_P. Checking for uninitialized second operand
8989         delayed to routine's end. Use macros to issue type bound error
8990         messages and issue messages on both operands if their types are
8991         different. Force fixed type into node. Handle all binary
8992         operators.
8993
8994 Wed May 27 10:30:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8995
8996         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
8997         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
8998         build operator node and return tokens.
8999         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
9000         * parse.h (java_complete_tree): Changed returned type in prototype.
9001         (build_method_invocation, build_assignment, patch_assignment,
9002         patch_binop): New static function declarations.
9003         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
9004         BUILD_EXPR_WFL): New macros.
9005         * parse.y (enum tree_code binop_lookup[]): New static for token to
9006         TREE_CODE lookup.
9007         (%union): Parser union has new sub-structure `operator'.
9008         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
9009         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
9010         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
9011         ASSIGN_ANY_TK): Tokens tagged `operator'.
9012         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
9013         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
9014         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
9015         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
9016         (assignment_operator:): Rule tagged `operator'.
9017         (expression_statement:): Re-installed default rule.
9018         (method_invocation:): Sub rules call build_method_invocation.
9019         (postfix_expression:): Don't attempt to resolve name here. Just
9020         return an ID.
9021         (multiplicative_expression:): Sub-rules build corresponding binop
9022         expression node.
9023         (additive_expression:, shift_expression:, and_expression:,
9024         exclusive_or_expression:, inclusive_or_expression:): Likewise.
9025         (assignment:): Sub rule invoke build_assignment.
9026         (assignment_operator:): Default rules on sub rules.
9027         (force_error): Added documentation on this variable.
9028         (declare_local_variables): Build initialization calling
9029         build_assignment.
9030         (expand_start_java_method): Removed unused rtx declaration. Mark
9031         arguments as already initialized.
9032         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
9033         (java_complete_expand_methods): Don't process next method if
9034         completion of the previous one triggered errors.
9035         (java_complete_expand_method): Call source_end_java_method if no
9036         error were found during completion.
9037         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
9038         locals declaratilon. Handle names found within a class. Return
9039         error_mark_node when things aren't found.
9040         (patch_method_invocation_stmt): Return error_mark_node on failures.
9041         (patch_invoke): Removed unused local. Return the correct node.
9042         (java_complete_tree): Now returns a value. The BLOCK section binds
9043         local identifiers and the type of a BLOCK is now void. Assign the
9044         result of operand completion on COMPOUND_EXPR. Assign the
9045         encapsulated node of a WFL to the result of its completion, except
9046         when the node is an identifier. Now handle MODIFY_EXPR and several
9047         binary operators. Return error_mark_node on errors.
9048         (build_method_invocation, build_assignment, patch_assignment,
9049         build_binop, operator_string, patch_binop): New functions.
9050         * typeck.c (binary_numeric_promotion): New function.
9051
9052 Thu May 21 12:01:04 1998  Per Bothner  <bothner@cygnus.com>
9053
9054         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
9055         Replace most uses of ident_subst by identifier_subst.
9056
9057         * class.c (push_class_static_dummy_field):  Removed function.
9058         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
9059         instead of looking got "class" static field.  Create that decl here.
9060         (class_identifier_node):  Removed;  no longer needed.
9061         (init_class_processing):  Don't init class_identifier_node.
9062         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
9063         Do nreverse 0 times (instead of twice) for Object and Class.
9064         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
9065
9066 Wed May 20 16:35:04 1998  Per Bothner  <bothner@cygnus.com>
9067
9068         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
9069         while initializing linenumber_count and linenumber_table.
9070         Do it before init_function_start (which calls emit_line_note).
9071         * expr.c (expand_byte_code):  Don't need to clear lineno here.
9072
9073 Mon May 18 16:23:32 1998  Tom Tromey  <tromey@cygnus.com>
9074
9075         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
9076         then mangle number as _N_.
9077
9078         * class.c (mangle_class_field): New function.
9079         (build_class_ref): Set assembler name of class reference using
9080         mangle_class_field.
9081         (push_class_static_dummy_field): Likewise.
9082
9083 Sun May 17 12:52:35 1998  Michael Tiemann <tiemann@cygnus.com>
9084
9085         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
9086         of assigning to TREE_CODE.  The latter method exploits a feature
9087         of GCC that is not ANSI compliant.
9088
9089 Thu May 12 13:44:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9090
9091         * decl.c (pushdecl_force_head): New function.
9092         (pushlevel): Removed conditional printf.
9093         (complete_start_java_method): Don't enter local variable scope if
9094         function is compiled from source code.
9095         * expr.c: parse.h now included
9096         (java_lang_expand_expr): New function.
9097         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
9098         printf. Terminate buffer when doing directories.
9099         * jcf-parse.c (parse_source_file): Call lang_init_source before
9100         parsing and before code generation.
9101         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
9102         use printf if the macro is defined.
9103         * lang.c (lang_init): Install lang_expand_expr hook on
9104         java_lang_expand_expr.
9105         (java_dummy_print): New function.
9106         (lang_init_source): New function.
9107         * lex.c (java_lex): Remember location of an opening brace at the
9108         second nesting level.
9109         (java_is_eol): Unget character seen after a CR if it is EOF.
9110         * parse.h: Now includes lex.h
9111         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
9112         printf if the macro is defined.
9113         (expand_start_java_method, build_expr_block, enter_block,
9114         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
9115         New static function declarations.
9116         (pushdecl_force_head): New extern function declaration.
9117         (INCOMPLETE_TYPE_P): New macro.
9118         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
9119         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
9120         BLOCK_EXPR_ORIGIN): New macros.
9121         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
9122         DECL_SOURCE_LINE_LAST): New macros.
9123         (struct parser_ctxt): Removed field current_method_decl, redundant
9124         with the field current_function_decl. Added fields
9125         first_ccb_indent1 and pending_block.
9126         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
9127         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
9128         tagged <node>
9129         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
9130         (compilation_unit:): Cosmetic on sub rule.
9131         (type_declaration:): Cosmetic on sub rules. Added an error rule.
9132         (variable_initializer:): Installed default rule on expression:.
9133         (method_declaration:): method_header: starts a new
9134         method. method_body: installs the function body, absorbs blocks
9135         emitted for temporary variable scopings, pops function's body block
9136         and merges function's last statement lineno in DECL_SOURCE_LINE.
9137         (method_body:): Installed default rules.
9138         (block:): Call enter_block when an opening brace is seen.  Absorb
9139         scoping blocks and call exit_block when a closing brace is seen.
9140         (block_statement:): Cosmetic changes.
9141         (method_invocation:): Create WFL around CALL_EXPR node.
9142         (patch_stage): Added comment around definition.
9143         (method_header): Try to use first_ccb_indent1 as the first line of
9144         the method, so BP debug info are emitted at the first opening
9145         brace of the function. If the function has no body, use the
9146         location of the function's name. Override currently defined method
9147         name with the matching WFL so we can point redefinition errors
9148         using the location where the function's name was declared.
9149         (check_abstract_method_header): Interprets DECL_NAME as an
9150         identifier or as a WFL, accordingly.
9151         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
9152         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
9153         location and name information out of it and reinstall DECL_NAME to
9154         its original identifier node value.
9155         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
9156         function's source code).
9157         (read_import_dir): Test the value returned by find_class and issue
9158         a fatal accordingly.
9159         (declare_local_variables): Push a new block for the scope of the
9160         new variable(s) if code has been already generated at that nesting
9161         level. Pinpoint redefinition errors using the variable id
9162         WFLs. Generate initialization code if necessary. If the variable
9163         type is incomplete, register a patch on its decl.
9164         (source_start_java_method): Rewritten. Define a new block for the
9165         function's parameters. Build parameter decl out of function's
9166         arguments and register them for a patch if their types are
9167         incomplete.
9168         (expand_start_java_method): Includes the part of
9169         source_start_java_method that was pushing the parameter decls and
9170         completing the method start code.
9171         (source_end_java_method): Removed call the expand_end_bindings and
9172         poplevel (already taken care of). Reinstall function's arguments
9173         and get function's last line of code before calling
9174         expand_function_end.
9175         (java_method_add_stmt): New comment before the function's
9176         code. Complement the second operand of the current COMPOUND_EXPR
9177         if necessary.
9178         (java_complete_expand_methods): Don't generate debug info on line
9179         zero when expanding a generated constructor.
9180         (java_complete_expand_method): Set start and end line numbers for
9181         a artificially generated constructor to one and manually call
9182         enter_block and exit_block when defining it. For all methods:
9183         expand function's start calling the new expand_start_java_method
9184         and invoke java_complete_tree on the effective method's body, if
9185         any.
9186         (resolve_expression_name): Now use lookup_name_in_blocks to search
9187         local variable decls and print out an error when variables are
9188         undefined.
9189         (patch_method_invocation_stmt): Inserted comment before the
9190         function's code.
9191         (lookup_method_invoke): Chain method's arguments using chainon
9192         with the current arg list as a second argument. Inserted missing
9193         IDENTIFIER_POINTER when reporting an error on methods not found.
9194         (refine_accessible_methods_list): Don't retain constructors.
9195         (patch_arguments): Function removed.
9196         (java_complete_tree): Inserted comment before the function's
9197         code. New case for BLOCKs. Moved the WFL case a bit
9198         further. Complete function's arguments.
9199         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
9200         maybe_absorb_scoping_blocks): New functions.
9201
9202 Mon Apr 27 10:50:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9203
9204         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
9205         previously set.
9206         * jcf-parse.c (parse_source_file, java_error_count): New forward
9207         and extern declarations.
9208         (java_parse_abort_on_error): Macro moved.
9209         (jcf_parse_source): fatal called if fopen fails. Now calls
9210         parse_source_file.
9211         (parse_source_file): New parse_only parameter. Reflects the
9212         elimination of the second pass.
9213         (yyparse): parse_source_file called with argument set to 0.
9214         * jcf.h (JCF_ZERO): Sets java_source to zero.
9215         * lex.c (java_init_lex): pass argument is gone. Function modified
9216         to be called once during the analysis of a file.
9217         (java_unget_unicode): Fixed typo in fatal message.
9218         (java_get_line_col): Likewise.
9219         (java_lval): Likewise. String literals no longer built during
9220         second pass.
9221         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
9222         account.
9223         * parse.h (MODIFIER_WFL): New macro.
9224         (parse_check_super, parser_check_super_interface): Now return int.
9225         (parser_chain_incomplete_item, not_builtin_p,
9226         complete_method_decl): Declarations removed.
9227         (build_method_invocation_stmt, build_invoke): Renamed using the
9228         `patch' instead of `build'
9229         (register-incomplete_type, obtain_incomplete_type,
9230         java_complete_tree, java_complete_expand_method,
9231         unresolved_type_p, create_jdep_list): New function declarations.
9232         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
9233         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
9234         (jdep): New typedef on new struct _jdep.
9235         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
9236         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
9237         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
9238         JDEP_RESOLVED_P): New macros.
9239         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
9240         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
9241         JDEP_VARIABLE): New enum values and jdep kinds.
9242         (jdeplist): New typedef on struct _jdeplist.
9243         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
9244         macros.
9245         (CALL_EXPR_PRIMARY): New macro.
9246         (struct parser_ctxt): Fields java_pass, current_method_decl,
9247         method_decl_list deleted. New field jdeplist.
9248         (INCOMPLETE_P): Macro deleted.
9249         * parse.y (single_type_import_declaration:): Removed pass switch.
9250         (type_import_on_demand_declaration): Likewise.
9251         (field_declaration:): Removed pass switch on all sub rules.
9252         (class_declaration:): Call the complete_class_decl removed on
9253         class_body rules.
9254         (method_declaration:): Removed second pass switch. No longer chain
9255         methods decl when method_header reduced.
9256         (method_header:): Sub rules no longer depend on pass switch.
9257         (method_declarator:): Likewise.
9258         (method_body:): Likewise.
9259         (abstract_method_declaration:): Likewise.
9260         (block_statement:): Likewise.
9261         (local_variable_declaration:): Likewise.
9262         (argument_list:): Likewise.
9263         (method_invocation:): Likewise. Call to build_method_invocation_stmt
9264         removed. Partial CLASS_EXPR tree node built instead.
9265         (postfix_expression:): Removed pass switch on all sub rules.
9266         (java_pop_parser_context): Free classd_list content.
9267         (yyerror): Call obstrack_grow0 to finalize error message.
9268         (check_class_interface_creation): Comment modified to reflect new
9269         returned value meaning. Removed second pass switch. Return 1 if an
9270         error was found, 0 otherwise. Adjust pointer on filename if a
9271         leading path separator was found.
9272         (maybe_create_class_interface_decl): Removed first pass switch
9273         when linking the class decl to the class_list. Install a new
9274         jdep_list for the class.
9275         (add_superinterfaces): List of unresolved interfaces is
9276         gone. Unresolved interfaces are directly added to the current
9277         dependencies list.
9278         (create_interface): Second pass shortcut removed.
9279         ctpx->modifier_ctx access through MODIFIER_WFL.
9280         (create_class): Second pass shortcut removed. Call to
9281         register_incomplete_type replaces the call to
9282         parser_chain_incomplete_item.
9283         (complete_class_decl): Function removed.
9284         (duplicate_declaration_error): New way of retrieving redeclared
9285         item type.
9286         (register_fields): Call to lookup_modifier_cl replaced by
9287         MODIFIER_WFL. New way of handling unresolved type, using
9288         unresolved_type_p and obtain_incomplete_type.
9289         register_incomplete_type replaces call to parser_chain_incomplete_item.
9290         (patch_stage): New static global variable.
9291         (method_header): New way of handling unresolved type, using
9292         unresolved_type_p and obtain_incomplete_type. patch_stage used to
9293         indicates that the method decl needs to be patched.
9294         (check_abstract_method_header): Call to lookup_modifier_cl
9295         replaced by MODIFIER_WFL.
9296         (method_declarator): Incomplete argument type are registered
9297         calling register_incomplete_type. Patch on the declared method is
9298         issued in that case.
9299         (unresolved_type_p): New function.
9300         (parser_check_super_interface): New comment to reflect function's
9301         modified returned type (int). Function and has a new argument
9302         this_wfl. Call to parse_error_context uses this_wfl instead of
9303         relying on lookup_cl.
9304         (parser_check_super): Comment reflects function's new returned
9305         type (int). Function returns non zero value on error.
9306         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
9307         register_incomplete_type, jdep_resolve_class): New functions to
9308         handle incomplete types in declarations.
9309         (java_complete_class): Rewritten to work with the new incomplete
9310         type handling scheme.
9311         (complete_class_report_errors): Likewise.
9312         (complete_method_decl): Removed: it jobs is now handled by
9313         java_complete_class.
9314         (do_resolve_class): Class loaded in not already loaded and not
9315         found in Java source code.
9316         (java_check_regular_methods, java_check_abstract_methods): Don't
9317         call complete_method_decl anymore.
9318         (lookup_modifier_cl, not_builtin_p): Functions deleted.
9319         (read_import_dir): Got rid of the pass number dependency.
9320         (declare_local_variables): New handling of unresolved types (patch
9321         issued).
9322         (source_start_java_method): New parameter level. Function called
9323         with level set to 1 when argument types are potentially
9324         unresolved.  Called to complete the job with level set to 2 once
9325         types are complete.
9326         (source_end_java_method): Call to permanent_allocation
9327         removed. Waiting to be replaced by a more suitable obstack
9328         management.
9329         (java_complete_expand_methods, java_complete_expand_method,
9330         java_expand_finals): New functions.
9331         (build_method_invocation_stmt): Renamed
9332         patch_method_invocation_stmt. Extracts function call expression
9333         (wfl) and arguments (args) from CALL_EXPR tree operands.
9334         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
9335         call. Patch the function and argument operand of the CALL_EXPR
9336         tree argument.
9337         (patch_argument, java_complete_tree): New functions.
9338
9339 Mon Apr 20 18:26:57 1998  Per Bothner  <bothner@cygnus.com>
9340
9341         Recover from missing fields and methods (i.e. error instead of fatal).
9342         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
9343         * expr.c (expand_invoke):  Recover from missing method.
9344         (expand_java_field_op):  Recover from missing field.
9345         Inline references to java.lang.{Integer,Char,...}.TYPE.
9346         * typeck.c (get_type_from_signature), java-tree.h:  New function.
9347         * class.c (add_method):  Use get_type_from_signature.
9348         (build_class_ref):  Handle a class that was not found.
9349         * typeck.c (convert):  Handle conversion to pointers (for convenience).
9350         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
9351         instead of lookup_field to handle missing fields.
9352
9353         * jcf-parse.c (process_zip_dir):  Set java_source.
9354
9355 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
9356
9357         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
9358
9359 Tue Apr 14 15:59:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9360
9361         * jcf-parse.c (load_class): Don't change input_filename before
9362         calling jcf_parse_source (but still do it before calling
9363         jcf_parse).
9364         (jcf_parse_source): Assign input_filename after having saved the
9365         parser context.
9366         * lex.c (java_init_lex): Chain a WFL node to the import on demand
9367         list. ctxp->modifier_ctx zeroed according to its new
9368         definition. ctxp->filename initialized. Removed
9369         JAVA_MODIFIER_CTX_UNMARK.
9370         (java_unget_unicode): Update the character based column position.
9371         (java_allocate_new_line): ref_count not used anymore. Always free
9372         ctxp->p_line. Initialize c_line->char_col to 0.
9373         (java_get_unicode): Update the character based column position.
9374         (java_lex): Use ctxp->elc to store current position in source
9375         file, at the beginning of the parsed token. Set modifier_ctx entry
9376         corresponding to the parse modifier to a WFL node. Return a WFL
9377         node when an identifier is parsed.
9378         (java_lex_error): Now uses ctxp->elc to store current position in
9379         source.
9380         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
9381         * lex.h (build_wfl_node): New function definitions.
9382         (struct java_line): ref_count and next fields are gone. New field
9383         char_col.
9384         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
9385         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
9386         (JAVA_COLUMN_DELTA): New macro.
9387         (java_lc): New typedef on new struct _java_lc.
9388         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
9389         (parse_error_context, parse_warning_context): Changed prototypes.
9390         (java_get_line_col): Added as an available global function.
9391         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
9392         (IC_DECL): Replaced by macro IC_TYPE
9393         (DEPEND_WFL): New macro.
9394         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
9395         wrong modifier.
9396         (exit_java_complete_class): Removed a commented out statement.
9397         (struct parser_ctxt): Added comments on fields. modifier_ctx is
9398         now an array of tree nodes. Deleted fields line_list and
9399         e_line. New field elc, to replace e_line.
9400         * parse.y (array_type:): Build WFL node.
9401         (qualified_name:): Build a single WFL node out of two. Retain
9402         the location information of the first node in the resulting node.
9403         (package_declaration:): Use package name as a WFL node
9404         (single_type_import_declaration:): Use imported name as a WFL node.
9405         (type_import_on_demand_declaration:): Use root of the imported
9406         packages as a WFL node.
9407         (field_declaration:): Removed unused local variable cl.
9408         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
9409         (yyerror): New static elc. Removed static error_line, error_pos.
9410         New local code_from_source. Save ctxp->elc into elc at the first
9411         pass. Call java_get_line_col to get a string of the line where
9412         the error occured.
9413         (debug_line): Removed static function.
9414         (parse_error_context, parse_warning_context): Parameter cl is now
9415         a WFL node. Use its value to initialize ctxp->elc.
9416         (redefinition_error): Parameter cl is now a WFL node.
9417         (parse_add_interface): New parameter wfl. No longer call
9418         lookup_cl, use wfl instead.
9419         (check_class_interface_creation): Parameter cl is now a WFL node.
9420         (maybe_create_class_interface_decl): Likewise.
9421         (add_superinterfaces): New function.
9422         (create_interface): Removed local cl, node, super_decl,
9423         super_decl_type.  Function now uses id as a WFL node. Better
9424         warning/error report on obsolete or forbidden mix of
9425         modifiers. Now calls add_superinterfaces to register interfaces.
9426         (create_class): Removed local cl, node. Local variable id is used
9427         as a WFL node. Better error report on forbidden modifier
9428         mix. Uses add_superinterfaces to register interfaces.
9429         (find_field): Argument cl is now a WFL node. Now store the WFL
9430         node of a fields that needs to be checked for their
9431         initialization.
9432         (method_header): Local variable node non longer used. Local
9433         variable id replaces cl.
9434         (check_modifiers_consistency): Local variable cl is now a WFL
9435         node.
9436         (method_declarator): Local variable cl replaced by parameter id.
9437         (parser_qualified_name): Now uses parameter name as a WFL node.
9438         (parser_check_super_interface): New parameter wfl, for achieve
9439         greater accuracy during error reports.
9440         (parser_chain_incomplete_item): New parameter named location. Used,
9441         along the decl, to construct the incomplete item node.
9442         (java_complete_class): resolve_class now uses WFL node extracted
9443         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
9444         where appropriate.
9445         (complete_method_decl): Unresolved function's argument types are WFL.
9446         (resolve_class): Parameter cl is now a WFL node.
9447         (resolve_and_layout): Likewise.
9448         (do_resolve_class): Likewise. Try first to use cl and then do the
9449         lookup on the decl when calling check_pkg_class_access.
9450         (complete_class_report_errors): Use IC_TYPE in place of
9451         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
9452         instead of doing a lookup over the decl.
9453         (java_check_final): Use WFL info from field tree list.
9454         (lookup_cl): Rewritten and returns a statically defined WFL node.
9455         (lookup_modifier_cl): Now uses information from WFL nodes.
9456         (process_imports): Likewise.
9457         (read_import_dir): name and cl arguments replaced by a single WFL
9458         node. Function modified accordingly.
9459         (find_in_imports_on_demand): Now uses WFL node.
9460         (check_pkg_class_access): cl argument is now a WFL node.
9461         (declare_local_variables): Fixed to use WFL nodes.
9462         (resolve_expression_name): Likewise.
9463         (build_method_invocation_stmt): name_combo argument renamed
9464         wfl. Function modified to use WFL nodes.
9465         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
9466         (lookup_method_invoke): cl is now a WFL node. Added missing
9467         IDENTIFIER_POINTER to class type decl name.
9468
9469 Tue Apr 14 15:23:29 1998  Dave Brolley  <brolley@cygnus.com>
9470
9471         * lang.c (init_parse): Now returns char* containing the filename.
9472
9473 Fri Apr 10 11:36:04 1998  Per Bothner  <bothner@cygnus.com>
9474
9475         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
9476
9477         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
9478         * class.c (make_class_data):  If flag_assume_compiled, initial class
9479         state is CSTATE_PREPARED; make superclass and interfaces direct
9480         references, rather than constant pool indexes.
9481
9482 Thu Apr  9 16:10:56 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9483
9484         * parser.y: Include flags.h. Removed debug variable pl.
9485         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
9486         (block:): Likewise.
9487         (labeled_statement_nsi:): Generate debug info when reducing
9488         expression_statement:.
9489         (check_pkg_class_access): get_access_flags_from_decl invokation
9490         fixed for new CLASS_* flags location.
9491         (source_end_java_method): Save/restore parser context when
9492         entering/leaving this routine. Restore lineno to its right value
9493         before calling expand_end_bindings.
9494         (build_method_invocation_stmt): build_invoke called with the
9495         current line information.
9496         (build_invoke): New argument cl. Wrap the function call around a
9497         wfl node.
9498         (refine_accessible_methods_list): Changed comment, removed
9499         unnecessary code.
9500         * parse.h: Fixed typo in comments.
9501         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
9502         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
9503         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
9504         parser_ccb_indent.
9505         * lex.c (java_lex): Record the last closing curly bracket of a
9506         function.
9507         * jcf-parse.c (jcf_parse_source): Now calls
9508         java_check_methods. Clarified comment, fixed typo.
9509
9510 1998-04-09  Dave Brolley  <brolley@cygnus.com>
9511
9512         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
9513         (finish_parse): Expose for non USE_CPPLIB builds.
9514
9515 Wed Apr  8 13:06:23 1998  Jeffrey A Law  (law@cygnus.com)
9516
9517         * lang.c (lang_print_xnode): New function.
9518
9519 Fri Apr  3 13:22:41 1998  Per Bothner  <bothner@cygnus.com>
9520
9521         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
9522         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
9523         used to build a class's dispatch table.
9524         (make_class_data):  Generate dispatch table if flag_assume_compiled.
9525         Set dtable of class object to address of class_dtable_decl.
9526
9527         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
9528         be volatile and have side effects - generates better code.
9529
9530         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
9531         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
9532
9533         * expr.c (expand_invoke):  If class is final, method is
9534         effectively final, so can call it directly.
9535
9536         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
9537
9538         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
9539
9540 Thu Mar 19 16:59:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9541
9542         * parse.y (build_method_invocation_stmt): Removed extra argument
9543         to build_invoke.
9544
9545 Mon Mar 16 17:25:19 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9546
9547         * expr.c (dtable_indent): Now static global.
9548         (expand_invoke): Now call invoke_build_dtable and
9549         build_invokevirtual.
9550         (invoke_build_dtable, build_invokevirtual): New functions.
9551         * jcf-io.c (find_class): Defer issuing a warning by setting
9552         jcf->outofsynch to 1.
9553         * jcf-parse.c (jcf_out_of_synch): New function.
9554         (load_class): Test this_jcf.outofsynch flag and call
9555         jcf_out_of_synch accordingly.
9556         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
9557         comment indentation.
9558         * lex.c (java_get_unicode): Fixed code indentation.
9559         (java_lex): Create string literal. Fixed typo. Removed several
9560         premature obstack_free.
9561         * parse.h: New enums for name resolution and invocation mode.
9562         (struct qualification): New data structure.
9563         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
9564         (do_resolve_class, build_method_invocation_stmt,
9565         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
9566         debug_line, identical_subpath_p, invocation_mode,
9567         refine_accessible_methods_list, build_invoke,
9568         lookup_method_invoke): New functions declared.
9569         (build_invokevirtual, invoke_build_dtable, match_java_method,
9570         build_field_ref, jcf_out_of_synch): New references to external
9571         functions.
9572         (struct parse_ctxt): Removed artificial_constructor field.
9573         * parse.y: (array_type:): Type defined for this rule.
9574         (class_type:): Installed default rule for interface_type:.
9575         (array_type:): Now build Java array type.
9576         (qualified_name:): Now use obstack_grow0.
9577         (method_declaration:): Skip the artificial constructor added to
9578         the list, if any.
9579         (abstract_method_declaration:): Execute the code only during pass 1.
9580         (block:): Installed default rule in block_statements:.
9581         (block_statement:): Add the statement to the method during pass 2.
9582         (statement_expression): Installed default rule for
9583         method_invocation:.
9584         (argument_list:): Added code to build the argument list.
9585         (method_invocation:): Added call to create the method invocation
9586         node.
9587         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
9588         (debug_line): New function for debug.
9589         (complete_class_decl): No longer do something during pass 1.
9590         (method_header): Use BUILD_PTR_FROM_NAME.
9591         (parser_qualified_classname): Use obstack_grow0. Removed bogus
9592         obstack_free.
9593         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
9594         function's main comment.
9595         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
9596         classes.
9597         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
9598         (resolve_class): Now works with arrays.
9599         (do_resolve_class, resolve_and_layout): New functions.
9600         (java_check_regular_methods): Reverse method list before and after
9601         having processed it. No longer set ctxp->artificial_constructor.
9602         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
9603         accordingly. Fixed typo in issued error message. Now use
9604         obstack_grow0.
9605         (find_in_imports_on_demand): Now use obstack_grow0.
9606         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
9607         (source_end_java_method): Call expand_expr_stmt instead of
9608         expand_expr. Calls it before calling expand_function_end.
9609         (java_method_add_stmt): Do nothing if errors were found during
9610         parsing.
9611         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
9612         (build_method_invocation_stmt, build_invoke, invocation_mode,
9613         lookup_method_invoke, refine_accessible_methods_list,
9614         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
9615         New functions.
9616         * typeck.c (build_java_signature): Properly end method signature
9617         if return type skipped.
9618         (match_java_method): New function.
9619
9620 Mon Mar 16 10:40:47 1998  Per Bothner  <bothner@cygnus.com>
9621
9622         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
9623
9624 Wed Feb 25 08:55:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9625
9626         * expr.c (build_invoke_non_interface): New function.
9627         (methods_ident, ncode_ident): Now static globals.
9628         (expand_invoke): Use build_invoke_non_interface.
9629         * java-tree.h (struct lang_decl): New field function_decl_body.
9630         (DECL_FUNCTION_BODY): New macro.
9631         * jcf-parse.c (jcf_parse_source): Deeper check before setting
9632         CLASS_FROM_SOURCE_P.
9633         (parse_source_file): Fixed typos. Call java_layout_parsed_class
9634         before starting pass 2. Call to java_generate_parsed_class replaced
9635         by java_register_parsed_class.
9636         * lex.c: Fixed typo in header. Some line width related formating.
9637         * lex.h: Some line width related formating.
9638         * parse.h (source_end_java_method, resolve_expression_name,
9639         complete_class_decl, maybe_create_class_interface_decl,
9640         check_class_interface_creation): New static function declarations.
9641         (java_layout_parsed_class, java_method_add_stmt): New function
9642         declarations.
9643         (struct parser_ctxt): Field mark_class_generate removed. New
9644         fields class_list and artificial_constructor.
9645         * parse.y: Fixed typo in header.
9646         (class_declaration:): Call complete_class_decl when class body
9647         parsed.
9648         (method_declaration:): Call source_end_java_method in pass 2 when
9649         the method body is defined.
9650         (postfix_expression:): Do expression name resolution on sub-rule
9651         name during pass 2.
9652         (create_class, create_interface): Merged common pieces.
9653         (check_class_interface_creation, maybe_create_class_interface_decl):
9654         New functions.
9655         (complete_class_decl): New function.
9656         (register_fields): Fixed line width related typo.
9657         (method_header): Correctly skip first argument when fixing
9658         argument line. Changed the loop.
9659         (java_check_circular_reference): Now use ctxp->class_list.
9660         (java_complete_class): Removed start/stop marking.
9661         (java_check_regular_methods): Now takes a class decl as an
9662         argument.  Add default constructor if none were encountered.
9663         (java_check_methods): Now use ctxp->class_list. Changed call to
9664         java_check_regular_methods.
9665         (source_start_java_method): Set DECL_ARG_TYPE for each function
9666         arguments.
9667         (source_end_java_method, java_method_add_stmt): New functions.
9668         (java_generate_parsed_class): No longer exists.
9669         (java_layout_parsed_class, java_register_parsed_class): New functions.
9670         (resolve_expression_name): New function.
9671
9672 Thu Feb 12 11:54:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9673
9674         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
9675         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
9676         until pass initializations are done. Call read_import_dir with
9677         pass set to 0.
9678         * parse.h: (lookup_modifier_cl): New function declared.
9679         (INTERFACE_FIELD_MODIFIERS): New macro.
9680         (OBSOLETE_MODIFIER_WARNING): New macro.
9681         * parse.y: (register_fields): Class type and current field name in
9682         local variables. Check modifier(s) if adding field(s) to an interface.
9683         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
9684         and report errors using the faulty modifier line context.
9685         (lookup_modifier_cl): New function.
9686         (read_import_dir): Detect and report default import processing
9687         failure.
9688
9689 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
9690
9691         Add a pair of -fassume-compiled/-fno-assume-compiled options.
9692         * class.c (is_compiled_class): Return 1 after making sure it
9693         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
9694         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
9695         * java-tree.h (flag_assume_compiled): Add decl.
9696         * lang.c (lang_f_options): Add the flag.
9697         (flag_assume_compiled): Add decl, default to 0.
9698
9699 Wed Feb 11 11:27:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9700
9701         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
9702         (is_compiled_class): Likewise.
9703         (layout_class): Likewise.
9704         (layout_class): Detect and lay out classes defined in source code.
9705         (interface_of_p, add_interface_do, may_add_interface): New
9706         function.
9707         (add_interface): Now use add_interface_do.
9708         (add_method_1): New function.
9709         (add_method): Now use add_method_1.
9710         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
9711         (complete_start_java_method): New function.
9712         (start_java_mehod): Now call complete_start_java_method.
9713         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
9714         (expand_invoke): Likewise and fixed typo.
9715         *gjava.c: (print_super_field): Use new argument to find_class
9716         DO_CLASS_FILE.
9717         (main): Likewise.
9718         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
9719         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
9720         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
9721         IDENTIFIER_NODE.
9722         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
9723         (add_method_1, push_class): New prototypes.
9724         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
9725         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
9726         directory where the class was found.
9727         (find_class): New argument DO_CLASS_FILE. Function find_class
9728         modified accordingly.
9729         *jcf-parse.c: (fix_class_path): New function.
9730         (load_class): Use new VERBOSE argument. load_class now finds and
9731         loads/parses .class/.java files. Save read_state of current_jcf
9732         if necessary.
9733         (java_parser_abort_on_error): New macro.
9734         (jcf_parse_source, parse_source_file): New function.
9735         (jcf_parse): Fixed typo.
9736         (yyparse): Call parse_source_file () only.
9737         (process_zip_dir): Fixed typo, fix zdir->filename_length when
9738         writing the real class name back in the zip directory entry.
9739         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
9740         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
9741         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
9742         (find_class): Prototype fixed.
9743         *lex.c: Added 1998 time stamp.
9744         Removed all static global variables, moved into the parser
9745         context data structure.. Now include unistd.h if SEEK_SET not
9746         defined.
9747         (java_init_lex): Rewritten.
9748         (java_sneak_unicode): Modified current unicode access in current line.
9749         (java_unget_unicode): Likewise.
9750         (java_allocate_new_line): New allocation management.
9751         (java_read_char): Modified access and storage of unget_utf8_value.
9752         New way of processing current unicode.
9753         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
9754         (java_get_unicode): Now use the parser context.
9755         (java_lineterminator): Likewise.
9756         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
9757         of the reentrant parser implementation. Function now use the
9758         parser context data structure and java_lval. Fixed production of
9759         the float and double constant "out of range" error message. Fixed
9760         obstack use. Return integer value when hitting a modifier. Now
9761         return type for TRUE, FALSE and other predefined types. Return
9762         identifier as a TREE_LIST list containing the current line context
9763         as the TREE_VALUE sub-node.
9764         (java_unicode_2_utf8): Fixed typo in declaration.
9765         (java_lex_error): Now use the parser context data structure.
9766         *lex.h: Added 1998 time stamp.
9767         (struct java_line): New fields ref_count and next.
9768         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
9769         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
9770         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
9771         *parse.h: Added 1998 time stamp.
9772         (java_parse_source_file): Renamed from parse_source_file.
9773         (YYERROR_NOW, YYNOT_TWICE): Fixed.
9774         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
9775         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
9776         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
9777         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
9778         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
9779         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
9780         (struct parser_ctxt): New data structure to keep the parser context.
9781         *parse.y: Added 1998 time stamp, got rid of static global variables.
9782         (java_error_count, ctxp): New global variables.
9783         (%union): New value field.
9784         (numeric_type, integral_type): Rules removed.
9785         (primitive_type): Rule defined to handle integral, float, double and
9786         boolean types.
9787         (qualified_name, package_declaration,
9788         single_type_import_declaration, type_import_on_demand_declaration,
9789         modifiers, class_declaration, super, interfaces,
9790         interface_type_list, class_body, field_declaration,
9791         field_declaration, variable_declarators, variable_declarator,
9792         variable_declarator_id, method_declaration, method_header,
9793         formal_parameter_list, formal_parameter, method_body, block,
9794         static, interface_declaration, extends_interfaces,
9795         abstract_method_declaration, local_variable_declarators): Rules now
9796         define actions.
9797         (force_error, do_warning): New global statics.
9798         (push_parser_context, parser_context_save_global,
9799         parser_context_restore_global, pop_parser_context): New functions.
9800         (yyerror): Now uses the global parser context. Fixed use of obstack.
9801         (parse_error, parse_error_context, parse_warning_context,
9802         java_accstring_lookup, redefinition_error, check_modifiers,
9803         parser_add_interface, create_interface, create_class, find_field,
9804         duplicate_declaration_error, register_fields, method_header,
9805         check_modifiers_consistency, check_abstract_method_header,
9806         method_declarator, parser_qualified_classname,
9807         parser_check_super_interface, parser_check_super,
9808         parser_chain_incomplete_item, java_check_circular_reference,
9809         layout_class_from_source, java_complete_class,
9810         complete_method_decl, resolve_class, complete_class_report_errors,
9811         java_check_final, check_method_redefinition,
9812         java_check_regular_methods, java_check_abstract_methods,
9813         java_check_methods, lookup_java_interface_method2,
9814         lookup_java_method2, lookup_cl, find_name_in_single_imports,
9815         process_imports, find_in_imports, read_import_entry,
9816         read_import_dir, find_in_imports_on_demand,
9817         check_pkg_class_access, not_builtin_p, declare_local_variables,
9818         source_start_java_method, java_generate_parsed_class): New
9819         functions.
9820         *typeck.c: (signature_include_return): New global variable.
9821         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
9822         to add the function returned type in the signature.
9823
9824 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
9825
9826         * jcf-io.c (open_in_zip): Use strncmp and LEN.
9827
9828 Thu Jan 29 16:12:13 1998  Dave Brolley  <brolley@cygnus.com>
9829
9830         * Make-lang.in (java.info): Added.
9831         (java.install-info): Added
9832
9833 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
9834
9835         * Makefile.in (clean): Also remove java/parse.c.
9836
9837 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
9838
9839         Add a pair of -fbounds-check/-fno-bounds-check options.
9840         * lang.c (lang_decode_option): Add code to grok arguments.
9841         (flag_bounds_check): Add decl.
9842         (lang_f_options): New array w/ the option in it.
9843         * java-tree.h (flag_bounds_check): Add decl.
9844         * lang-options.h: New file.
9845         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
9846         of a static macro value.
9847         (JAVA_ARRAY_EXCEPTION): Delete macro.
9848
9849 Fri Jan 23 14:19:47 1998  Per Bothner  <bothner@cygnus.com>
9850
9851         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
9852         * expr.c (build_anewarray):  Add missing promote_type.
9853
9854 Thu Jan 22 17:43:45 1998  Per Bothner  <bothner@cygnus.com>
9855
9856         Add array types with known length to optimize bounds checking.
9857         * typeck.c (build_java_array_type):  Take length parameter.
9858         (java_array_type_length, build_prim_array_type):  New functions.
9859         * java-tree.h:  Update for new functions.
9860         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
9861         * class.c:  Use build_prim_array_type.
9862         * expr.c (can_widen_reference_to):  Handle known-length array types.
9863         (verify_jvm_instructions):  Keep track of integer push instructions
9864         followed by newarray/anewarray, so we can build known-length arrays.
9865         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
9866         (java_array_data_offset):  New function.
9867         (build_java_array_length_access):  New function.  Optimize if constant.
9868         (build_java_arrayaccess):  Constant fold bounds check.
9869         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
9870         (build_newarray, build_anewarray):  New functions.
9871         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
9872         * verify.c (merge_types):  Handle known-lengh array types.
9873
9874 Mon Jan 19 13:09:25 1998  Per Bothner  <bothner@cygnus.com>
9875
9876         * expr.c (expand_byte_code):  Fix performace bug, which caused
9877         searching linenumber_table to be linear rather than constant.
9878
9879 Fri Dec 12 19:18:42 1997  Per Bothner  <bothner@cygnus.com>
9880
9881         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
9882
9883         * decl.c, java-tree.h (soft_fmod_node):  New global.
9884         * decl.c (init_decl_processing):  Define __builtin_fmod.
9885         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
9886         using __builtin_fmod.
9887
9888 Thu Dec  4 13:22:59 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9889
9890         * keyword.h: New file, output of keyword.gperf as processed by
9891         gperf.
9892         * lex.c (java_lex_init): Initialize java_error_flag.
9893         * parse.c (YYERROR_NOW): Uses java_error_flag.
9894         * parse.y: New static java_error_flag. Useless definition of
9895         buffer_error gone.
9896         * parse.y (java_error): Portable error recovery using
9897         java_error_flag (not yet completely tuned).
9898
9899 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
9900
9901         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
9902
9903 Wed Dec  3 18:37:42 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9904
9905         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
9906         (parse.c, lex.c, keyword.h): New rules for Java source code
9907         front-end.
9908         * parse.c: Renamed into jcf-parse.c.
9909         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
9910         * keyword.gperf: New file, Java keywords.
9911         * parse.y: New file, Java language grammar.
9912         * parse.h: New file, Java language grammar definitions.
9913         * lex.c: New file, Java language lexer.
9914         * lex.h: New file, Java language lexer definitions.
9915
9916 Wed Dec  3 17:00:17 1997  Per Bothner  <bothner@cygnus.com>
9917
9918         * decl.c (clinit_identifier_node), java-tree.h:  New global.
9919         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
9920         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
9921         * expr.c (expand_java_field_op):  Check for invalid assignment
9922         to final field.
9923
9924         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
9925
9926 Mon Oct 27 17:46:36 1997  Per Bothner  <bothner@cygnus.com>
9927
9928         * verify.c (verify_jvm_instructions):  When processing a handler,
9929         attempt to set the current_subr to the right value.
9930         (More complicated code combines Sep 17 and Oct 22 versions.)
9931
9932 Fri Oct 24 11:36:54 1997  Per Bothner  <bothner@cygnus.com>
9933
9934         * class.c (push_class):  Figure out (guess) name of source file.
9935         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
9936         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
9937         (parse_class_file):  Change return type from int to void.
9938         Call debug_start_source_file/debug_end_source_file.
9939
9940         * expr.c (build_java_binop):  Fix masking 2nd operand.
9941         * decl.c (init_decl_processing):  Set sizetype first.
9942
9943 Wed Oct 22 19:39:05 1997  Per Bothner  <bothner@cygnus.com>
9944
9945         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
9946         (Revert Sep 17 change.)
9947
9948 Tue Oct 21 15:09:02 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9949
9950         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
9951         .class extension in their name and fix thing so we don't process
9952         them parse_zip_file_entries().
9953         (parse_zip_file_entries): Cleaned unused local variables.
9954
9955 Mon Oct 20 14:52:42 1997  Per Bothner  <bothner@cygnus.com>
9956
9957         * expr.c (can_widen_reference_to):  Allows equal array element types.
9958         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
9959         * jcf-dump.c (RET):  Get (and print) index.
9960
9961         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
9962         Promote element type to POINTER_TYPE.
9963
9964 Mon Oct 20 13:40:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9965
9966         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
9967         find_in_current_zip, jcf_figure_file_type): Moved from
9968         jcf-reader.c to parse.c.
9969         * zextract.c: (read_zip_archive): takes file_comment_length possible
9970         field into account.
9971
9972 Mon Oct 20 11:45:06 1997  Per Bothner  <bothner@cygnus.com>
9973
9974         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
9975
9976         * verify.c (merge_types):  Handle array types even better ...
9977
9978 Fri Oct 17 15:56:37 1997  Per Bothner  <bothner@cygnus.com>
9979
9980         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
9981
9982         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
9983         * class.c (make_class_data):  Don't build fields_decl if no fields.
9984         When building fields_decl, skip if DECL_ARTIFICAL.
9985
9986         * expr.c (java_stack_swap):  Update stack_type_map.
9987         * verify.c (merge_types):  Handle array types better.
9988
9989 Wed Oct 15 18:09:45 1997  Per Bothner  <bothner@cygnus.com>
9990
9991         * class.c (add_field):  Don't promote short integral fields to
9992         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
9993         * expr.c (push_value):  Promote and convert short integral values.
9994
9995         * decl.c, java-tree.h (integer_two_node):  New constant node.
9996         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
9997
9998 Wed Oct 15 17:04:50 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9999
10000         * class.c (append_gpp_mangled_type): Use function argument
10001         unpromoted type to generate mangled name.
10002
10003 Mon Oct 13 16:52:55 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10004
10005         * constants.c (build_constant_data_ref): Now uses current_class
10006         instead of main_class.
10007         (build_constants_constructor): Now uses current_class instead of
10008         main_class.
10009         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
10010         of the global variable SeepZipFiles done here.
10011         * zextract.c (read_zip_archive): extra_field optional field taken
10012         into account while computing the position of the class file in the
10013         archive.
10014         * verify.c (verify_jvm_instructions): Use current_jcf to search
10015         the constant pool.
10016         * parse.c (load_class): First search for the class to load in the
10017         current zip file. Saves current_jcf (restored before returning
10018         from that function). Don't call JCF_FINISH in the class was found
10019         in the current ZIP file.
10020         (jcf_parse): If the class was found in the current ZIP file, save
10021         its tree_constant_pool (for later reuse).
10022         (parse_class_file): New function. Process each method defined in
10023         the current class and record the class as to be later registered.
10024         (yyparse): Rewritten. Figure the type of the current file and switch
10025         accordingly.
10026         * lang.c: New global variable current_jcf.
10027         (lang_init): Removed compiling_from_source test (done later, in
10028         yyparse). Removed call the jcf_parse ().
10029         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
10030         (typedef struct JCF): New fields seen_in_zip (to mark a class found
10031         in the current ZIP file) and zip_offset (offset to the class data in
10032         the current zip file).
10033         * jcf-reader.c: zipfile.h included.
10034         localToFile: New ZipFileCache static global variable
10035         (parse_zip_file_entries): New function. Browse the current ZIP
10036         file directory and process each class found.
10037         (process_zip_dir): New function. Register each class found in the
10038         ZIP file directory. The class aren't parsed but a valid JCF is
10039         link to each of them.
10040         (find_in_current_zip): New function. Search for a class in the
10041         current ZIP file directory. If found, prepare the class so that it
10042         can be loaded.
10043         (jcf_figure_file_type): New function. Examine the file structure
10044         to figure a class file, a ZIP file. If none of these categories are
10045         matched, a source file is assumed.
10046         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
10047         SeenZipFile: New global variable.
10048         (open_in_zip): Use zipmember's length to accelerate the search for
10049         a member. If zipmember was NULL and zip file successfully read,
10050         return 0.
10051         * java-tree.h: New global variable current_jcf declared.  Added
10052         declaration for current_constant_pool_tags, current_constant_pool_data,
10053         current_constant_pool_length, current_constant_pool_data_ref.
10054         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
10055         store the JCF of classes seen in a zip file) and tree *constant_pool
10056         (to save a loaded class constant pool). current_class declared here.
10057         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
10058         retrieve method_ref_constant.
10059         (PUSHC): java_push_constant_from_pool now uses current_jcf.
10060         (OBJECT): get_class_constant now uses current_jcf.
10061         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
10062         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
10063         (expand_invoke): Now uses current_class instead of main_class
10064         (build_class_init): Now uses current_class instead of main_class
10065         * class.c: New static global variable registered_class.
10066         (register_class): New function.
10067         (emit_register_class): Modified to use registered_class instead of
10068         main_class
10069         (is_compiled_class): Now take into account class seen in the archive.
10070
10071 Mon Oct  6 12:03:23 1997  Per Bothner  <bothner@cygnus.com>
10072
10073         * except.h:  Renamed to: java-except.h.
10074         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
10075         * except.c:  Add semi-working (commented out) implementation.
10076
10077         * expr.c (expand_iinc):  Add needed flush_quick_stack.
10078         * parse.c (set_source_filename):  New function.
10079         (give_name_to_class):  Set input_filename from package.classname.java.
10080
10081         * jcf-io.c (find_class):  Don't look first in ".".
10082
10083 Wed Oct  1 11:26:10 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10084
10085         * zextract.c (read_zip_archive): Now takes into account the
10086         extra_field field.
10087         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
10088
10089 Sat Sep 20 12:44:28 1997  Per Bothner  <bothner@cygnus.com>
10090
10091         * constants.c, java-tree.h (build_internal_class_name):  New function.
10092         (alloc_class_constant):  Re-implement using build_internal_class_name.
10093         * class.c (make_class_data):  Likewise.
10094         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
10095
10096 Wed Sep 17 13:15:23 1997  Per Bothner  <bothner@cygnus.com>
10097
10098         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
10099         to NULL before pushing an exception handler target.
10100
10101         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
10102         (java_stack_swap, java_stack_dup):  Re-write to be safe from
10103         clobbering registers.
10104         (build_class_init):  New function.
10105
10106 Wed Sep 17 11:02:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10107
10108         * typeck.c (build_java_array_type): Temporary use
10109         permanent_obstack to create the array 'length' field.
10110         * expr.c (lookup_label): Temporay use permanent_obstack to create
10111         label if not found.
10112         * class.c (push_super_field): Tempory use permanent_obstack.
10113
10114 Mon Sep 15 11:33:31 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10115
10116         * typeck.c (type_for_mode): Now handles double_type_node and
10117         float_type_node.
10118         * verify.c (verify_jvm_instructions): The instruction following
10119         the wide bytecode is checked. OPCODE_ret added to the list of
10120         wide.
10121
10122 Thu Sep 11 19:45:18 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10123
10124         * class.c (make_class): Temporary use permanent_obstack. Set the
10125         class CLASS_P field to 1.
10126         (push_class): Temporary use permanent_obstack.
10127         (set_super_info): Temporary use permanent_obstack.
10128         (add_method): Temporary use permanent_obstack, set
10129         METHOD_TRANSIENT().
10130         (add_field): Temporary use permanent_obstack. Sets
10131         FIELD_VOLATILE() and FIELD_TRANSIENT().
10132         (build_class_ref): Temporary use permanent_obstack if the class
10133         isn't compiled.
10134         (build_static_field_ref): Temporary use permanent_obstack when
10135         creating field's rtl.
10136         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
10137         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
10138         and fields. Function finalized, as far as flag handling.
10139         (push_class_static_dummy_field): Temporary use permanent_obstack.
10140         (emit_register_class): Force generation of class registration at
10141         -O3 or deeper.
10142         * decl.c (end_java_method): Call permanent_allocation() before
10143         returning.
10144         * expr.c (can_widen_reference_to): Added comment to interface
10145         handling, fixed typo.
10146         (lookup_field): Now uses CLASS_P() to correct FIXME
10147         (expand_invoke): Verification on public && !static &&
10148         !abstract moved into soft_lookupinterfacemethod (kaffe).
10149         Use Object class dtable if objectref is an array when expanding
10150         invokeinterface.
10151         (java_push_constant_from_pool): Temporary use permanent_obstack
10152         for CONSTANT_string
10153         * parse.c (get_ref_constant): Temporary use permanent_obstack to
10154         create constant references.
10155         (get_constant): Temporary use permanent_obstack to create constant.
10156         (load_class): Temporary use permanent_obstack to load class.
10157         (jcf_parse): Temporary use permanent_obstack to perform class
10158         layout.
10159         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
10160         (build_java_signature): Temporary use permanent_obstack.
10161         * verify.c: (verify_jvm_instruction): removed unecessary verification
10162         on ACC_SUPER flag.
10163         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
10164         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
10165         (CLASS_P): Defined
10166
10167 Thu Sep 11 11:57:32 1997  Per Bothner  <bothner@cygnus.com>
10168
10169         * class.c (append_gpp_mangled_type):  Fix typo.
10170         (emit_register_class):  Use main_class to get class object, rather
10171         than looking for no-longer-existing static decl starting with _CL.
10172         * typeck.c (parse_signature_type):  Promote array element type
10173         if it is a RECORD_TYPE.
10174
10175 Wed Sep 10 16:09:23 1997  Per Bothner  <bothner@cygnus.com>
10176
10177         * class.c (push_class_static_dummy_field):  New function.
10178         (mangle_static_field):  New. Do G++-style mangling of static fields.
10179         (layout_class):  Mandle static fields here, not in add_field.
10180         (build_class_ref):  The class object is now a dummy static field.
10181         * decl.c (find_local_variable):  Look for best, instead of first match.
10182         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
10183         (build_java_athrow):  Don't check here if exception is Throwable.
10184         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
10185         (TYPE_USED):  Removed.  No longer used ...
10186         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
10187         * verify.c (push_pending_label):  New function.
10188         (push_pending_block):  Renamed to check_pending_block.
10189         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
10190         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
10191         re-checking possible handlers) after a store (less wasted work).
10192         Check for null handler (finally) before calling add_handler.
10193         Various changes to (finally?) correctly handle try/finally.
10194
10195 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
10196
10197         * class.c: Include stdio.h.
10198
10199 Thu Sep  4 21:30:55 1997  Per Bothner  <bothner@cygnus.com>
10200
10201         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
10202         to make sure class is initialized before static/special invoke.
10203
10204         * verify.c (verify_jvm_instructions):  On a store instruction,
10205         call find_local_variable to force pre-allocation of decl and rtx.
10206         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
10207
10208 Wed Sep  3 16:13:23 1997  Per Bothner  <bothner@cygnus.com>
10209
10210         * class.c (build_class_ref):   Strip off "promoted_" if need be.
10211         (make_field_value): Call build_java_signature when needed.
10212         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
10213         * expr.c (build_java_athrow):  Don't push_value of exception.
10214         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
10215         match specification of [fd]cmp[lg] for NaNs.
10216         (expand_byte_code):  Add support for exception handler ranges.
10217         * except.c:  Add skeleton for EH code-generation.
10218         * verify.c (merge_types):  Treat all promoted integral types as equal.
10219         * constants.c (build_constants_constructor):  To force creation of
10220         current_constant_pool_data_ref, call build_constant_data_ref.
10221
10222         * javaop.def (lload):  Fix typo.
10223         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
10224
10225 Tue Sep  2 17:37:25 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10226
10227         * parse.c: Don't include function.h.
10228
10229 Wed Aug 27 18:33:04 1997  Per Bothner  <bothner@cygnus.com>
10230
10231         * except.[ch]:  New files.
10232         * Makefile.in (JAVA_OBJS):  Add except.o
10233         * expr.c:  Temporary warning about unimplemented exceptions.
10234         * verify.c:  Verify exception handlers.
10235
10236         * jcf-dump.c (disassemble_method):  Print exception table.
10237
10238 Wed Aug 27 13:26:58 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10239
10240         * expr.c (verify_jvm_instructions): Started a thorough
10241         verification of invoke* bytecodes.
10242         (expand_byte_code): flush quick stack if PC is the target of a
10243         branch.  and undef RET (conflicting with config/i386/i386.h).
10244         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
10245         used.
10246         (expand_invoke): Now handles invokeinterface and do more
10247         verification according to the bytecode.
10248         (lookup_field): Don't try to load the class if processing
10249         dtable_type.
10250         (can_widen_reference_to): Now handles interfaces.
10251         * decl.c (init_decl_processing): New global variable
10252         soft_lookupinterfacemethod_node, declared in java-tree.h.
10253         Call set_super_info on string_type_node.
10254         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
10255         defined.
10256         * class.c (set_super_info): Fills the CLASS_* flags according to
10257         access_flags.
10258         (get_access_flags_from_decl): Handles all class flags.
10259
10260 Tue Aug 26 18:54:34 1997  Per Bothner  <bothner@cygnus.com>
10261
10262         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
10263         * parse.c (yyparse):  Check for abstract method, and missing code.
10264         * expr.c (expand_byte_code):  Change interface.
10265         * lang.c (put_decl_node):  Print promoted types prettier.
10266         * verify.c (verify_jvm_instruction):  Change interface.
10267         Partial support for scanning exception table.
10268         For load instructions, handle promoted integral types.
10269
10270 Thu Aug 21 13:48:01 1997  Per Bothner  <bothner@cygnus.com>
10271
10272         * verify.c:  New file, with contents moved from expr.c.
10273         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
10274         * typeck.c (is_array_type_p):  Moved here from expr.c.
10275         * java-tree.h:  Add some now-needed function declarations.
10276         * Makefile.in (JAVA_OBJS): Added verify.o.
10277
10278 Wed Aug 20 14:34:34 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10279
10280         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
10281         METHOD_ABSTRACT flag.
10282
10283         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
10284         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
10285         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
10286
10287         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
10288         variables.
10289         (start_java_method): Hook for SYNCHRONIZED methods.
10290
10291         * expr.c (build_java_jsr, build_java_ret): New functions
10292         (JSR,PRE): New macros
10293         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
10294         (verify_jvm_instructions): tableswitch, lookupswitch,
10295         monitorenter, monitorexit, goto_w: verified.
10296         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
10297         (build_java_monitor): New function.
10298         (MONITOR_OPERATION): Modified to call build_java_monitor()
10299         (verify_jvm_instructions): Started a thorough verification of
10300         invoke* bytecodes.
10301
10302 Tue Aug 19 13:35:49 1997  Per Bothner  <bothner@cygnus.com>
10303
10304         Support verification of jsr/ret subroutines (used for try/finally).
10305         * decl.c (return_address_type_node):  New type node.
10306         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
10307         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
10308         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
10309         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
10310         TYPE_USED):  New macros for special types in type_map.
10311
10312         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
10313         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
10314         BCODE_JUMP_TARGET.
10315         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
10316
10317         * expr.c (can_widen_reference_to):  New function.
10318         (pop_type):  Use it.
10319         (merge_type_state):  Support handling start of subroutine.
10320         (push_pending_block):  Return char* error message, instead of calling
10321         fatal on an error.  Also handle subroutines.
10322         (verify_jvm_instructions):  Handle errors from push_poending_block.
10323         Support jsr and ret instructions.
10324
10325 Tue Aug 19 13:33:36 1997  Per Bothner  <bothner@cygnus.com>
10326
10327         * jcf-io.c (find_classfile):  Fix thinko.
10328         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
10329
10330 Tue Aug 12 20:14:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
10331
10332         * Makefile.in (BISON): Remove.
10333
10334 Thu Aug  7 23:08:24 1997  Per Bothner  <bothner@cygnus.com>
10335
10336         * Makefile.in:  Convert to autoconf.
10337         * config-lang.in (outputs):  Added java/Makefile.
10338
10339         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
10340         Rename cc1java to jc1.
10341
10342         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
10343         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
10344
10345         * class.c (class_depth):  Do load_class if needed.
10346
10347         Mostly better verification.
10348         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
10349         (init_decl_processing):  Change return type of soft_checkcast.
10350         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
10351         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
10352         lang_print_error):  New functions.
10353         (lang_init):  Set global hook print_error_function to lang_print_error.
10354         * expr.c:  In the type_map ptr_type_node is only used for null now.
10355         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
10356         (merge_types):  Dererence pointer to record types before comparing.
10357         (decode_newarray_type, merge_types):  On error just return NULL.
10358         (build_java_binop):  Add preliminary implementation (with warning)
10359         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
10360         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
10361         (expand_compare, expand_java_goto, expand_java_call):  Don't
10362         push_pending_block, since that only makes sense when verifying.
10363         (merge_type_state):  Different return codes.
10364         (push_pending_block):  A block may need to be verified more than once.
10365         (expand_byte_code):  Warn about unused code at code generation time.
10366         (verify_jvm_instruction):  Changed logic, since code may need to be
10367         re-verified if type-state has changed.  Also, better error handling.
10368         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
10369         Improve newarray, anewarray, ?aload, athrow,
10370         * java-tree.h (LABEL_CHANGED):  New macro.
10371
10372 Tue Aug  5 12:21:27 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10373
10374         * decl.c (soft_athrow_node): New global variable initialized.
10375         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
10376         * typeck.c (convert): Added support for REAL_TYPE.
10377         (convert_to_char): New function.
10378         (convert): Handle CHAR_TYPE.
10379         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
10380         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
10381         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
10382         promoted type.
10383         (verify_jvm_instructions): Added break a the end of bogus unop: label.
10384         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
10385         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
10386         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
10387         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
10388         to Use The Right Things.
10389         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
10390         compatible with INT. BOOLEAN is made equivalent to BYTE.
10391         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
10392         OPCODE_ifnonnull): Now supported.
10393         (build_java_athrow): New function.
10394
10395 Mon Aug  4 15:46:45 1997  Per Bothner  <bothner@cygnus.com>
10396
10397         Rename method name <init> to match G++ (and fix mangling).
10398         * class.c (layout_class):  Replace method name of <init> by class name.
10399         (make_method_value):  Do inverse renaming of constructor from <init>.
10400         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
10401         * typeck.c (lookup_java_constructor):  New function.
10402         * expr.c (expand_invoke):  If method_name is <init>, call
10403         lookup_java_constructor to find constructor.
10404
10405         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
10406
10407 Fri Aug  1 11:37:09 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10408
10409         * parse.c (get_class_constant): Modified to handle array "classes"
10410         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
10411         wide type.
10412         (convert): Modified to handle real type.
10413         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
10414         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
10415         variables declared.
10416         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
10417         soft_multianewarray, soft_newarray_node, soft_throw_node): New
10418         global variables initialized.
10419         (find_local_variable): Handles the case of a pointer
10420         (end_java_method): Restore the use of one more scope
10421         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
10422         build_java_array_length_access, expand_java_arrayload,
10423         expand_java_arraystore, expand_java_array_length,
10424         expand_java_multianewarray, expand_java_anewarray,
10425         build_java_check_indexed_type, is_array_type_p,
10426         build_java_throw_out_of_bound_exception): New functions.
10427         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
10428         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
10429         OPCODE_<t>aload): Implemented code for verification.
10430         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
10431         ARRAY_NEW_MULTI): Macro defined.
10432         (CONVERT): Modified to invoke convert().
10433         (case OPCODE_aload2): Fixed index typo from 2 to 1.
10434
10435 Thu Jul 31 12:48:18 1997  Per Bothner  <bothner@cygnus.com>
10436
10437         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
10438         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
10439         (make_class_data):  Field name needs '/' as package prefix.
10440         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
10441
10442 Fri Jul 25 11:44:21 1997  Per Bothner  <bothner@cygnus.com>
10443
10444         Implement debug information for local variables.
10445         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
10446         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
10447         DECL_LOCAL_SLOT_CHAIN):  New macros.
10448         (struct lang_decl_var):  New type.
10449         * parse.c (give_name_to_locals):  Move to decl.c.
10450         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
10451         (start_java_method):  Re-write parameter handling.
10452         (pending_local_decls):  New global variable.
10453         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
10454         (find_local_variable):  Accept pc so we can skips decls not in range.
10455         (struct binding_level):  Add end_pc field.
10456         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
10457         (various):  Change so current pc gets passed to find_local_variable.
10458
10459         * decl.c (init_decl_processing):  Re-arrange fields in
10460         class_type_node and and method_type_node to match kaffe 0.9.1.
10461         * class.c (make_method_value, make_class_data):  Update
10462         initializations to match.
10463
10464 Wed Jul 16 17:17:50 1997  Per Bothner  <bothner@cygnus.com>
10465
10466         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
10467         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
10468         (push_super_field):  New function.
10469         (make_class_data):  Handle inheritance of class static initializer.
10470         (layout_class):  New name mangling.
10471         * constants.c (build_constant_data_ref):  Init type of data array
10472         to a one-element array.
10473         (build_constants_constructor):  Set DECL_SIZE from complete array type.
10474         * decl.c:  Rename class_type, object_type etc to class_type_node,
10475         object_type_node etc.  Make former inherit from latter.
10476         * expr.c (expand_invoke):  Add cast of function address.
10477         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
10478         * parse.c (yyparse):  Don't call layout_class here.
10479         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
10480
10481 Sat Jun 14 12:06:57 1997  Per Bothner  <bothner@cygnus.com>
10482
10483         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
10484         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
10485         (alloc_class_constant):  New.
10486         * expr.c (expand_invoke):  Make sure method's class is initialized.
10487         * class.c (interits_from_p, emit_register_class):  New functions.
10488         * parse.c (yyparse):  Call emit_register_class.
10489
10490 Mon Jun  9 18:08:06 1997  Per Bothner  <bothner@cygnus.com>
10491
10492         * constants.c:  New file, to handle constant pool.
10493         * Makefile.in (JAVA_OBJS):  Add constants.o.
10494         * decl.c (init_decl_processing):  Update, fix, finish various structs.
10495         (pushdecl_top_level):  New.
10496         * parse.c (layout_class):  Moved to class.c.
10497         * expr.c (java_push_constant_from_pool):  New function.
10498         * class.c (build_class_ref):  Make work fully
10499         (make_class_data):  Emit super-class, constant pool, interface vector.
10500
10501 Tue Jun  3 10:14:31 1997  Per Bothner  <bothner@cygnus.com>
10502
10503         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
10504         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
10505         * class.c (class_depth):  New function.
10506         (lookup_named_class):  Replaced by new function lookup_class.
10507         * decl.c (object_type_node, string_type_node):  New.
10508         Remove various types that we no longer need.
10509         * expr.c (verify_jvm_instructions):  New separate verifier pass.
10510         (push_type, pop_type):  New functions for verifier.
10511         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
10512         (expand_byte_code):  Simplify, since we assume already verified.
10513         (expand_invoke):  Now mostly works.
10514         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
10515         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
10516         * parse.c:  Wait to allocate class object until we know its name.
10517         (layout_class):  Calculate DECL_VINDEX for each virtual method.
10518         * typeck.c (get_array_type):  Rename to ...
10519         (build_java_array_type):  ... and provide working implementation.
10520         (build_java_signature):  New function - build Java signature of type.
10521         (set_java_signature):  New function - cache signature with type.
10522         (lookup_java_method):  New function.
10523
10524 Tue May  6 22:08:24 1997  Per Bothner  <bothner@deneb.cygnus.com>
10525
10526         * class.c (ident_subst):  Take extra SUFFIX parameter.
10527         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
10528         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
10529         (build_class_ref):  Actually implement.
10530         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
10531         * decl.c (builtin_function):  New.
10532         (init_decl_processing):  Update for current Kaffe.  Declare some
10533         builtin Kaffe functions.
10534         * expr.c (build_address_of):  New.
10535         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
10536         Renamed (from expand_java_new etc), and added working implementations.
10537         (build_field_ref):  Now also handle static fields.
10538         (expand_invoke):  Implement invokestatic, and start implement rest.
10539         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
10540         * javaop.def:  Rename invokevirt -> invokevirtual.
10541         * lang.c (use_handles):  Removed.
10542         * parse.c:  Add support for ConstantValue atribute.
10543         Handle nested loading of a class.  (JPOOL_UTF):  New.
10544
10545 Tue Mar 11 20:11:05 1997  Per Bothner  <bothner@deneb.cygnus.com>
10546
10547         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
10548
10549 Thu Feb 27 14:24:29 1997  Per Bothner  <bothner@deneb.cygnus.com>
10550
10551         * Make-lang.in (java.install-man):  New empty rule.
10552         * typeck.c (set_local_type):  New function.
10553         * expr.c (STORE_INTERNAL):  Call find_local_variable,
10554         not find_stack_slot.  Call set_local_type.
10555
10556 Wed Feb 12 16:11:05 1997  Per Bothner  <bothner@kalessin.cygnus.com>
10557
10558         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
10559         and building RECORD_TYPE CONSTRUCTORs.
10560         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
10561
10562         * lang.c (use_handles):  Change the default to 0.
10563         * decl.c:  Define and build class_type, field_type, utf8const_type.
10564         * class.c (make_class_data, make_field_value,
10565         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
10566         hashUtf8String, strLengthUtf8, mangled_classname:
10567         Functions to build reflective data structures.
10568         * parse.c (yyparse):  Call make_class_data.
10569
10570         * jcf-io.c (open_class, find_classfile):  New functions.
10571         * jcf-dump.c:  Support reading classfile from explicitly-named
10572         class file (without CLASSPATH searching).
10573
10574 Thu Oct 24 14:10:16 1996  Per Bothner  <bothner@deneb.cygnus.com>
10575
10576         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
10577         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
10578         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
10579         (get_constant):  Now trivial for CONSTANT_Utf8.
10580
10581         * jcf.h:  Make NEW_CPOOL the default.
10582         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
10583
10584 Thu Oct 24 13:52:45 1996  Per Bothner  <bothner@deneb.cygnus.com>
10585
10586         New directory.