OSDN Git Service

f5c1a0e77d16b5031c71d5a09e4675be731ba60a
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2000-11-07  Tom Tromey  <tromey@cygnus.com>
2
3         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
4         * lex.c (java_ignorable_control_p): Removed.
5         (java_letter_or_digit_p): Removed.
6         (java_start_char_p): New function.
7         (java_read_char): Return `int', not `unicode_t'.  Changed
8         callers.
9         (java_read_unicode): Likewise.
10         (java_read_unicode_collapsing_terminators): Likewise.
11         (java_get_unicode): Likewise.
12         (java_new_lexer): Initialize hit_eof.
13         (java_parse_end_comment): Take `int' argument.
14         (java_parse_doc_section): Likewise.
15         (java_parse_escape_sequence): Don't allow backlash-newline.
16         Return `int'.
17         * lex.h (JAVA_DIGIT_P): Removed.
18         (_JAVA_LETTER_OR_DIGIT_P): Removed.
19         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
20         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
21         (JAVA_PART_CHAR_P): New macro.
22         (UEOF): Now -1.
23         (JAVA_CHAR_ERROR): Now -2.
24         (java_lexer): New field `hit_eof'.
25         * chartables.h: New file.
26         * gen-table.pl: new file.
27
28 2000-11-20  Tom Tromey  <tromey@cygnus.com>
29             Alexandre Petit-Bianco  <apbianco@cygnus.com>
30
31         * parse.y (java_complete_lhs): Only allow compound assignment of
32         reference type if type is String.
33
34 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
35
36         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
37         jcf-path.c: Likewise.
38
39 2000-12-09  Anthony Green  <green@redhat.com>
40
41         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
42         filestart and filename_length as int values.
43
44 2000-12-07  Mo DeJong  <mdejong@redhat.com>
45
46         * jcf-io.c (find_class): Correct the logic that tests to see if a
47         .java file is newer than its .class file. The compiler was
48         incorrectly printing a warning when file mod times were equal.
49
50 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
51
52         * jvgenmain.c: Use ISPRINT not isascii.
53
54 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
55
56         * parse.y (end_artificial_method_body): Fixed typo.
57
58 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
59
60         * parse.y (patch_method_invocation): Pick the correct enclosing
61         context when creating inner class instances.
62         Fixes gcj/332.
63
64 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
65
66         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
67         Update copyright year to 2000.
68
69 2000-11-23  Anthony Green  <green@redhat.com>
70
71         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
72         Move current_file_list out of yyparse and make it static.
73
74         * expr.c: Declare quick_stack and tree_list_free_list as static
75         (init_expr_processing): Register quick_stack and
76         tree_list_free_list roots.
77
78 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
79
80         * parse.y (build_outer_field_access): New local `decl_ctx', use
81         it. Check for field's context and current class immediate outer
82         context inheritance.
83         (outer_field_access_p): Consider fields inherited from the last
84         enclosing context.
85         (build_access_to_thisn): Stop at the last enclosing context if
86         necessary.
87         Fixes gcj/367.
88
89 Thu Nov 23 02:19:14 2000  J"orn Rennecke <amylaar@redhat.com>
90
91         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
92
93 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
94
95         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
96         scratch buffer.
97
98 2000-11-20  Tom Tromey  <tromey@cygnus.com>
99
100         * jv-scan.c (help): Document --complexity.
101         (options): Added --complexity.
102         (flag_complexity): New global.
103         (main): Call `report'.
104         * parse-scan.y (complexity): New global.
105         (if_then_statement, if_then_else_statement,
106         if_then_else_statement_nsi, switch_block_statement_group,
107         while_expression, do_statement, for_begin, continue_statement,
108         throw_statement, catch_clause, finally, method_invocation,
109         conditional_and_expression, conditional_or_expression,
110         conditional_expression): Update complexity.
111         (reset_report): Reset complexity.
112         (report): New function.
113
114 2000-11-20  Tom Tromey  <tromey@cygnus.com>
115
116         * lex.c (yylex): Added STRICT_TK case.
117         * parse.y (STRICT_TK): Added.
118         * parse-scan.y (STRICT_TK): Added.
119         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
120         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
121         file.
122         * keyword.h: Rebuilt.
123         * keyword.gperf (strictfp): Added.
124
125 2000-11-20  Tom Tromey  <tromey@cygnus.com>
126
127         * lex.c (yylex): Recognize floating point constants with leading
128         0.
129
130 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
131
132         * java-tree.h (cyclic_inheritance_report): Constify.
133         * parse.y (cyclic_inheritance_report): Likewise.
134
135 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
136
137         * parse.y (goal): Remove call to ggc_add_string_root.
138
139 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
140
141         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
142         Create string in scratch buffer, then pass to build_string.
143
144 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
145
146         * parse.y (issue_warning_error_from_context): Add
147         ATTRIBUTE_PRINTF.
148
149 2000-11-11  Anthony Green  <green@redhat.com>
150
151         * jcf-parse.c (process_zip_dir): Add finput parameter.
152         (jcf_figure_file_type): Call process_zip_dir with appropriate
153         argument.
154
155 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
156
157         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
158         * jcf-parse.c (jcf_figure_file_type): Likewise.
159
160 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
161
162         * parse.y (create_new_parser_context): Use memset () instead of
163         bzero ().
164
165 2000-11-08  Tom Tromey  <tromey@cygnus.com>
166
167         * gjavah.c (process_file): Only include gcj/cni.h when generating
168         CNI stubs.
169
170 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
171
172         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
173         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
174         instead of bzero ().
175
176 2000-11-05  Tom Tromey  <tromey@cygnus.com>
177
178         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
179         * lex.c (IS_ZERO): New define.
180         (java_perform_atof): Error on floating point underflow.
181
182 2000-11-04  Tom Tromey  <tromey@cygnus.com>
183
184         * lex.c (java_parse_escape_sequence): Only read two octal
185         characters if the first one is greater than 3.  Don't allow
186         "octal" numbers to include the digits 8 or 9.
187
188 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
189
190         * Make-lang.in (java.distdir): Remove.
191
192 2000-11-03  Tom Tromey  <tromey@cygnus.com>
193
194         * Make-lang.in (java.dvi): New target.
195         Partial fix for PR other/567.
196
197         * lang-options.h: Mention -Wout-of-date.
198         * jcf-dump.c (flag_newer): New global.
199         * gjavah.c (flag_newer): New global.
200         * jcf-io.c (find_class): Only warn when flag_newer set.
201         * lang.c (flag_newer): New global.
202         (struct string_option): New declaration.
203         (lang_W_options): New global.
204         (process_option_with_no): New function.
205         (lang_decode_option): Use it.
206
207         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
208         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
209         `$'.
210
211         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
212         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
213         * lex.c (java_read_unicode): Removed `term_context' argument.
214         Recognize any number of `u' in `\u'.
215         (java_read_unicode_collapsing_terminators): New function.
216         (java_get_unicode): Use it.
217         (java_lineterminator): Removed.
218         (yylex): Produce error if character literal is newline or single
219         quote.  Return if eof found in middle of `//' comment.  EOF in
220         `//' comment is only an error if pedantic.
221         (java_ignorable_control_p): New function.
222         (java_parse_end_comment): Return if eof found in middle of
223         comment.
224         Include flags.h.
225         * jv-scan.c (pedantic): New global.
226
227 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
228
229         * parse.y (outer_field_access_p): Inherited fields aren't
230         consider outer fields.
231         (maybe_build_thisn_access_method): Use
232         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
233         (resolve_expression_name): Trigger an error if a static field
234         is being accessed as an outer field.
235
236 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
237
238         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
239         Fixes gcj/365.
240
241 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
242
243         * Make-lang.in: Move all build rules here from Makefile.in,
244         adapt to new context.  Wrap all rules that change the current
245         directory in parentheses.  Expunge all references to $(P).
246         When one command depends on another and they're run all at
247         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
248         all object-file generation rules.  Delete obsolete variables.
249
250         * Makefile.in: Delete.
251         * config-lang.in: Delete outputs= line.
252
253 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
254
255         * parse.y (patch_method_invocation): NULLify this_arg when already
256         inserted.
257         (maybe_use_access_method): Handle call to methods unrelated to the
258         current class. Fixed comment.
259         Fixes gcj/361.
260
261 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
262
263        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
264        scope.
265
266 2000-10-24  Tom Tromey  <tromey@cygnus.com>
267
268         * lex.c (java_new_lexer): Initialize new fields.  Work around
269         broken iconv() implementations.
270         (java_read_char): Swap bytes if required.  Use fallback decoder if
271         required.
272         (byteswap_init, need_byteswap): New globals.
273         (java_destroy_lexer): Only close iconv handle if it is in use.
274         * lex.h (java_lexer): New fields read_anything, byte_swap,
275         use_fallback.
276         Made out_buffer unsigned.
277
278 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
279
280         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
281         where an enclosing context can be set on the jdep.
282         (do_resolve_class): Fixed identation.
283
284 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
285
286         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
287
288         * jcf-reader.c (peek_attribute, skip_attribute): Only define
289         when requested.
290
291         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
292
293         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
294
295 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
296
297         * jcf-write.c (OP1): Update `last_bc'.
298         (struct jcf_block): Fixed indentation and typo in comments.  New
299         field `last_bc'.
300         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
301         follows `monitorenter'.
302         * parse.y (patch_synchronized_statement): New local `tmp'. Call
303         `patch_string'.
304         Fixes gcj/232.
305
306 2000-10-16  Tom Tromey  <tromey@cygnus.com>
307
308         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
309         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
310         * lang-options.h: Added -MA, -MT, -MF..
311         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
312         (DEPEND_TARGET_SET): New macro.
313         (DEPEND_FILE_ALREADY_SET): Likewise.
314         (init_parse): Handle new flags.
315         * jcf.h (jcf_dependency_print_dummies): Declare.
316         * Make-lang.in (s-java): Added mkdeps.o.
317         * Makefile.in (BACKEND): Added mkdeps.o.
318         (../gcjh$(exeext)): Added mkdeps.o.
319         (../jcf-dump$(exeext)): Added mkdeps.o.
320         * jcf-depend.c: Include mkdeps.h.
321         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
322         add_entry): Removed.
323         (jcf_dependency_reset): Rewrote.
324         (dependencies): New global.
325         (jcf_dependency_set_target): Rewrote.
326         (jcf_dependency_add_target): Likewise.
327         (jcf_dependency_add_file): Likewise.
328         (munge): Removed.
329         (print_ents): Removed.
330         (jcf_dependency_write): Rewrote.
331         (print_dummies): New global.
332         (jcf_dependency_print_dummies): New function
333         (jcf_dependency_write): Call deps_dummy_targets if required.
334
335 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
336
337         * gjavah.c (add_class_decl): Removed unused variables `tname',
338         `tlen' and `name_index'.
339         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
340         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
341         in `wfl_operator' with value.
342         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
343         (jcf_figure_file_type): Fixed identation.
344         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
345         * parse.y (analyze_clinit_body): New function.
346         (static_initializer:): Reset `current_static_block'.
347         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
348         `wfl_operator' with new value.
349         (lookup_cl): Use EXPR_WFL_FILENAME.
350         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
351         analyze_clinit_body.
352         (build_outer_field_access): Access to this$<n> built from
353         current_class, not its outer context.
354         (build_access_to_thisn): Fixed leading comment. Tidied things up.
355         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
356         (patch_method_invocation): Use `is_static_flag' when already
357         initialized.
358         (patch_newarray): Removed assignment in ternary operator.
359
360 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
361
362         * except.c (free_eh_ranges): Don't free `whole_range'.
363
364 2000-10-15  Anthony Green  <green@redhat.com>
365
366         * decl.c (init_decl_processing): Call init_class_processing before
367         anything else.
368
369 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
370
371         * check-init.c (check_init): Fixed leading comment. Use
372         LOCAL_FINAL_P.
373         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
374         (give_name_to_locals): Likewise.
375         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
376         fields in lang_decl_var.
377         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
378         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
379         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
380         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
381         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
382         (LOCAL_FINAL): Rewritten.
383         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
384         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
385         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
386         `init_final' fields.
387         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
388         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
389         (TYPE_HAS_FINAL_VARIABLE): New macro.
390         (struct lang_type): Added `afv' field.
391         * parse.y (check_static_final_variable_assignment_flag): New function.
392         (reset_static_final_variable_assignment_flag): Likewise.
393         (check_final_variable_local_assignment_flag): Likewise.
394         (reset_final_variable_local_assignment_flag): Likewise.
395         (check_final_variable_indirect_assignment): Likewise.
396         (check_final_variable_global_assignment_flag): Likewise.
397         (add_inner_class_fields): Use LOCAL_FINAL_P.
398         (register_fields): Handle local finals and final variables.
399         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
400         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
401         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
402         on local finals.
403         (java_complete_expand_methods): Loop to set
404         TYPE_HAS_FINAL_VARIABLE. Call
405         `reset_final_variable_local_assignment_flag' and
406         `check_final_variable_local_assignment_flag' accordingly before
407         and after constructor expansion. Call
408         `reset_static_final_variable_assignment_flag'
409         before expanding <clinit> and after call
410         `check_static_final_variable_assignment_flag' if the
411         current_class isn't an interface. After all methods have been
412         expanded, call `check_final_variable_global_assignment_flag' and
413         `check_static_final_variable_assignment_flag' if the current class
414         is an interface.
415         (maybe_yank_clinit): Fixed typo in comment.
416         (build_outer_field_access_methods): Removed old sanity check. Use
417         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
418         Don't create access methods for finals.
419         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
420         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
421         existing DECL_INIT has been processed.
422         (java_complete_lhs): Likewise.
423         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
424         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
425         logic.
426         (patch_assignment): Use LOCAL_FINAL_P.
427         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
428         DECL_INITIAL is nullified.
429         Fixes gcj/163.
430
431 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
432
433         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
434
435         * Makefile.in (parse.c, parse-scan.c): Likewise.
436
437 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
438
439         * class.c (temporary_obstack): Remove.
440         (make_class): Don't mess with obstascks.
441         (push_class): Likewise.
442         (set_super_info): Likewise.
443         (add_method_1): Likewise.
444         (add_method): Likewise.
445         (add_field): Likewise.
446         (build_utf8_ref): Likewise.
447         (build_class_ref): Likewise.
448         (build_static_field_ref): Likewise.
449         (finish_class): Likewise.
450         (push_super_field): Likewise.
451         (layout_class): Likewise.
452         (layout_class_methods): Likewise.
453         (init_class_processing): Likewise.
454         * constants.c (get_tag_node): Likewise.
455         (build_constant_data_ref): Likewise.
456         * decl.c (ggc_p): Remove.
457         (copy_lang_decl): Use ggc_alloc.
458         (complete_start_java_method): Don't mess with obstacks.
459         (start_java_method): Likewise.
460         (end_java_method): Likewise.
461         * except.c (link_handler): Use xmalloc.
462         (free_eh_ranges): New function.
463         (method_init_exceptions): Use it.
464         (add_handler): Use xmalloc.
465         (expand_start_java_handler): Don't mess with obstacks.
466         (prepare_eh_table_type): Likewise.
467         (expand_end_java_handler): Likewise.
468         * expr.c (push_value): Likewise.
469         (create_label_decl): Likewise.
470         (build_jni_stub): Likewise.
471         (java_lang_expand_expr): Likewise.
472         (note_instructions): Use xrealloc.
473         (java_push_constant_from_pool): Don't mess with obstacks.
474         (process_jvm_instruction): Likewise.
475         * java-tree.h (cyclic_inheritance_report): Remove duplicate
476         declaration.
477         * jcf-parse.c (get_constant): Don't mess with obstacks.
478         (read_class): Likewise.
479         (jcf_parse): Likewise.
480         * lex.c (expresion_obstack): Remove.
481         (java_lex): Don't use obstack_free.
482         * parse.h (exit_java_complete_class): Don't mess with obstacks.
483         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
484         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
485         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
486         * parse.y (gaol): Add more GC roots.
487         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
488         (lookup_field_wrapper): Likewise.
489         (obtain_incomplete_type): Don't mess with obstacks.
490         (build_alias_initializer_paramter_list): Adjust calls to MANGLE_*
491         macros.
492         (craft_constructor): Don't mess with obstacks.
493         (safe_layout_class): Likewise.
494         (java_complete_class): Likewise.
495         (source_end_java_method): Likewise.
496         (build_outer_field_access_methods): Likewise.
497         (build_outer_method_access_method): Likewise.
498         (maybe_build_thisn_access_method): Likewise.
499         (build_dot_class_method_invocation): Likewise.
500         (java_complete_tree): Likewise.
501         (java_complete_lhs): Likewise.
502         (do_merge_string_cste): Likewise.
503         (patch_string_cst): Likewise.
504         (array_constructor_check_entry): Likewise.
505         * typeck.c (build_java_array_type): Likewise.
506         (parse_signature_string): Likewise.
507         (build_java_signature): Likewise.
508
509 2000-10-12  Tom Tromey  <tromey@cygnus.com>
510
511         Fix for PR gcj/356:
512         * gjavah.c (add_class_decl): Don't special-case inner classes.
513         (add_namelet): Likewise.
514
515 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
516
517         * java-tree.h: Constify current_encoding.
518         * lang.c: Constify current_encoding.
519
520 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
521
522         * jvgenmain.c (class_mangling_suffix): Omit `.'.
523         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
524
525 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
526
527         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
528         patch. Fixes gcj/340.
529
530 2000-10-10  Tom Tromey  <tromey@cygnus.com>
531
532         * lex.c (java_new_lexer): Initialize out_first and out_last
533         fields.
534         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
535
536 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
537
538         * parse.y (pop_current_osb): New function.
539         (array_type:): Use `dims:', changed actions
540         accordingly. Suggested by Anthony Green.
541         (array_creation_expression:): Used pop_current_osb.
542         (cast_expression:): Likewise.
543         (search_applicable_method_list): Fixed indentation.
544
545 2000-10-08  Anthony Green  <green@redhat.com>
546
547         * parse.y (array_type_literal): Remove production.
548         (type_literals): Refer to array_type, not array_type_literal.
549
550 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
551
552         Patch contributed by Corey Minyard.
553         * decl.c (check_local_named_variable): New function.
554         (tree check_local_unnamed_variable): Likewise.
555         (find_local_variable): Splitted. Call check_local_{un}named_variable.
556
557 2000-10-07  Anthony Green  <green@redhat.com>
558
559         * class.c (layout_class): Handle case where superclass can't be
560         layed out yet.
561
562 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
563
564         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
565         gperf.
566
567 2000-10-05  Tom Tromey  <tromey@cygnus.com>
568
569         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
570         * jvgenmain.c (class_mangling_prefix): Removed.
571         (class_mangling_suffix): New global.
572         (main): Use it.
573         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
574         `$'.
575         (print_method_info): Handle overrides for static and final
576         methods.
577         (process_file): Generate declaration for class object field.
578         * class.c (cxx_keywords): New array.
579         (utf8_cmp): New function.
580         (cxx_keyword_p): New function.
581         (layout_class_method): Mangle C++ keywords by appending `$'.
582         (mangle_field): New function.
583         (mangle_class_field): Use mangle_field.  Mangle class name as
584         `class$'.
585         (mangle_static_field): Use mangle_field.
586
587 Tue Oct  3 13:44:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
588
589         * decl.c (find_local_variable): Removed uncessary type check and
590         fixed range check typo. From Corey Minyard.
591
592 Wed Sep 13 16:06:52 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
593
594         * decl.c (give_name_to_locals): New local `code_offset'. Call
595         `maybe_adjust_start_pc'.
596         * expr.c (note_instructions): New function.
597         (expand_byte_code): Don't collect insn starts here.
598         (peek_opcode_at_pc): New function.
599         (maybe_adjust_start_pc): Likewise.
600         * java-tree.h (maybe_adjust_start_pc): Declare.
601         (note_instructions): Likewise.
602         * jcf-parse.c (parse_class_file): Call `note_instructions'.
603
604 Wed Sep 13 11:50:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
605
606         * parse.y (field_access:): Fixed indentation.
607         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
608
609 2000-09-07  Tom Tromey  <tromey@cygnus.com>
610
611         Fix for PR gcj/307:
612         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
613         JPRIMITIVE_TYPE_P, for arithmetic operators.
614         (patch_method_invocation): Indentation fix.
615         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
616         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
617         (do_unary_numeric_promotion): Cleaned up code.
618         (valid_cast_to_p): Handle boolean correctly.
619
620 2000-09-27  Tom Tromey  <tromey@cygnus.com>
621
622         * lex.c (java_read_unicode): Reset bs_count when finished with
623         `\u' sequence.
624
625 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
626
627         Convert to GC.
628         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
629         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
630         (typeck.o): Depend on ggc.h.
631         * class.c (add_method_1): Use GC functions for allocation.
632         (init_class_processing): Register roots.
633         * decl.c (ggc_p): Set to 1.
634         (pending_local_decls): Make it static.
635         (push_jvm_slot): Use GC functions for allocation.
636         (init_decl_processing): Register roots.
637         (give_name_to_locals): Use GC functions for allocation.
638         (lang_mark_tree): New function.
639         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
640         functions for allocation.
641         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
642         * lex.c (java_lex): Use build_string, rather than replicating it
643         inline.
644         * parse.y (goal): Add more roots.
645         (mark_parser_ctxt): New function.
646         * typeck.c: Include ggc.h.
647
648 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
649
650         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
651         contains something else than MODIFY_EXPR.
652
653 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
654
655         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
656         * Makefile.in (parse.o): Depend on ggc.h.
657         (class.o): Likewise.
658         (constants.o): Likewise.
659         (decl.o): Likewise.
660         (expr.o): Likewise.
661         (jcf-parse.o): Likewise.
662         (jcf-write.o): Likewise.
663         (mangle.o): Likewise.
664         * class.c: Include ggc.h.
665         (build_static_field_ref): Register GC roots.
666         (layout_class): Likewise.
667         (init_class_processing): Likewise.
668         * constants.c: Include ggc.h.
669         (current_constant_pool_data_ref): Remove.
670         (tag_nodes): Move it to ...
671         (get_tag_node): ... here.  Register GC roots.
672         * decl.c: Include ggc.h.  Remove many global tree definitions.
673         (throw_node): Define.
674         (java_global_trees): Likewise.
675         (predef_filenames): Make the size a constant.
676         (init_decl_processing): Adjust accordingly.
677         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
678         * expr.c: Include ggc.h.
679         (init_expr_processing): Register GC roots.
680         (build_invokeinterface): Likewise.
681         * java-tree.h: Replace extern tree declarations with macros.
682         (java_global_trees): New variable.
683         (java_tree_index): New enumeration.
684         (init_jcf_parse): Declare.
685         * jcf-parse.c: Include ggc.h.
686         (current_class): Remove declaration.
687         (main_class): Likewise.
688         (all_class_list): Likewise.
689         (predefined_filename_p): Adjust for constant size of
690         predef_filenames.
691         (init_jcf_parse): New function.
692         * jcf-write.c: Include ggc.h.
693         (generate_classfile): Register GC roots.
694         (append_synthetic_attribute): Likewise.
695         (append_innerclass_attribute_entry): Likewise.
696         * lang.c: Include ggc.h.
697         (lang_print_error): Register GC roots.
698         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
699         with macros.
700         * parse.y: Include ggc.h.
701         (wfl_operator): Remove.
702         (goal): Register GC roots.
703         (java_pop_parser_context): Adjust for new field names.
704         (java_parser_context_save_global): Likewse.
705         (java_parser_context_restore_global): Likewise.
706         (java_parser_context_suspend): Likewise.
707         (java_parser_context_resume): Likewise.
708         (verify_constructor_circularity): Register GC roots.
709         (lookup_cl): Likewise.
710         (java_reorder_fields): Likewise.
711         (build_current_this): Likewise.
712         (class_in_current_package): Likewise.
713         (argument_types_convertible): Likewise.
714         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
715
716 2000-09-14  Tom Tromey  <tromey@cygnus.com>
717
718         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
719
720 2000-09-13  Tom Tromey  <tromey@cygnus.com>
721
722         * jcf-parse.c: Include <locale.h>.
723         * jv-scan.c: Include <locale.h>.
724
725 2000-09-12  Tom Tromey  <tromey@cygnus.com>
726
727         * expr.c (pop_type_0): Return `Object' if trying to merge two
728         interface types.
729         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
730         interface types; `Object' is always a valid supertype.
731
732 2000-09-12  Tom Tromey  <tromey@cygnus.com>
733
734         Fix for PR gcj/33:
735         * jv-scan.c (help): Document --encoding.
736         (options): Added `encoding' entry.
737         (OPT_ENCODING): New define.
738         (main): Handle --encoding.
739         Include <langinfo.h> if nl_langinfo exists.
740         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
741         --encoding.
742         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
743         (parse_source_file): Correctly call java_init_lex.  Added `finput'
744         argument.  Use nl_langinfo to determine default encoding.
745         * java-tree.h (current_encoding): Declare.
746         * parse.y (java_parser_context_restore_global): Don't restore
747         `finput'.
748         (java_parser_context_save_global): Don't set `finput' field.
749         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
750         if required.
751         * lang.c (current_encoding): New global.
752         (lang_decode_option): Recognize `-fencoding='.
753         (finish_parse): Don't close finput.
754         * parse.h (struct parser_ctxt): Removed `finput' and
755         `unget_utf8_value' fields.  Added `lexer' field.
756         (java_init_lex): Fixed declaration.
757         * lex.c (java_new_lexer): New function.
758         (java_destroy_lexer): Likewise.
759         (java_read_char): Added `lex' argument.  Handle iconv case.
760         (java_read_unicode): Added `lex' argument.  Count backslashes in
761         lexer structure.
762         (java_init_lex): Added `finput' and `encoding' arguments.  Set
763         `lexer' field in ctxp.
764         (BAD_UTF8_VALUE): Removed.
765         (java_lex): Handle seeing UEOF in the middle of a string literal.
766         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
767         (java_lexer): New structure.
768         (UNGETC): Removed.
769         (GETC): Removed.
770         (DEFAULT_ENCODING): New define.
771         (java_destroy_lexer): Declare.
772
773 2000-09-12  Tom Tromey  <tromey@cygnus.com>
774
775         Fix for PR gcj/343:
776         * lex.c (java_init_lex): Initialize java_io_serializable.
777         * parse.y (java_io_serializable): New global.
778         (valid_ref_assignconv_cast_p): An array can be cast to
779         serializable.
780
781 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
782
783         * decl.c, expr.c: Include defaults.h if not already included.
784         Don't define the *_TYPE_SIZE macros.
785
786 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
787
788         * typeck.c (build_java_array_type): Correct first parameter
789         in ADJUST_FIELD_ALIGN invocation.
790
791 2000-09-06  Tom Tromey  <tromey@cygnus.com>
792
793         * lang-specs.h: Also recognize `-femit-class-files'.
794
795 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
796
797         * verify.c (merge_types): Load the types to merge if necessary.
798
799 2000-09-02  Anthony Green  <green@redhat.com>
800
801         * jcf-io.c: Include zlib.h.
802         (open_in_zip): Read compressed class file archives.
803         * zipfile.h (ZipDirectory): Add uncompressed_size and
804         compression_method fields.
805         * zextract.c (read_zip_archive): Collect file compression info.
806
807 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
808
809         * parse.y (do_resolve_class): Also explore superclasses of
810         intermediate enclosing contexts when searching for inner classes.
811
812 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
813
814         * parse.y (variable_declarator_id:): Better error message.
815         (expression_statement:): Use YYNOT_TWICE.
816         (cast_expression:): Likewise.
817         (assignment:): Likewise.
818
819 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
820
821         * parse.y (do_merge_string_cste): New locals. Create new
822         STRING_CSTs each time, use memcpy. Fixes gcj/311.
823
824 2000-08-07  Hans Boehm  <boehm@acm.org>
825
826         * boehm.c (mark_reference_fields): Set marking bits for all words in
827         a multiple-word record.
828         (get_boehm_type_descriptor): Use the procedure marking descriptor for
829         java.lang.Class.
830
831 2000-08-31  Mike Stump  <mrs@wrs.com>
832
833         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
834         jcf-dump$(exeext)): Make parallel safe.
835
836 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
837
838         * jcf-parse.c (set_source_filename): Constify a char *.
839         * jcf-write.c (append_innerclasses_attribute,
840         make_class_file_name): Constify a char *.  Don't recycle a
841         variable for an unrelated purpose.
842         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
843         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
844
845 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
846
847         * expr.c (can_widen_reference_to): Fixed indentation.
848         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
849         * parse.y: `finit$' replaces `$finit$' in comments.
850         (try_builtin_assignconv): Fixed leading comment.
851
852 2000-08-25  Greg McGary  <greg@mcgary.org>
853
854         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
855
856 2000-08-24  Greg McGary  <greg@mcgary.org>
857
858         * lang.c (lang_decode_option): Use ARRAY_SIZE.
859         * parse.y (BINOP_LOOKUP): Likewise.
860
861 2000-08-22  Andrew Haley  <aph@cygnus.com>
862
863         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
864         sign extending. Fixes gcj/321.
865         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
866         combining to make a jlong. Fixes gcj/321.
867
868 2000-08-21  Nix  <nix@esperi.demon.co.uk>
869
870         * lang-specs.h: Do not process -o or run the assembler if
871         -fsyntax-only.
872
873 2000-08-16  Andrew Haley  <aph@cygnus.com>
874
875         * typeck.c (build_java_array_type): Rewrite code to do array
876         alignment.  Take into account back-end macros when aligning array
877         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
878         user to set alignment. Fixes gcj/252 and 160.
879
880 2000-08-09  Tom Tromey  <tromey@cygnus.com>
881
882         * parse.y (check_abstract_method_definitions): Now return `int'.
883         Check implemented interfaces.  Fixes PR gcj/305.
884
885         * parse.y (patch_switch_statement): Disallow `long' in switch
886         expressions.  Fixes PR gcj/310.
887
888 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
889
890         * decl.c (finit_leg_identifier_node): New global.
891         (init_decl_processing): Use `finit$' to initialize
892         finit_identifier_node. Use `$finit$' to initialize
893         finit_leg_identifier_node.
894         * expr.c (expand_java_field_op): Use ID_FINIT_P.
895         * java-tree.h (finit_identifier_node): Changed attached comment.
896         (finit_leg_identifier_node): New declaration.
897         (ID_FINIT_P): Take finit_identifier_node and
898         finit_leg_identifier_node into account. This is a backward
899         compatibility hack.
900
901 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
902
903         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
904         Jan 6 2000 patch.
905         (generate_bytecode_insns): Check `nargs' before emitting it.
906         * verify.c (merge_type_state): Fixed typo.
907         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
908         generate_bytecode_{conditional,insns}.
909
910 Sun Aug 13 09:41:49 2000  Anthony Green  <green@redhat.com>
911
912         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
913         for -pg builds).
914
915 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
916
917         * class.c (maybe_layout_super_class): Fixed indentation.
918         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
919         (java_check_methods): New function declaration.
920         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
921         instead of `str_ptr'.
922         * jcf-write.c (generate_bytecode_insns): Emit number the of args
923         of a `invokeinterface' at the right time.
924         * parse.h (WFL_STRIP_BRACKET): New macro.
925         (SET_TYPE_FOR_RESOLUTION): Use it.
926         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
927         (check_class_interface_creation): Don't check for cross package
928         innerclass name clashes.
929         (method_header): Behave properly if MDECL is `error_mark_node'.
930         (method_declarator): Return `error_mark_node' if bogus current
931         class.
932         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
933         (resolve_and_layout): New local `decl_type', set and used. Call
934         java_check_methods.
935         (java_check_methods): New method.
936         (java_layout_classes): Use it.
937         (resolve_qualified_expression_name): No EH check necessary in
938         access$<n>.
939         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
940         `case' statement.
941         (patch_assignment): Set DECL_INITIAL on integral final local.
942
943 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
944
945         * java-tree.h (flag_extraneous_semicolon): New extern.
946         * lang-options.h: (-Wextraneous-semicolon): New option.
947         * lang.c (flag_redundant): Fixed typo in leading comment.
948         (flag_extraneous_semicolon): New global.
949         (lang_decode_option): Set `flag_extraneous_semicolon' when
950         -Wall. Decode `-Wextraneous-semicolon'.
951         * parse.y (type_declaration:): Removed `SC_TK' hack, added
952         `empty_statement' rule.
953         (class_body_declaration): Likewise.
954         (method_body:): Accept `;' as a method body.
955         (static_initializer:): Removed `SC_TK' hack.
956         (constructor_block_end:): Likewise.
957         (empty_statement:): Report deprecated empty declaration. Fixes
958         gcj/295
959
960 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
961
962         * parse.y (build_dot_class_method_invocation): Changed parameter
963         name to `type'. Build signature from `type' and convert it to a
964         STRING_CST if it's an array.
965         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
966         to use `ref_type' directly.
967
968 Sun Aug  6 00:47:24 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>
969
970         * lang-options.h: Added a comma after the last element to avoid
971         syntax errors when other languages define additional options.
972
973 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
974
975         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
976         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
977         (jc1): Link with $(BACKEND).
978         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
979
980 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
981
982         * jvspec.c: Adjust type of second argument to
983         lang_specific_driver, and update code as necessary.
984
985         * class.c (build_dtable_decl): Initialize dummy.
986
987 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
988
989         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
990         method bodies not to rule out discarding `<clinit>'; don't use
991         <clinit> to initialize static fields with constant initializers.
992
993 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
994
995         * gjavah.c (print_method_info): Added `synth' parameter. Skip
996         synthetic methods.
997         (method_synthetic): New global.
998         (HANDLE_METHOD): Recognize synthetic method and tell
999         `print_method_info' about it.
1000         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
1001         processing a synthetic method.
1002         * jcf-reader.c (skip_attribute): New function.
1003         ( skip_attribute): Likewise.
1004
1005 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1006
1007         * parse.y (build_outer_field_access): Fixed comments.
1008         (fix_constructors): Emit the initialization of this$<n> before
1009         calling $finit$.
1010         (resolve_qualified_expression_name): Build an access to `decl' if
1011         necessary.
1012
1013 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1014
1015         * parse-scan.y (curent_class): Non longer const.
1016         (inner_qualifier, inner_qualifier_length): Deleted.
1017         (current_class_length): New global.
1018         (bracket_count): Fixed typo in leading comment.
1019         (anonymous_count): New global.
1020         (class_instance_creation_expression:): Handle anonymous classes.
1021         (anonymous_class_creation:): New rule.
1022         (push_class_context): Rewritten.
1023         (pop_class_context): Likewise.
1024         (INNER_QUALIFIER): Macro deleted.
1025         (report_class_declaration): call `push_class_context' when
1026         entering the function. `fprintf' format modified not to use
1027         INNER_QUALIFIER.
1028         (report_class_declaration): Assign `package_name' and
1029         `current_class' to NULL separatly.
1030
1031 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1032
1033         * expr.c (build_invokeinterface): Call layout_class_methods on
1034         target interface.
1035
1036 2000-07-27  Tom Tromey  <tromey@cygnus.com>
1037             Anthony Green  <green@cygnus.com>
1038             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1039
1040         * class.c (make_class_data): Create vtable for abstract classes.
1041         (get_dispatch_table): Changed to cope with abstract classes.
1042
1043 2000-07-27  Tom Tromey  <tromey@cygnus.com>
1044
1045         * parse.y (patch_method_invocation): Don't reverse the argument
1046         list when dealing with anonymous class constructors. Fixed typo in
1047         comment.
1048
1049 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1050
1051         * parse.y (build_alias_initializer_parameter_list): Reverse
1052         crafted list when building aliases for anonymous class
1053         constructors.
1054
1055 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1056
1057         * parse.y (jdep_resolve_class): Don't bother checking potential
1058         innerclass access if `decl' is NULL.
1059         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
1060         WFL.
1061
1062 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1063
1064         * parse.c: Remove (again.)
1065
1066 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1067
1068         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
1069         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
1070         outside the `if' statement, alias to innerclass removed, `decl'
1071         used to mark the class complete.
1072
1073 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1074
1075         * parse.y (simple_name:): Fixed typo in error message.
1076
1077 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1078
1079         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
1080         or its first operand can be error marks.
1081
1082 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1083
1084         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
1085         * parse.y (method_header): Likewise.
1086
1087 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1088
1089         * parse.y (process_imports): Consider that one might be trying to
1090         import an innerclass. Fixes gcj/254
1091
1092 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1093
1094         * parse.y (find_as_inner_class): Handle the case where the
1095         enclosing context of an innerclass has been loaded as bytecode.
1096
1097 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1098
1099         * parse.y (simple_name:): Reject `$' in type names.
1100         (resolve_type_during_patch): Use `type' as a second
1101         argument to resolve_no_layout. Fixes gcj/257.
1102
1103 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
1104
1105         * parse.y (find_most_specific_methods_list): Select the only
1106         non-abstract method even if max has been set.
1107         Fixes gcj/285, gcj/298.
1108
1109 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
1110
1111         * lang-specs.h: Added %(jc1) to java compiler options.
1112
1113 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
1114
1115         * .cvsignore: New file.
1116
1117 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1118
1119         * parse.y (not_accessible_p): Access granted to innerclasses
1120         (indirectly) extending the reference type. Fixes gcj/249.
1121
1122 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1123
1124         * parse.y (patch_method_invocation): Fixed comment.
1125         (maybe_use_access_method): Build this$<n>s to the context of the
1126         target method, or a type that extends it. Fixes gcj/242.
1127
1128 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
1129
1130         * parse.c: Remove.
1131
1132 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1133
1134         * parse.y (fold_constant_for_init): Avoid bullish conversion.
1135
1136 2000-07-13  Tom Tromey  <tromey@cygnus.com>
1137
1138         * lang-specs.h: Added %{I*}.
1139
1140 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
1141
1142         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
1143
1144 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
1145
1146         * parse-scan.c: Remove.
1147
1148 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1149
1150         * class.c (set_super_info): Handled protected inner classes.
1151         (common_enclosing_context_p): Bail early if arguments aren't both
1152         inner classes.
1153         (get_access_flags_from_decl): Handle private and protected inner
1154         classes.
1155         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
1156         (CLASS_PROTECTED): Likewise.
1157         (struct lang_type): New bitfield `poic'.
1158         * parse.y (jdep_resolve_class): Call check_inner_class_access on
1159         inner classes only.
1160         (check_inner_class_access): Renamed arguments, added
1161         comments. Handles protected inner classes (fixes gcj/225)
1162         (not_accessible_p): Fixed comments. Avoid handling inner classes.
1163
1164 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1165
1166         * parse.y (resolve_qualified_expression_name): Verify qualified
1167         access to `this'. Fixes gcj/239.
1168
1169 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1170
1171         * jcf-write.c (generate_classfile): Don't install ConstantValue
1172         for null pointers.
1173
1174 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1175
1176         * parse.y (resolve_qualified_expression_name): Handle inner class
1177         access. Fixes gcj/256.
1178
1179 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1180
1181         * jcf-write.c (generate_classfile): Properly install the
1182         ConstantValue attribute and the initial value constant pool index
1183         on string constants.
1184         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
1185         class files.
1186
1187 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1188
1189         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
1190         construct.
1191         * parse.y (find_as_inner_class): Fixed typo.
1192         (do_resolve_class): Explore enclosing contexts when searching for
1193         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
1194         (check_inner_class_access): Check `decl' which can be null in case
1195         of previous errors.
1196
1197 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1198
1199         * java-tree.h (java_debug_context): Declared `extern'.
1200         (safe_layout_class): Likewise.
1201         * parse.y (resolve_field_access): Field must be `static' in order
1202         to be replaced by its initial value. Added comments.
1203         (find_applicable_accessible_methods_list): Fixed typo.
1204         (find_most_specific_methods_list): Methods found in innerclasses
1205         take over methods founds in the enclosing contexts.
1206         (java_complete_tree): Loosen restrictions on the type of DECLs
1207         that can be replaced by their initialization values.
1208         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
1209
1210 2000-07-05  Tom Tromey  <tromey@cygnus.com>
1211
1212         * Make-lang.in (PARSE_DIR): New macro.
1213         (PARSE_RELDIR): Likewise.
1214         (PARSE_C): Likewise.
1215         (PARSE_SCAN_C): Likewise.
1216         ($(PARSE_C)): New target.
1217         ($(PARSE_SCAN_C)): Likewise.
1218         (SET_BISON): New macro.
1219         (BISONFLAGS): Likewise.
1220         (JAVABISONFLAGS): Likewise.
1221
1222 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
1223
1224         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
1225         argument on the first pass for CNI as well as JNI.
1226         (print_method_info): Set up method name on the first pass only.
1227
1228 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1229
1230         * parse.y (parser_qualified_classname): Removed parameter
1231         `is_static'.
1232         (create_interface): Removed first passed parameter to
1233         parser_qualified_classname.
1234         (create_class): Likewise. Don't install alias on static
1235         innerclasses. Fixes gcj/275.
1236
1237 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1238
1239         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
1240         debugable statement with empty_stmt_node. Fixes gcj/272
1241
1242 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1243
1244         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
1245         gcj/271.
1246
1247 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1248
1249         * jcf-write.c (push_long_const): Appropriately cast short negative
1250         constant to jword.
1251
1252 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1253
1254         * parse.y (verify_constructor_super): Use loop variable
1255         `m_arg_type' initialized with `mdecl_arg_type'.
1256
1257 2000-06-29  Tom Tromey  <tromey@cygnus.com>
1258
1259         * parse.y (resolve_field_access): Handle case where `type_found'
1260         is NULL.
1261
1262 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1263
1264         * expr.c (lookup_field): The same field can be found through two
1265         different interface. Don't declare it ambiguous in that case.
1266
1267 2000-06-27  Tom Tromey  <tromey@cygnus.com>
1268
1269         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
1270         follows \r, then unget it at a lower level.
1271
1272 2000-06-26  Tom Tromey  <tromey@cygnus.com>
1273
1274         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
1275         java_complete_tree.
1276
1277 2000-06-25  Tom Tromey  <tromey@cygnus.com>
1278
1279         * parse.y (for_statement): Wrap expression in a WFL if it is a
1280         constant.  For PR gcj/268.
1281
1282 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1283
1284         * parse.y (do_resolve_class): Minor optimiztion in the package
1285         list search. Removed unecessary test and return statement.
1286         (valid_ref_assignconv_cast_p): Order of arguments to
1287         enclosing_context_p fixed.
1288
1289 2000-06-24  Tom Tromey  <tromey@cygnus.com>
1290
1291         * expr.c (lookup_field): Print error and return error_mark_node if
1292         field reference is ambiguous.
1293
1294         * parse.y (check_abstract_method_definitions): Also check if
1295         `other_method' is abstract.
1296
1297 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1298
1299         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
1300         classes.
1301         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
1302         (struct lang_type): New field `pic'.
1303         (CLASS_PRIVATE): New macro.
1304         * parse.y (check_inner_class_access): New function.
1305         (jdep_resolve_class): Call it.
1306
1307 2000-06-23  Tom Tromey  <tromey@cygnus.com>
1308
1309         * parse.y (patch_incomplete_class_ref): Initialize the returned
1310         class.  For PR gcj/260.
1311
1312 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1313
1314         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
1315
1316 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1317
1318         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
1319         Java specific checks.
1320         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
1321         screened by DECL_P.
1322         * java-tree.def (CASE_EXPR): Marked 'e'.
1323         (DEFAULT_EXPR): Likewise.
1324         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
1325         screened by DECL_P.
1326         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
1327         Java specific checks.
1328         (generate_bytecode_insns): Test try_block for BLOCK before using
1329         BLOCK_EXPR_BODY.
1330         * parse.y (build_wfl_wrap): Added `location' argument. Set
1331         EXPR_WFL_LINECOL accordingly.
1332         (dim_expr:): Wrap constants with WFLs.
1333         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
1334         (resolve_package): Check for `stmt' not being a BLOCK before
1335         building a debuggable statement with it.
1336         (make_qualified_primary): Added extra parameter to build_wfl_wrap
1337         invocation.
1338         (resolve_field_access): Make sure `decl' is a DECL before treating
1339         it as such.
1340         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
1341         IDENTIFIER_NODE before treating it as such.
1342         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
1343         treating it as such.
1344         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
1345         to be applied only on non array types.
1346
1347 2000-06-16  Per Bothner  <per@bothner.com>
1348
1349         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
1350         define in terms of DECL_RESULT, as that fails when --enable-checking.
1351
1352 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1353
1354         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
1355         types the same in comparison.
1356         (CHECK_OP): Add static prototype.
1357
1358 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
1359
1360         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
1361         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
1362         * parse.c: Rebuilt.
1363
1364 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1365
1366         * decl.c (create_primitive_vtable): Prototype.
1367
1368         * jcf-write.c (generate_bytecode_insns): Initialize variable
1369         `saved_context'.
1370
1371         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
1372
1373 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
1374
1375         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
1376         to track searched classes, and do not search the same class more than
1377         once. Call find_applicable_accessible_methods_list on immediate
1378         superclass, instead of search_applicable_method_list on all ancestors.
1379         Fix for PR gcj/238.
1380
1381 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
1382
1383         * parse.y (register_fields): Permit static fields in inner classes
1384         if they are final. Fix for PR gcj/255.
1385
1386 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1387
1388         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
1389         * parse.y (find_in_imports): Returned type changed to void,
1390         leading comment fixed.
1391         (register_package): New function.
1392         (qualify_and_find): Likewise.
1393         (package_declaration:): Use `register_package'.
1394         (single_type_import_declaration:): Removed local variable
1395         `node'. Added missing `;' for consistency.
1396         (type_import_on_demand_declaration:): Use `chainon' to link new
1397         entries.
1398         (lookup_field_wrapper): Lookup local variables defined in outer
1399         contexts first.
1400         (java_complete_class): Don't reverse the list of imported on demand.
1401         (do_resolve_class): Reorganized. Removed local variable
1402         `original_name'. Call `qualify_and_find' with the current package
1403         name, invoke `find_in_imports_on_demand' right after. Call
1404         `qualify_and_find' with the packages we've seen so far. Fixed
1405         operations numbering in comments.
1406         (java_expand_class): Don't reverse `package_list'.
1407         (find_most_specific_methods_list): New local variables `abstract'
1408         and `candidates'. Use them to pick the right method.
1409
1410 Tue Jun  6 11:39:05 2000  Tom Tromey  <tromey@ferrule.cygnus.com>
1411
1412         * parse.y (check_modifiers_consistency): Don't subtract out
1413         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
1414
1415 2000-06-04  Philipp Thomas  <pthomas@suse.de>
1416
1417         * Makefile.in (INTLLIBS): New.
1418         (LIBS): Add above.
1419         (DEPLIBS): Ditto.
1420
1421 Fri Jun  2 16:48:55 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1422
1423         * class.c (get_dispatch_table): Build the vtable dummy entry list
1424         element with a null purpose. Fixed leading comment.
1425         (build_dtable_decl): Build an accurate dtable type when appropriate
1426         and use it.
1427
1428 2000-06-02  Richard Henderson  <rth@cygnus.com>
1429
1430         * lang.c (lang_get_alias_set): New.
1431
1432 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1433
1434         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
1435         before using it as the accessed field.
1436
1437 2000-05-31  Tom Tromey  <tromey@cygnus.com>
1438
1439         * java-tree.h (boolean_array_vtable, byte_array_vtable,
1440         char_array_vtable, short_array_vtable, int_array_vtable,
1441         long_array_vtable, float_array_vtable, double_array_vtable):
1442         Declare.
1443         * expr.c (get_primitive_array_vtable): New function.
1444         (create_primitive_vtable): New function.
1445         (java_lang_expand_expr): Enable code to statically generate
1446         arrays.
1447         * decl.c (init_decl_processing): Create primitive vtables.
1448         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
1449         short_array_vtable, int_array_vtable, long_array_vtable,
1450         float_array_vtable, double_array_vtable): Define.
1451
1452 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
1453
1454         * java/parse.y (find_applicable_accessible_methods_list):
1455         Don't add an uninitialized value to the list.
1456
1457 2000-05-25  Tom Tromey  <tromey@cygnus.com>
1458
1459         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
1460         when trying to see if field's class should be initialized.  Always
1461         initialize field's declaring class, not qualified class.
1462         For PR gcj/162.
1463
1464         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
1465         `wfl_operator', to maybe_build_primttype_type_ref.
1466         Fixes PR gcj/235.
1467
1468 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
1469
1470        * parse.y (patch_method_invocation): Don't try to lookup methods
1471        in primitive types.
1472
1473 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1474
1475         * parse.y (resolve_field_access): Call the appropriate <clinit>
1476         before accessing the length of a static array. Craft a decl for
1477         the field while its time. Fixes PR gcj/129.
1478
1479 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1480
1481         * parse.y (resolve_package): Correctly set `*next' (was off by
1482         one.)
1483         (resolve_qualified_expression_name): Fixed comment.
1484
1485 Thu Apr 27 17:47:34 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1486
1487         * jcf-parse.c (jcf_parse_source): Reset current_class and
1488         current_function_decl to NULL before parsing a new file.
1489
1490 Thu Apr 27 17:25:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1491
1492         * parse.y (block_end:): If the collected block doesn't feature a
1493         statement, insert an empty statement.
1494
1495 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1496
1497         * parse.y (maybe_yank_clinit): New function.
1498         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
1499         end of the list of methods belonging to a class.
1500         (java_complete_expand_method): Check whether <clinit> is really
1501         necessary and expand it accordingly.
1502
1503 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1504
1505         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
1506         processed by the method's switch statement.
1507
1508 2000-05-19  Tom Tromey  <tromey@cygnus.com>
1509
1510         * java-tree.h: Added init state enum.
1511         * decl.c (emit_init_test_initialization): Initialize class
1512         initialization check variable by looking at class' state.
1513
1514 2000-05-19  Tom Tromey  <tromey@cygnus.com>
1515
1516         * java-tree.h (build_instanceof): Declare.
1517         (build_get_class): Declare.
1518         * parse.y (patch_binop): Use build_instanceof.
1519         * expr.c (build_instanceof): New function.  If class is final,
1520         don't make a function call.
1521         (expand_java_INSTANCEOF): Use it.
1522         (build_get_class): New function.
1523
1524 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
1525
1526         * jcf-write.c (generate_classfile): Scan the source_file for
1527         slashes with the right pointer variable.
1528
1529 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
1530
1531         * lang.c (lang_decode_option): Update -Wunused flags by calling
1532         set_Wunused.
1533         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
1534
1535 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
1536
1537         * check_init.c (check_init): Constify local char *.
1538         * class.c (push_class): Constify local char *.
1539         * java_tree.h: Update prototypes.
1540         * jcf-io.c (open_class): Constify filename parameter and
1541         return value.
1542         (find_class): Remove redundant string copy.  Cast return from
1543         open_class.
1544         * jcf-parse.c (read_class, parse_class_file, yyparse):
1545         Constify local char *.
1546         * jcf-write.c (generate_bytecode_insns, generate_classfile):
1547         Constify local char *.
1548         * jcf.h (JCF): Constify filename and classname.
1549         (JCF_FINISH): Cast args to FREE to char * when appropriate.
1550         * lang.c (init_parse): Constify parameter and return value.
1551         * lex.c (java_get_line_col): Constify filename parameter.
1552         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
1553         * parse.y (java_parser_context_suspend,
1554         issue_warning_error_from_context, safe_layout_class): Constify
1555         local char *.
1556         * parse.c: Regenerate.
1557
1558 2000-05-08  Tom Tromey  <tromey@cygnus.com>
1559
1560         * expr.c (build_jni_stub): Cache the result of
1561         _Jv_LookupJNIMethod.
1562
1563 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1564
1565         * decl.c (predef_filenames_size): Now 7.
1566         (predef_filenames): New seventh entry.
1567
1568 2000-05-04  Tom Tromey  <tromey@cygnus.com>
1569
1570         * boehm.c (mark_reference_fields): Don't mark RawData fields.
1571         Keep track of when we've seen a reference field after a
1572         non-reference field.
1573         (get_boehm_type_descriptor): Handle case where we see
1574         non-reference fields but no trailing reference field.
1575         * decl.c (rawdata_ptr_type_node): Define.
1576         (init_decl_processing): Initialize rawdata_ptr_type_node.
1577         * java-tree.h (rawdata_ptr_type_node): Declare.
1578
1579 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1580
1581         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
1582         specifiers in calls to fprintf.
1583
1584 2000-05-03  Andrew Haley  <aph@cygnus.com>
1585
1586         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
1587
1588         * javaop.h (WORD_TO_INT): New function.
1589         (IMMEDIATE_s4): Use WORD_TO_INT.
1590         * jcf.h (JPOOL_INT): Ditto.
1591
1592         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
1593         separator.
1594
1595 2000-04-19  Tom Tromey  <tromey@cygnus.com>
1596
1597         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
1598         on native function.
1599         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
1600         JNI methods.
1601         * expr.c (build_jni_stub): New function.
1602         * lang-specs.h: -fjni and -femit-class-file are incompatible.
1603         * parse.c: Rebuilt.
1604         * parse.y (java_complete_expand_methods): Expand a native method
1605         and call build_jni_stub if -fjni given.
1606         * lang-options.h: Document -fjni.
1607         * lang.c (flag_jni): New global.
1608         (lang_f_options): Added `jni' entry.
1609         * java-tree.h (soft_lookupjnimethod_node,
1610         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
1611         Declare.
1612         (flag_jni): Declare.
1613         (build_jni_stub): Declare.
1614         (struct lang_decl): Added `native' flag.
1615         (METHOD_NATIVE): Redefined to use `native' field of lang specific
1616         structure.
1617         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
1618         soft_jnipopsystemframe_node): New globals.
1619         (init_decl_processing): Set them.  _Jv_InitClass only takes one
1620         argument.
1621
1622         * java-tree.def: Put into `C' mode.
1623
1624 2000-04-27  Tom Tromey  <tromey@cygnus.com>
1625
1626         Fix for PR gcj/2:
1627         * expr.c (expand_invoke): Generate check to see if object pointer
1628         is null in nonvirtual invocation case.
1629         * java-tree.h (soft_nullpointer_node): Declare.
1630         * decl.c (soft_nullpointer_node): New global.
1631         (init_decl_processing): Initialize soft_nullpointer_node.
1632         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
1633         or `private' methods.
1634         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
1635
1636 Wed Apr 26 14:29:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1637
1638         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
1639         from <clinit>
1640
1641 2000-04-26  Tom Tromey  <tromey@cygnus.com>
1642
1643         * zextract.c (find_zip_file_start): New function.
1644         (read_zip_archive): Use it.
1645
1646 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1647
1648         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
1649
1650 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1651
1652         * class.c (common_enclosing_context_p): New function.
1653         * java-tree.h (common_enclosing_context_p): Added prototype.
1654         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
1655         classes sharing an outer context with the current instance.
1656         * parse.y (build_access_to_thisn): Fixed leading comment.
1657         (verify_constructor_super): New local `supper_inner'. Skip
1658         enclosing context argument in the case of inner class constructors.
1659         (patch_method_invocation): Insert proper context as second
1660         parameter to pure inner class constructor super invocations.
1661
1662 Mon Apr 24 14:59:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1663
1664         * parse.y (end_class_declaration): Reset the interface number
1665         counter.
1666
1667 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1668
1669         * parse.y (source_start_java_method): Deleted unecessary code.
1670         (patch_method_invocation): Fixed comment.
1671
1672 2000-04-24  Robert Lipe <robertlipe@usa.net>
1673
1674         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
1675
1676 2000-04-23  Tom Tromey  <tromey@cygnus.com>
1677
1678         * boehm.c (mark_reference_fields): Use int_byte_position.
1679
1680 2000-04-22  Tom Tromey  <tromey@cygnus.com>
1681
1682         * boehm.c (mark_reference_fields): Only call byte_position on
1683         non-static fields.
1684
1685 2000-04-22  Tom Tromey  <tromey@cygnus.com>
1686
1687         * boehm.c (mark_reference_fields): Added `last_view_index'
1688         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
1689
1690 Thu Apr 20 17:41:28 2000  Mo DeJong  <mdejong@cygnus.com>
1691
1692         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
1693         * parse.y (check_class_interface_creation): Fixed comments. Select
1694         permitted modifiers for (inner) interfaces. Changed error message
1695         to report rejected modifiers used with local classes.
1696
1697 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1698
1699         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
1700         of directly inherited type considered in scope.
1701         * parse.y (do_resolve_class): Search inherited classes for inner
1702         classes.
1703
1704 2000-04-20  Tom Tromey  <tromey@cygnus.com>
1705
1706         * parse.y (not_accessible_p): Use member's class, not current
1707         class, when doing inheritance check for protected reference.
1708         Fixes PR gcj/124.
1709
1710 Thu Apr 20 18:20:58 2000  Jason Schroeder  <shrode@subnature.com>
1711
1712         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
1713
1714 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1715
1716         * parse.y (lookup_field_wrapper): Search for final local aliases.
1717         (resolve_expression_name): Let lookup_field_wrapper search for
1718         final local aliases. Force the value of `name' if one is found.
1719         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
1720         an expression name. Fixed comments.
1721
1722 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1723
1724         * parse.y (yyerror): `msg' can be null, don't use it in that case.
1725
1726 2000-04-19  Tom Tromey  <tromey@cygnus.com>
1727
1728         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
1729
1730 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1731
1732         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
1733
1734 2000-04-18  Tom Tromey  <tromey@cygnus.com>
1735
1736         PR gcj/211:
1737         * gjavah.c (utf8_cmp): Changed return value.
1738         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
1739         result.
1740         (cxx_keywords): New global.
1741         (get_field_name): Handle new result of cxx_keyword_subst.
1742         (print_method_info): Likewise.
1743
1744 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
1745
1746         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
1747         with a newline, for CNI.
1748         (print_stub_or_jni): Print a space or newline before method name for
1749         CNI as well as JNI.
1750         (print_cxx_classname): Don't write leading "::" in CNI stub method.
1751         (process_file): Include gcj/cni.h if generating CNI stubs.
1752
1753 2000-04-16  Tom Tromey  <tromey@cygnus.com>
1754
1755         * gjavah.c (decompile_method): Use print_field_name.
1756         Fixes PR gcj/205.
1757
1758 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1759
1760         * parse.y (java_expand_classes): Reverse the package list once.
1761         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
1762         reduction.
1763         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
1764         the `==' and `!=' operators.
1765
1766 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1767
1768         * jcf-write.c (generate_bytecode_insns): At invokation time,
1769         always relate an interface method to the type of its selector.
1770
1771 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1772
1773         Fix for PR gcj/2:
1774         * expr.c (expand_invoke): Generate check to see if object pointer
1775         is null in nonvirtual invocation case.
1776         * java-tree.h (soft_nullpointer_node): Declare.
1777         * decl.c (soft_nullpointer_node): New global.
1778         (init_decl_processing): Initialize soft_nullpointer_node.
1779         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
1780         or `private' methods.
1781         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
1782
1783 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1784
1785         Fix for PR gcj/140:
1786         * parse.y (check_final_assignment): Recognize assignments to the
1787         `length' field of an array when generating class files.
1788
1789 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1790
1791         * class.c (decl_hash): Prototype removed.
1792         (decl_compare): Likewise.
1793
1794 2000-04-05  Tom Tromey  <tromey@cygnus.com>
1795
1796         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
1797         * parse.y (check_modifiers_consistency): Check for final/volatile
1798         clash.  Fixes PR gcj/164.
1799
1800 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1801
1802         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
1803         made global.
1804         (java_hash_compare_tree_node): Renamed from `decl_compare, made
1805         global.
1806         (add_method_1): Use `java_hash_hash_tree_node' and
1807         `java_hash_compare_tree_node'.
1808         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
1809         (java_hash_compare_tree_node): Likewise.
1810         * parse.y (find_applicable_accessible_methods_list): Create,
1811         delete and use a hash table to remember already searched interfaces.
1812
1813 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
1814
1815         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
1816         with latest entry.
1817
1818 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1819
1820         * boehm.c (mark_reference_fields, set_bit): Prototype.
1821         (set_bit): Un-ANSI-fy definition.
1822
1823         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
1824         Prototype.
1825
1826         * decl.c (emit_init_test_initialization): Likewise.
1827
1828         * gjavah.c (jni_print_char): Likewise.
1829
1830         * parse.y (create_new_parser_context): Likewise.
1831
1832 Thu Mar 30 15:26:56 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1833
1834         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
1835         patch missing hunk. Fixed indentation.
1836
1837 2000-03-30  Tom Tromey  <tromey@cygnus.com>
1838
1839         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
1840         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
1841
1842 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1843
1844         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
1845         when negative *before* using it as an array index.
1846         * ChangeLog: Fixed typo.
1847
1848 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1849
1850         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
1851         to 0 when it reaches -1.
1852
1853 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1854
1855         * jcf-parse.c (get_constant): Properly cast `num' during the
1856         invocation of `add_double'.
1857         * jcf-write.c (push_long_const): Properly cast `lo' before
1858         comparing it to short bounds.
1859         * parse-scan.y (interface_declaration:): Rule re-arrange so that
1860         `interface_body:' is reduced after the current interface is
1861         pushed.
1862
1863 2000-03-26  Tom Tromey  <tromey@cygnus.com>
1864
1865         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
1866         Java-specific `-f' option.
1867
1868 Sun Mar 26 11:37:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1869
1870         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
1871         Adjust order of making types.
1872         Make bitsize_*_node values.
1873
1874 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1875
1876         * class.c (make_field_value): Use byte_position.
1877         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
1878         (java_array_data_offset): Likewise.
1879         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
1880         bzero call.
1881
1882 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1883
1884         * parse.y (check_abstract_method_definitions): New local
1885         `end_type_reached'. Make sure we also consider `end_type'.
1886         (java_check_abstract_method_definitions): Make sure we eventually
1887         consider `java.lang.Object'.
1888         (maybe_use_access_method): Don't use access method if not in the
1889         context of a pure inner class or if the method's context is right.
1890         (find_applicable_accessible_methods_list): New static flag
1891         `object_done'. Don't search abstract classes as interfaces. Fixed
1892         indentation. Fixed the `java.lang.Object' only search. Search
1893         class interface(s) first, then fully search enclosing contexts.
1894         (find_most_specific_methods_list): Pick the closest candidate when
1895         they're all abstract.
1896
1897 Mon Mar 20 08:58:51 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1898
1899         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
1900         properly initialize `finished_label'. Don't emit gotos for empty
1901         try statements.
1902
1903 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1904
1905         * except.c (emit_handlers): Clear catch_clauses_last.
1906
1907 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1908
1909         * parse.y (check_method_types_complete): New function.
1910         (create_class): Reset anonymous class counter only when seeing an
1911         non inner classe.
1912         (java_complete_class): JDEP_METHOD: Don't recompute signature
1913         if incomplete.
1914
1915 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1916
1917         * class.c (build_static_ref): Fixed indentation in comment.
1918         * java-tree.def (TRY_EXPR): Fixed typo in name.
1919         (CLASS_LITERAL): Likewise.
1920         * java-tree.h: (TYPE_DOT_CLASS): New macro.
1921         (struct lang_type): New field `dot_class'.
1922         * jcf-write.c (generate_bytecode_insns): Fixed error message.
1923         (generate_classfile): Method `class$' is synthetic.
1924         * parse.y (build_do_class_method): New function.
1925         (build_dot_class_method_invocation): Likewise.
1926         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
1927         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
1928         (qualify_ambiguous_name): Likewise.
1929         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
1930         (build_try_statement): Fixed leading comment.
1931
1932 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1933
1934         * class.c (make_field_value): Properly handle sizes.
1935         (get_dispatch_vector): Use tree_low_cst and host_integerp.
1936         (layout_class_method): Count using trees.
1937         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
1938         * expr.c (java_array_data_offset): Use int_bit_position.
1939         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
1940         (build_invokevirtual): Use tree_low_cst and do computations with trees.
1941
1942 2000-03-16  Tom Tromey  <tromey@cygnus.com>
1943
1944         * lang.c (flag_hash_synchronization): New global.
1945         (lang_f_options): Added `hash-synchronization'.
1946         * lang-options.h: Mention -fhash-synchronization.
1947         * java-tree.h (flag_hash_synchronization): Declare.
1948         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
1949         hash table synchronization is disabled.
1950         * decl.c (init_decl_processing): Only push `sync_info' value when
1951         hash table synchronization is disabled.
1952         * class.c (make_class_data): Only push `sync_info' field when hash
1953         table synchronization is disabled.  Removed dead code.
1954
1955 2000-03-16  Tom Tromey  <tromey@cygnus.com>
1956
1957         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
1958
1959 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1960
1961         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
1962         classes.
1963         * parse.y (patch_method_invocation): Handle anonymous classes
1964         creation in static context.
1965
1966 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1967
1968         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
1969         * parse.y (resolve_qualified_expression_name): Use it.
1970         (patch_method_invocation): Likewise.
1971
1972 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1973
1974         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
1975         depending on the type of dependency which dictates what the
1976         current class is.
1977         (unresolved_type_p): Resolved types limited to the current class.
1978
1979 2000-03-15  Tom Tromey  <tromey@cygnus.com>
1980
1981         * decl.c (init_decl_processing): Set type of `sync_info' to be
1982         pointer to Object.
1983
1984         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
1985         Correctly compute bit number for current slot.  Zero `high' and
1986         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
1987         mark_reference_fields.
1988         (mark_reference_fields): New function.
1989
1990 Tue Mar 14 17:15:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1991
1992         * parse.y (register_incomplete_type): Fixed initialization of
1993         JDEP_ENCLOSING.
1994
1995 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1996
1997         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
1998         static globals.
1999         (push_class_context, pop_class_context): New function.
2000         (class_body:): Call pop_class_context.
2001         (interface_body:): Likewise.
2002         (INNER_QUALIFIER): New macro.
2003         (report_class_declaration): Changed output format and use
2004         INNER_QUALIFIER. Call push_class_context.
2005
2006 2000-02-14  Andrew Haley  <aph@cygnus.com>
2007
2008         * check-init.c (check_init): Add new cases for unary and binary
2009         tree nodes.
2010
2011 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2012
2013         * parse.y (resolve_package): Set `next' once a type name has been
2014         progressively discovered.
2015         (resolve_qualified_expression_name): Propagate resolution only if
2016         there are remaining qualifiers. Take into account `q' might have
2017         been cleared after re-qualification.
2018         * parse.y (patch_method_invocation): New local `resolved'.
2019         Section dealing with qualified expression rewritten to use
2020         resolve_field_access.
2021
2022 Mon Mar 13 12:21:13 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2023
2024         * parse.h (PUSH_CPC): Fixed indentation.
2025         (DEBUG_CPC): New macro.
2026         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
2027         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
2028         * parse.y (class_body_declaration:): Use
2029         SET_CPC_INSTANCE_INITIALIZER_STMT.
2030         (method_declaration:): Check for null current_function_decl.
2031         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
2032         (java_parser_context_pop_initialized_field): Better handling of
2033         empty lists.
2034         (maybe_make_nested_class_name): Mark nested class name as
2035         qualified when necessary.
2036         (end_class_declaration): Don't call java_parse_context_resume when
2037         one or more error occured.
2038         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
2039         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
2040         SET_CPC_INITIALIZER_STMT.
2041         (method_header): Check for inner classes declaring static methods.
2042         (resolve_qualified_expression_name): Handle situation where `this'
2043         is implied.
2044
2045 Mon Mar 13 11:36:51 2000  Hans Boehm <boehm@acm.org>
2046
2047         * typeck.c (build_prim_array_type): Correctly set the high word too.
2048
2049 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2050
2051         * parse.y (java_complete_expand_methods): Leave <clinit> out of
2052         ordinary methods.
2053         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
2054         list of methods for interfaces.
2055
2056 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2057
2058         * parse.y (qualify_ambiguous_name): Properly handle expressions
2059         using `null'.
2060
2061 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2062
2063         * parse.y (check_final_assignment): Extended to process
2064         COMPOUND_EXPR.
2065         (patch_assignment): Have check_final_assignment called only once.
2066
2067 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2068
2069         * java-tree.h (IS_INIT_CHECKED): New flag.
2070         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
2071         * parse.y (patch_string): Call force_evaluation_order on the
2072         completed string concatenation tree.
2073         * expr.c (force_evaluation_order): Call force_evaluation_order on
2074         function's arguments too.
2075
2076 Mon Mar  6 18:07:07 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2077
2078         * decl.c (emit_init_test_initialization): Mark KEY as unused.
2079         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
2080         (build_anewarray): Likewise.
2081         * parse.y (patch_newarray): Likewise.
2082         * parse.c: Regenerated.
2083
2084 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
2085
2086         * decl.c (init_decl_processing): Added new class fields `depth',
2087         `ancestors', and `idt' to class_type_node. Use
2088         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
2089         * class.c (make_class_data): Push initial values for new fields.
2090         * java-tree.h: Updated prototype for `build_invokeinterface'.
2091         * expr.c (build_invokeinterface): Changed parameters to accept
2092         `method' tree. Calculate index of `method' in its declaring
2093         interface. Build call to _Jv_LookupInterfaceMethodIdx.
2094         (expand_invoke): Call `build_invokeinterface' with new parameters.
2095         * parse.y (patch_invoke): Call `build_invokeinterface' with new
2096         parameters.
2097
2098 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
2099
2100         * typeck.c (lookup_do): Search superinterfaces first
2101         when looking up an interface method. From Godmar Back
2102         <gback@cs.utah.edu>
2103
2104 2000-03-06  Tom Tromey  <tromey@cygnus.com>
2105
2106         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
2107
2108 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2109
2110         * java-tree.h (lookup_argument_method2): Declared.
2111         (safe_layout_class): Prototype moved from parse.h.
2112         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
2113         * parse.y (java_check_regular_methods): Local `super_class' gone.
2114         Call lookup_argument_method2 instead of lookup_argument_method.
2115         Perform modifier match for methods found declared in implemented
2116         interfaces. Fixed indentation problem. Overriding/hiding error
2117         report to take place only for methods found in classes.
2118         * typeck.c (lookup_argument_method): Changed leading
2119         comment. Re-written by calling lookup_do.
2120         (lookup_argument_method2): New function.
2121         (lookup_java_method): Re-written by calling lookup_do.
2122         (lookup_do): New function.
2123
2124 Thu Mar  2 15:18:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2125
2126         * check-init.c (check_init): Removed dead code. Handle (blank)
2127         final variables.
2128         * parse.y (declare_local_variables): New local `final_p', set it
2129         and use it to initialize LOCAL_FINAL.
2130         (check_final_assignment): Only check FIELD_DECLs.
2131
2132 2000-02-17  Tom Tromey  <tromey@cygnus.com>
2133
2134         * Makefile.in (JAVA_OBJS): Added boehm.o.
2135         (boehm.o): New target.
2136         * Make-lang.in (JAVA_SRCS): Added boehm.c.
2137         * java-tree.h (flag_use_boehm_gc): Declare.
2138         (get_boehm_type_descriptor): Declare.
2139         * lang.c (lang_f_options): Added `use-boehm-gc'.
2140         (flag_use_boehm_gc): New global.
2141         * lang-options.h: Added -fuse-boehm-gc.
2142         * boehm.c: New file.
2143         * class.c (get_dispatch_table): If class uses a Boehm type
2144         descriptor, put it in the vtable.
2145         (make_class_data): Removed dead code.
2146
2147 2000-03-03  Per Bothner  <per@bothner.com>
2148
2149         * decl.c (init_decl_processing):  Initialize sizetype properly.
2150
2151 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2152
2153         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
2154         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
2155         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
2156         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
2157         (jcf_parse): New local `current'. Load innerclasses seen in outer
2158         context being processed.
2159         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
2160         * jcf-write.c (append_innerclasses_attribute): New function.
2161         (append_innerclasses_attribute_entry): Likewise.
2162         (get_access_flags): Handle static classes. Set anonymous and local
2163         classes to be private.
2164         (generate_classfile): Attribute count adjusted. Call
2165         append_innerclasses_attribute.
2166         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
2167         PURE_INNER_CLASS_TYPE_P.
2168         * parse.y (parser_qualified_classname): New parameter `is_static',
2169         produce non qualified name accordingly.
2170         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
2171         (create_interface): Added argument to parser_qualified_classname.
2172         (create_class): Added argument to parser_qualified_classname. Setup
2173         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
2174         (add_inner_class_fields): Fixed indentation.
2175         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
2176         (method_declarator): Fixed typo in comment.
2177         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
2178         (build_current_thisn): Likewise.
2179         (patch_method_invocation): Likewise.
2180
2181 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2182
2183         * decl.c (current_function_decl): Move to toplev.c.
2184
2185 Mon Feb 28 08:20:42 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2186
2187         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
2188         (DECL_BIT_INDEX): Use underlying representation.
2189         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
2190
2191 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2192
2193         * expr.c (build_java_ret): Pass proper type to size_binop.
2194
2195 2000-02-25  Anthony Green  <green@cygnus.com>
2196
2197         * expr.c (build_class_init): Mark the decl to be ignored by
2198         check_init.
2199         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
2200         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
2201         * class.c (init_test_hash_newfunc): New function.
2202         (decl_hash): New function.
2203         (decl_compare): New function.
2204         * decl.c (emit_init_test_initialization): New function.
2205         (complete_start_java_method): Traverse the init test hashtable,
2206         calling emit_init_test_initialization.
2207         (always_initialize_class_p): Define.
2208         * expr.c (build_class_init): Use initialization tests when
2209         emitting class initialization code.
2210         (always_initialize_class_p): Declare.
2211         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
2212         1.
2213         * java-tree.h: Include hash.h.
2214         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
2215         (struct lang_decl): Add init_test_table field.
2216         (init_test_hash_entry): Define.
2217
2218 Fri Feb 25 18:41:31 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2219
2220         * gjavah.c (main): Avoid using `argi' to report unimplemented
2221         options.
2222
2223 Fri Feb 25 18:47:25 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2224
2225         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
2226         initialize locals to avoid warnings. Local `exception_type' moved
2227         into if statement.
2228
2229 Fri Feb 25 18:00:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2230
2231         * parse.y (resolve_expression_name): Use `orig' as a second
2232         argument to resolve_field_access.
2233         (resolve_field_access): Removed unecessary code when dealing with
2234         static fields.
2235
2236 Wed Feb 23 17:41:50 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2237
2238         * class.c (push_super_field): Don't push the field twice.
2239         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
2240         * parse.h (java_reorder_fields): Prototyped.
2241         * parse.y (java_reorder_fields): New function.
2242         (java_layout_class): Simplified not to worry about re-ordering.
2243
2244 2000-02-23  Tom Tromey  <tromey@cygnus.com>
2245
2246         * gjavah.c (print_name): In JNI case, correctly quote string.
2247         (print_method_info): Don't handle overrides in JNI mode.
2248
2249 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2250
2251         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
2252         value type set to `boolean_type_node'.
2253
2254 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2255
2256         * jcf-dump.c (main): Test for correct condition after
2257         output file creation.
2258
2259 2000-02-19  Anthony Green  <green@cygnus.com>
2260
2261         * jcf-depend.c (add_entry): Fix test for first list entry.
2262
2263 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2264
2265         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
2266         * constants.c (build_constants_constructor): Likewise.
2267
2268 2000-02-19  Anthony Green  <green@cygnus.com>
2269
2270         * jcf-depend.c (add_entry): Add entries to the end of the list.
2271
2272 Wed Nov 03 02:16:00 PST 1999  Pekka Nikander  <pekka.nikander@hut.fi>
2273
2274         * decl.c (INT_TYPE_SIZE): Define if necessary.
2275         (expand_java_return): Handle the case of a native integer smaller
2276         than a JVM integer.
2277
2278 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2279
2280         * gjavah.c (help): Use GCCBUGURL.
2281         * jv-scan.c (help): Likewise.
2282         * jcf-dump.c (help): Likewise.
2283
2284 Thu Feb 17 14:30:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2285
2286         * jcf-write.c (generate_bytecode_insns): Don't generate empty
2287         `finally' clauses.
2288
2289 Thu Feb 17 13:20:58 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2290
2291         * jcf-parse.c (load_class): Call `fatal' if no file containing
2292         the target class are found.
2293
2294 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
2295
2296         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
2297         lex.c, lex.h, and PARSE_H to...
2298         (parse.o, parse-scan.o): ...here, respectively.
2299
2300         * lex.c: Split out code that may trigger SIGFPE from yylex()
2301         to its own function.
2302         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
2303
2304 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2305
2306         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
2307
2308 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2309
2310         * parse.y (outer_field_access_p): Stop in time when outer contexts
2311         are exhausted.
2312         (resolve_qualified_expression_name): Properly qualify *everything*
2313         after a package.type to be resoled as expression names.
2314         (find_applicable_accessible_methods_list): Save/restore `class' to
2315         isolate it from a possible outer context search.
2316
2317 2000-02-15  Tom Tromey  <tromey@cygnus.com>
2318
2319         * gjavah.c (jni_print_char): New function.
2320         (print_full_cxx_name): Use it.
2321         (decode_signature_piece): Likewise.
2322         (print_cxx_classname): Likewise.
2323
2324 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2325
2326         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
2327         version.o.
2328         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
2329
2330         * gjavah.c: Include version.h.
2331
2332         * jcf-dump.c: Likewise.
2333
2334         * jv-scan.c: Likewise.
2335
2336 Sat Feb 12 04:34:04 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2337
2338         * parse.y (outer_field_access_fix): First parameter now a tree
2339         node. Check for assignement to final. First argument to
2340         build_outer_field_access_fix modified to accomodate prototype.
2341         (build_outer_field_access): Don't check for assignment to final
2342         here.
2343         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
2344         possibly returned by outer_field_access_fix. Changed
2345         outer_field_access_fix's first argument.
2346         (check_final_assignment): $finit$'s context is OK.
2347         (patch_unaryop): Use node instead of its line/column value when
2348         calling outer_field_access_fix.
2349
2350 Fri Feb 11 17:38:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2351
2352         * parse.y (interface_declaration:): No longer tagged
2353         <node>. Re-installed default action.
2354         (class_member_declaration:): Handle inner interfaces.
2355         (interface_member_declaration): Handle inner interfaces and
2356         classes.
2357         (create_interface): Push error if one seen. Suspend parsing
2358         context when processing an inner interface.
2359         (register_fields): Inner class static field limitations not to
2360         apply to inner interfaces.
2361
2362 Thu Feb 10 22:07:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2363
2364         * jcf-parse.c (load_class): Update `java_error_count' when a
2365         class' file can't be found.
2366         (parse.y): Avoid (byte)code generation when errors seen.
2367
2368 Thu Feb 10 20:10:43 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2369
2370         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
2371         decodes a valid node.
2372         (patch_binop): Handle TRUNC_DIV_EXPR.
2373
2374 Thu Feb 10 16:04:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2375
2376         * parse.y (resolve_package): New local `acc'. Try to progressively
2377         build and guess a package and type name.
2378
2379 Thu Feb 10 12:52:09 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2380
2381         * parse.y (find_applicable_accessible_methods_list): Load and
2382         layout the search class if necessary.
2383         (java_complete_tree): Keep to original type of the folded initial
2384         value.
2385
2386 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2387
2388         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
2389         Generate error message if circularity is detected. New static
2390         local `list'.
2391         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
2392         * jcf-write.c (generate_bytecode_insns): Very simply handle
2393         SAVE_EXPR.
2394         * parse.y (java_check_circular_reference): Use
2395         `cyclic_inheritance_report' during report, if necessary.
2396         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
2397         walking NEW_ARRAY_INIT twice.
2398
2399 2000-02-09  Tom Tromey  <tromey@cygnus.com>
2400
2401         * parse.y (check_class_interface_creation): Allow inner classes to
2402         be `private' or `protected', check modifiers' consistency. Prevent
2403         block local classes from bearing any modifiers.
2404
2405 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2406
2407         * except.c (check_start_handlers): Re-add prototype lost in last
2408         patch.
2409         (maybe_start_try): Remove excess argument to `check_start_handlers'.
2410
2411 2000-02-09  Andrew Haley  <aph@cygnus.com>
2412
2413         * decl.c (clear_binding_level): Remove excess initializer.
2414         (maybe_poplevels): Remove unused variable.
2415         (force_poplevels): Ditto.
2416         (struct binding_level): Add comment.
2417
2418 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2419
2420         * jcf-write.c (generate_classfile): Don't consider
2421         pre-initialization with reference value (use <clinit> instead.)
2422         * parse.y (java_fix_constructors): No generated constructor for
2423         interfaces.
2424         (build_outer_field_access): Removed debug message.
2425         (outer_field_expanded_access_p): Adapted to bytecode generation.
2426         (build_outer_field_access_method): Use fix_method_argument_names.
2427         (build_outer_method_access_method): Fixed indentation. Added
2428         comment. Handle access method generation for static and also void
2429         methods.
2430         (build_access_to_thisn): Inserted debug message.
2431         (maybe_build_thisn_access_method): Use fix_method_argument_names.
2432         (resolve_qualified_expression_name): Fixed comment.
2433         (not_accessible_p): Adapted to bytecode generation. Added comment.
2434         (patch_method_invocation): Added comment.
2435         (maybe_use_access_method): Fixed leading comment. Handle static
2436         methods.
2437         (java_complete_lhs): Don't shortcut handling of initialized upon
2438         declaration String type static fields when generating bytecode.
2439         (patch_unaryop): Handle outer field access when generating
2440         bytecode.
2441
2442 Thu Feb  3 20:23:19 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2443
2444         * java-tree.h (FIELD_THISN): New macro.
2445         * jcf-write.c (append_synthetic_attribute): New function.
2446         (generate_classfile): Set "Synthetic" attribute on this$<n>,
2447         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
2448         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
2449         this$<n> fields.
2450         (build_outer_field_access): Turned on access functions usage and
2451         generation when compiling to bytecode.
2452         (maybe_use_access_method): Likewise.
2453
2454 2000-01-25  Andrew Haley  <aph@cygnus.com>
2455
2456         * java-except.h (struct eh_range): Add `expanded' field.
2457         (maybe_start_try): Add end_pc arg.
2458         (maybe_end_try): Ditto.
2459         * java-tree.h (force_poplevels): new function.
2460         * expr.c (expand_byte_code): Don't call maybe_start_try or
2461         maybe_end_try.
2462         * except.c (add_handler): Reset expanded.
2463         (expand_start_java_handler): Set expanded.
2464         (check_start_handlers): Don't expand a start handler that's
2465         already been expanded.
2466         (maybe_start_try): Add end_pc arg.  Only expand a handler which
2467         ends after end_pc.
2468         (expand_end_java_handler): call force_poplevels.
2469         (force_poplevels): new function.
2470         * decl.c (binding_level): Add start_pc of binding level.
2471         (maybe_pushlevels): Call maybe_start_try when pushing binding
2472         levels.
2473         (maybe_poplevels): Call maybe_end_try when popping binding levels.
2474         (LARGEST_PC): Define.
2475         (clear_binding_level): Use LARGEST_PC.
2476
2477         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
2478         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
2479         (binding_depth, is_class_level, current_pc): new variables.
2480         (struct binding_level): ditto.
2481         (indent): new function.
2482         (push_jvm_slot): add debugging info.
2483         (maybe_pushlevels): ditto.
2484         (maybe_poplevels): ditto.
2485         (pushlevel): ditto.
2486         (poplevel): ditto.
2487         (start_java_method): ditto.
2488         (give_name_to_locals): comment only.
2489         * except.c (binding_depth, is_class_level, current_pc):
2490         new variables.
2491         (expand_start_java_handler): add debugging info.
2492         (expand_end_java_handler): ditto.
2493
2494 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2495
2496         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
2497         (print_name_for_stub_or_jni, process_file): Constify a char*.
2498
2499 2000-02-03  Tom Tromey  <tromey@cygnus.com>
2500
2501         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
2502
2503 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
2504
2505         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
2506         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
2507         defined to be 1.
2508
2509 Wed Feb  2 18:43:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2510
2511         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
2512         * java-tree.h (TYPE_II_STMT_LIST): New macro.
2513         (struct lang_type): New field `ii_block'.
2514         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
2515         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
2516         * parse.h (struct parser_ctxt): New field `instance_initializers'.
2517         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
2518         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
2519         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
2520         macros.
2521         * parse.y (add_instance_initializer): New function.
2522         (in_instance_initializer): New static global.
2523         (class_body_declaration:): Link instance initializer block.
2524         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
2525         (array_creation_expression:): Remove unused local.
2526         (java_parser_context_push_initialized_field): Fixed leading
2527         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
2528         CPC_INSTANCE_INITIALIZER_LIST.
2529         (java_parser_context_pop_initialized_field): Likewise.
2530         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
2531         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
2532         CPC_INITIALIZER_STMT.
2533         (fix_constructors): New local `class_type'. Use it. Call
2534         add_instance_initializer.
2535         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
2536         (patch_return): Forbid return in instance initializers.
2537         (patch_throw_statement): Enforce exception handling in the context
2538         of instance initializers.
2539
2540 2000-02-03  Tom Tromey  <tromey@cygnus.com>
2541
2542         * Make-lang.in (java.mostlyclean): Remove executables in
2543         `mostlyclean'.
2544
2545 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
2546
2547         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
2548         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
2549         (java_float_finite): Convert to use union Word from javaop.h.
2550         (java_double_finite): Convert to use union DWord from javaop.h.
2551
2552 2000-02-02  Tom Tromey  <tromey@cygnus.com>
2553
2554         * gjavah.c (options): Added `jni' entry.
2555         (help): Document -jni.
2556         (flag_jni): New global.
2557         (process_file): Handle JNI output.  Don't print text from
2558         -prepend, -add, etc, when generating stubs.  Only remove `.class'
2559         suffix if it actually exists.
2560         (main): Create a `.c' file when run with `--jni --stubs'.  Create
2561         correct output file name with `--jni'.
2562         (print_include): Mangle header name differently in JNI case.
2563         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
2564         method list.
2565         (print_method_info): Handle JNI case.  Put signature info into
2566         method name.  Handle case when STREAM is NULL.
2567         (print_name_for_stub_or_jni): New function.
2568         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
2569         (print_cxx_classname): Handle JNI.
2570         (print_full_cxx_name): Likewise.
2571         (decode_signature_piece): Likewise.
2572         (overloaded_jni_method_exists_p): New function.
2573         (struct method_name): Added `signature' and `sig_length' fields.
2574         (HANDLE_END_FIELD): Do nothing in JNI mode.
2575
2576 2000-02-02  Tom Tromey  <tromey@cygnus.com>
2577
2578         * jv-scan.c: Include version.c, <getopt.h>.
2579         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
2580         (options): New array.
2581         (usage): New function.
2582         (version): New function.
2583         (main): Use getopt_long to parse command line.
2584         * jcf-dump.c: Include version.c, <getopt.h>.
2585         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
2586         OPT_JAVAP): New macros.
2587         (options): New array.
2588         (usage): Return `void'.  Changed message.
2589         (help): New function.
2590         (version): New function.
2591         (main): Use getopt_long_only to parse command line.
2592         * gjavah.c: Include <getopt.h>.
2593         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
2594         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
2595         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
2596         (options): New array.
2597         (java_no_argument): Removed.
2598         (help): Updated with missing options.
2599         (main): Use getopt_long_only to parse command line.
2600         (usage): Changed message.
2601
2602 Tue Feb  1 22:23:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2603
2604         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
2605         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
2606         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
2607         * parse.y (array_creation_expression:): Handle anonymous arrays.
2608         (build_array_from_name): Don't set `ret_name' if null.
2609         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
2610         (qualify_ambiguous_name): Likewise.
2611         (java_complete_expand_class): Likewise.
2612
2613 Tue Feb  1 14:59:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2614
2615         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
2616         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
2617         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
2618         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
2619         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
2620         AIPL_FUNCTION_COMPLETED_INVOCATION.
2621         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
2622         AIPL_FUNCTION_INVOCATION_READY.
2623         (AIPL_FUNCTION_DECLARATION): New enum entry.
2624         * parse.y (reorder_static_initialized): New function.
2625         (java_parser_context_pop_initialized_field): Use it.
2626         (add_inner_class_fields): Use
2627         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
2628         augmented. Install marker after last alias initializer, if any.
2629         (generate_finit): Fixed typo. Don't try to retain only the used
2630         fields.
2631         (method_header): Compute and set DECL_FUNCTION_NAP.
2632         (method_declarator): Fixed comment. Insert alias initializer in
2633         parameter list.
2634         (build_alias_initializer_parameter_list): Fixed leading
2635         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
2636         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
2637         (java_complete_expand_class): Code to retain only used aliases
2638         removed.
2639         (java_complete_expand_methods): New local `first_decl'. Generate
2640         $finit$ first, then expand the constructors, regular methods and
2641         <clinit>.
2642         (java_complete_expand_method): Don't report error on missing
2643         return statement if previously detected bogus.
2644         (fix_constructors): Don't patch constructor parameters list.
2645         (patch_method_invocation): Use new AIPL enum values. Reverse
2646         alias initializer list for anonymous classes.
2647
2648 2000-01-30  Anthony Green  <green@redhat.com>
2649
2650         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
2651         determine how many stack slots to pop.
2652
2653 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2654
2655         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
2656         error handling/recovery.
2657         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
2658
2659 Fri Jan 28 20:10:57 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2660
2661         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
2662         FIELD_LOCAL_ALIAS_USED): New macros.
2663         (DECL_FUNCTION_NAP): New macro.
2664         (struct lang_decl): New field `nap'.
2665         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
2666         (struct lang_type): New fields `finit_stmt_list' and
2667         `clinit_stmt_list'.
2668         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
2669         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
2670         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
2671         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
2672         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
2673         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
2674         (BUILD_THROW): Macro line separator re-indented.
2675         * parse.y (end_class_declaration): New function.
2676         (maybe_generate_pre_expand_clinit): New name for
2677         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
2678         pre-expand static fields.
2679         (maybe_generate_clinit): Function deleted.
2680         (check_for_static_method_reference): Prototype's parameter list
2681         indented.
2682         (generate_finit): New name for maybe_generate_finit. Changed
2683         leading comment. Function rewritten to use
2684         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
2685         (build_alias_initializer_parameter_list): New function.
2686         (java_parser_context_pop_initialized_field): Likewise.
2687         (add_inner_class_fields): Likewise.
2688         (type_declaration:): Call end_class_declaration.
2689         (class_member_declaration:): Likewise.
2690         (formal_parameter_list:): Fixed typos.
2691         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
2692         element. Improved error handling.
2693         (block_statement:): Call end_class_declaration.
2694         (anonymous_class_creation:): Likewise.
2695         (create_anonymous_class): Fixed comments.
2696         (create_class): Call add_inner_class_fields.
2697         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
2698         (method_header): Use MARK_FINAL_PARMS.
2699         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
2700         (method_declarator): Propagate final argument flag.
2701         (craft_constructor): New local `artificial'. Call
2702         build_alias_initializer_parameter_list. Use
2703         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
2704         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
2705         necessary.
2706         (complete_expand_class): Get rid of unused outer context local
2707         alias fields.
2708         (java_complete_expand_methods): Fixed leading
2709         comment. Generate/pre-expand <clinit> first. Changed method
2710         expansion order to regular, $finit$, constructors, <clinit>.
2711         (java_complete_expand_method): Set current_function_decl.
2712         (fix_constructors): Fix constructor parameter list to account for
2713         outer context local alias initializers.
2714         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
2715         (resolve_expression_name): Lookup outer context local aliases. New
2716         local `access', use it.
2717         (patch_method_invocation): Patch inner class ctor invocation with
2718         outer context local aliases initialization values. $finit$
2719         invocation patching now includes things generated with
2720         build_alias_initializer_parameter_list.
2721         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
2722         (build_super_invocation): Likewise.
2723         (patch_assignment): Changed comment.
2724
2725 2000-01-27  Andrew Haley  <aph@cygnus.com>
2726
2727         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
2728         (emit_if): Ditto.
2729         (emit_jsr): Ditto.
2730
2731 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2732
2733         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
2734         concatenation.
2735         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
2736
2737         * parse.y (register_fields): Don't pass a format specifier to
2738         OBSOLETE_MODIFIER_WARNING.
2739         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
2740         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
2741         specifier.
2742         (check_modifiers): Change function into a macro.
2743         (check_class_interface_creation): Pass a literal format string.
2744
2745 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2746
2747         * buffer.h: PROTO -> PARAMS.
2748         * check-init.c: Likewise.
2749         * class.c: Likewise.
2750         * constants.c: Likewise.
2751         * convert.h: Likewise.
2752         * decl.c: Likewise.
2753         * except.c: Likewise.
2754         * expr.c: Likewise.
2755         * gjavah.c: Likewise.
2756         * java-except.h: Likewise.
2757         * java-tree.h: Likewise.
2758         * jcf-depend.c: Likewise.
2759         * jcf-dump.c: Likewise.
2760         * jcf-parse.c: Likewise.
2761         * jcf-path.c: Likewise.
2762         * jcf-reader.c: Likewise.
2763         * jcf-write.c: Likewise.
2764         * jcf.h: Likewise.
2765         * jv-scan.c: Likewise.
2766         * jvgenmain.c: Likewise.
2767         * jvspec.c: Likewise.
2768         * lang.c: Likewise.
2769         * lex.c: Likewise.
2770         * lex.h: Likewise.
2771         * parse-scan.y: Likewise.
2772         * parse.h: Likewise.
2773         * parse.y: Likewise.
2774         * typeck.c: Likewise.
2775         * verify.c: Likewise.
2776         * xref.c: Likewise.
2777         * xref.h: Likewise.
2778         * zextract.c: Likewise.
2779         * zipfile.h: Likewise.
2780
2781 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2782
2783         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
2784         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
2785         * constants.c (build_constant_data_ref): Check for cached
2786         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
2787         in TYPE_CPOOL_DATE_REF.
2788         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
2789         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
2790         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
2791         (LOCAL_FINAL): New macro.
2792         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
2793         constant pool -- don't try to reuse.
2794         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
2795         TYPE_LANG_SPECIFIC.
2796         (find_in_current_zip): Use TYPE_JCF.
2797         * parse.h (java_check_final): Prototype removed.
2798         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
2799         (maybe_create_class_interface_decl,
2800         check_class_interface_creation): Likewise.
2801         (java_expand_finals): Function removed.
2802         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
2803         (block_statement:): Fixed comment.
2804         (anonymous_class_creation:): Likewise.
2805         (check_class_interface_creation): Reversed Jan 12, 2000 extra
2806         argument patch.
2807         (check_class_interface_creation): Loosened error report on (inner)
2808         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
2809         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
2810         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
2811         argument patch.
2812         (create_interface): Likewise.
2813         (anonymous_class_counter): New static global.
2814         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
2815         patch. Fixed comments.
2816         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
2817         anonymous_class_counter when declaring a toplevel class.
2818         (craft_constructor): Fixed constructor name when handling
2819         anonymous classes. Anonymous class constructors to feature hidden
2820         this$<n> parameter.
2821         (java_fix_constructors): Added comment.
2822         (java_check_final): Function removed.
2823         (java_complete_expand_methods): Fixed comment. Don't generate
2824         class data, save its outgoing constant pool instead.
2825         (verify_constructor_super): Skip anonymous class constructor
2826         hidden this$<n> parameter.
2827         (java_expand_classes): New local `saved_ctxp'. Removed call to
2828         java_expand_finals and java_check_final. Expand anonymous class
2829         constructors. Generate class data.
2830         (build_super_invocation): Skip anonymous class hidden this$<n>
2831         parameter.
2832         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
2833         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
2834         (set_java_signature): Likewise.
2835
2836 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2837
2838         * gjavah.c: Delete ACC_VISIBILITY define.
2839         * jcf.h: Add ACC_VISIBILITY define.
2840         * parse.y: final: rule tagged <value>.
2841         (java_check_regular_methods): Use ACC_VISIBILITY define for
2842         default package access check.
2843         (local_variable_declaration_statement): Use final: rule.
2844
2845 Mon Jan 17 11:58:17 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
2846
2847         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
2848         (final:): New rule.
2849
2850 2000-01-17  Tom Tromey  <tromey@cygnus.com>
2851
2852         * gjavah.c (print_field_info): Allow non-static final fields.
2853
2854 Fri Jan 14 18:03:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2855
2856         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
2857         * parse.y (patch_anonymous_class): New function.
2858         (create_anonymous_class): Register incomplete type when the
2859         class/interface to extends/implement isn't known yet.
2860         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
2861         (verify_constructor_super): Tuned error message.
2862
2863 Fri Jan 14 00:14:24 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2864
2865         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
2866         (ANONYMOUS_CLASS_P): New macro.
2867         (TYPE_SIGNATURE, TYPE_JCF): New macros.
2868         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
2869         * parse.y (create_class): Added leading argument.
2870         (maybe_create_class_interface_decl,
2871         check_class_interface_creation): Likewise.
2872         (craft_constructor): New function.
2873         (verify_constructor_super): Added argument in prototype.
2874         (class_declaration:): Inserted leading argument.
2875         (for_begin:): Use FOR_LOOP_P.
2876         (anonymous_class_creation): Create WFL of the anonymous class to
2877         instantiate. Call build_new_invocation. Added comments.
2878         (check_class_interface_creation): Handle parameter `anonymous' in
2879         verbose mode class creation announce.
2880         (link_nested_class_to_enclosing): Exclude anonymous classes.
2881         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
2882         anonymous class, even though they appear to have an enclosing
2883         context.
2884         (create_interface): Pass extra argument to
2885         check_class_interface_creation.
2886         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
2887         (create_class): Call check_class_interface_creation and
2888         maybe_create_class_interface_decl with extra new argument. Don't
2889         add private this$<n> to anonymous classes.
2890         (method_declarator): Insert hidden this$<n> to anonymous class
2891         constructors.
2892         (java_fix_constructors): Deleted code creating default
2893         constructor. Call craft_constructor instead.
2894         (java_check_regular_methods): Set `saw_constructor' to 1 for
2895         anonymous classes.
2896         (fix_constructors): Pass extra argument to verify_constructor_super.
2897         (verify_constructor_super): New local `sdecl', use it. Search for
2898         matching constructor (possibly featuring arguments) in super
2899         class.
2900         (lookup_method_invoke): Craft constructor according to arguments
2901         list when dealing with anonymous class constructors.
2902         (build_super_invocation): Pass arguments to anonymous class super
2903         constructors.
2904         (search_loop): Use FOR_LOOP_P.
2905         (labeled_block_contains_loop_p): Likewise.
2906
2907 Wed Jan 12 00:38:47 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2908
2909         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
2910         (enclosing_context_p): New function.
2911         (get_access_flags_from_decl): Handle CLASS_STATIC.
2912         (maybe_layout_super_class): Extra first argument passed to
2913         do_resolve_class.
2914         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
2915         ID_INIT_P.
2916         * decl.c (access0_identifier_node): New global.
2917         (init_decl_processing): access0_identifier_node initialized.
2918         (pushdecl): Set DECL_CONTEXT only on non type decls.
2919         * expr.c (lookup_field): Lookup inner class fields in enclosing
2920         contexts.
2921         (expand_invoke): Use ID_INIT_P.
2922         (expand_java_field_op): Use DECL_CLINIT_P.
2923         * java-tree.def (CLASS_LITERAL): New tree code.
2924         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
2925         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
2926         (struct lang_decl): New field `inner_access'.
2927         (enclosing_context_p): Prototyped.
2928         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
2929         ID_CLINIT_P): New macros.
2930         (CLASS_STATIC): New macro.
2931         (CLASS_ACCESS0_GENERATED_P): New macro.
2932         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
2933         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
2934         INNER_CLASS_P): New macros.
2935         (DECL_INNER_CLASS_LIST): New macro.
2936         * jcf-parse.c (yyparse): Avoid the use of ANSI string
2937         concatenation.
2938         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
2939         the shift value to int. Fixed typo in comment.
2940         * lex.c (inst_id, wpv_id): Initialize.
2941         * mangle.c (unicode_mangling_length): Take `$' into account.
2942         * parse.h (DRECOVER, RECOVER): Terminate properly.
2943         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
2944         (typedef struct _jdep): New field `enclosing'.
2945         (JDEP_ENCLOSING): New macro.
2946         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
2947         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
2948         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
2949         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
2950         GET_ENCLOSING_CPC_CONTEXT): New macros.
2951         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
2952         (do_resolve_class): Added extra argument in prototype.
2953         * parse.y (resolve_class): Added extra argument in prototype.
2954         (maybe_create_class_interface_decl): Likewise.
2955         (maybe_use_access_method, build_wfl_wrap): New functions.
2956         (java_complete_expand_classes, java_complete_expand_class):
2957         Likewise.
2958         (java_parser_context_push_initialized_field,
2959         java_parser_context_suspend, java_parser_context_resume):
2960         Likewise.
2961         (maybe_make_nested_class_name, make_nested_class_name,
2962         set_nested_class_simple_name_value,
2963         link_nested_class_to_enclosing, find_as_inner_class,
2964         find_as_inner_class_do, check_inner_class_redefinition,
2965         build_thisn_assign, build_current_thisn, build_access_to_thisn,
2966         maybe_build_thisn_access_method, build_outer_field_access,
2967         build_outer_field_access_methods, build_outer_field_access_expr,
2968         build_outer_method_access_method, build_new_access_id,
2969         build_outer_field_access_method, outer_field_access_p,
2970         outer_field_expanded_access_p, outer_field_access_fix,
2971         build_incomplete_class_ref, patch_incomplete_class_ref,
2972         create_anonymous_class): Likewise.
2973         (inst_id, wpv_id): New static global variables.
2974         (synchronized:): New rule, tagged <node>.
2975         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
2976         rules.
2977         (anonymous_class_creation:): New rule, tagged <node>.
2978         (NEW_TK): Tagged <node>.
2979         (type_literals, array_type_literal): New rules, tagged <node>.
2980         (class_declaration:): Removed action when reducing by class_body:
2981         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
2982         using GET_CPC in sub-rules.
2983         (class_member_declaration): Handle inner classes.
2984         (method_declaration): When reducing method_header:, reset
2985         current_function_decl when appropriate.
2986         (method_declarator:): Set the number of formal parameter to 0 for
2987         method declared without arguments.
2988         (constructor_declarator:): Likewise.
2989         (static_initializer:): List of elements kept in a list.
2990         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
2991         use of the keyword `static' for type declarations.
2992         (block_statement:): Handle inner class declarations.
2993         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
2994         type qualified `this'.
2995         (class_instance_creation_expression): Use anonymous_class_creation:
2996         to handle inner class instances creation. Handle qualified `new'.
2997         (something_dot_new): Added appropriate actions.
2998         (create_new_parser_context): New function.
2999         (java_push_parser_context, java_parser_context_save_global,
3000         java_parser_context_suspend): Use create_new_parser_context.
3001         (check_modifiers): Changed leading comment.
3002         (check_class_interface_creation): Handle interclasses.
3003         (add_superinterfaces): Fixed comment.
3004         (create_interface): Build qualified name from the raw_name instead
3005         of its matching WFL. Push the initialized fields list. raw_name added
3006         as an extra argument to maybe_create_class_interface_decl.
3007         (create_class): Build qualified name from the raw_name instead of
3008         its matching WFL. Removed assignment to current_parsed_class_un.
3009         Call PUSH_ERROR before returning an error. Suspend the current
3010         parser context when processing an inner class. Push the
3011         initialized fields list. raw_name added as an extra argument to
3012         maybe_create_class_interface_decl. Add the private this$<n>
3013         field.
3014         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
3015         (register_fields): Get the class type from GET_CPC and handle
3016         previous errors.  Added code to handle the creation of static
3017         fields in inner classes. Initialized fields initialization
3018         statements kept in a list of lists.
3019         (maybe_generate_finit): Initialized fields initialization
3020         statements kept in a list of lists. Use GET_CPC.
3021         (maybe_generate_clinit): Likewise.
3022         (method_header): Use GET_CPC and GET_CPC_UN.
3023         (parser_qualified_classname): Handle inner classes.
3024         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
3025         (java_fix_constructors): Hide pointer to enclosing context
3026         instance in constructor list when dealing with inner classes.
3027         (jdep_resolve_class): Call resolve_class with extra first argument
3028         JDEP_ENCLOSING.
3029         (resolve_class): Add enclosing context as a first extra argument
3030         to do_resolve_class.
3031         (do_resolve_class): Call find_as_inner_class. Handle WFLs
3032         properly.
3033         (resolve_no_layout): Extra argument added to resolve_class
3034         invocation.
3035         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
3036         (java_get_real_method_name): Use GET_CPC_UN.
3037         (check_abstract_method_definitions): Use DECL_CLINIT_P.
3038         (java_check_abstract_methods): Handle static method declared in
3039         inner classes by an error.
3040         (java_check_regular_methods): Use DECL_CLINIT_P.
3041         (source_start_java_method): Also set DECL_MAX_LOCALS.
3042         (create_artificial_method): Call java_parser_context_save_global
3043         and java_parser_context_restore_global instead of saving/restoring
3044         the context by hand.
3045         (expand_start_java_method): Improved verbose mode message.
3046         (java_complete_expand_methods): Fixed leading comment. Use
3047         DECL_CLINIT_P.
3048         (fix_constructors): Added assignment to this$<n> if necessary.
3049         (java_expand_classes): Call java_complete_expand_classes instead
3050         of java_complete_expand_methods.
3051         (make_qualified_primary): Simplified.
3052         (merge_qualified_name): Optimized for missing left or right parts.
3053         (resolve_expression_name): Handle access to outer class fields from
3054         interclasses.
3055         (resolve_qualified_expression_name): New macro
3056         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
3057         classes. Report error on non appropriate qualification of
3058         `new'. Handle qualified `this'.
3059         (not_accessible_p): Allow access to outer class private fields from
3060         inner classes.
3061         (patch_method_invocation): Handle method invocations through
3062         access methods and inner class constructor invocations.
3063         (find_applicable_accessible_methods_list): Search enclosing
3064         contexts of an inner class.
3065         (search_applicable_methods_list): Fixed typo.
3066         (argument_types_convertible): Handle inner class constructors'
3067         hidden outer context reference argument.
3068         (qualify_ambiguous_name): Handle qualified `this'.
3069         (java_complete_lhs): Handle use of field accessed through
3070         artificial access methods in various cases of assignments. Handle
3071         CLASS_LITERAL node.
3072         (check_final_assignment): Use DECL_CLINIT_P.
3073         (valid_ref_assignconv_cast_p): Handle the destination being an
3074         enclosing context of the source.
3075         (patch_unaryop): Handle use of field accessed through artificial
3076         access methods.
3077         (patch_return): Use DECL_CLINIT_P.
3078         (patch_throw_statement): Use DECL_CLINIT_P.
3079         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
3080         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
3081         ID_INIT_P.
3082
3083 2000-01-16  Anthony Green  <green@cygnus.com>
3084
3085         * parse.y (build_string_concatenation): Only use
3086         StringBuffer(String) shortcut if String arg is constant.
3087
3088 Wed Jan 12 20:20:11 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3089
3090         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
3091         the shift value to int. Fixed typo in comment.
3092
3093 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
3094
3095         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
3096         * jcf-write.c: Likewise.
3097         * parse.y: Likewise.
3098         * parse.c: Regenerate.
3099
3100 2000-01-09  Anthony Green  <green@cygnus.com>
3101
3102         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
3103         bytecodes in the correct order.
3104
3105 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3106
3107         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
3108
3109 Thu Jan  6 16:31:28 2000  Anthony Green  <green@cygnus.com>
3110
3111         * expr.c (java_lang_expand_expr): Switch to permanent obstack
3112         before building constant array decl.
3113
3114 Thu Jan  6 00:54:10 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3115
3116         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
3117         method invocation and typo in conditional expression.
3118         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
3119         the appropriate NOTE_POP.
3120         * parse.y (patch_binop): Shift value mask to feature the right
3121         type.
3122
3123 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3124
3125         * class.c (assume_compiled, assume_compiled_node): Add static
3126         prototype.
3127         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
3128
3129         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
3130
3131         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
3132
3133         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
3134         to `__modifier' to avoid stringifying it.
3135
3136         * parse.y (verify_constructor_circularity): Don't call a variadic
3137         function with a non-literal format string.
3138         (java_check_abstract_methods): Move unreachable code inside
3139         `continue' statement.
3140         (lookup_method_invoke): Call xstrdup, not strdup.
3141
3142         * expr.c (expand_java_field_op): Avoid the use of ANSI string
3143         concatenation.
3144
3145         * jcf-parse.c (yyparse): Likewise.
3146
3147         * jv-scan.c (main): Likewise.
3148
3149 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3150
3151         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
3152         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
3153         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
3154         concatenation.
3155
3156         * parse.y (synchronized, variable_redefinition_error,
3157         check_class_interface_creation, create_interface, create_class,
3158         method_header, finish_method_declaration,
3159         check_modifiers_consistency, method_declarator,
3160         complete_class_report_errors, check_abstract_method_definitions,
3161         java_check_regular_methods, check_throws_clauses,
3162         java_check_abstract_methods, read_import_dir,
3163         check_pkg_class_access, declare_local_variables, fix_constructors,
3164         cut_identifier_in_qualified, resolve_expression_name,
3165         resolve_qualified_expression_name, patch_method_invocation,
3166         java_complete_lhs, patch_assignment, try_builtin_assignconv,
3167         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
3168         patch_exit_expr, patch_exit_expr, patch_switch_statement,
3169         patch_try_statement, patch_synchronized_statement,
3170         patch_throw_statement, check_thrown_exceptions,
3171         patch_conditional_expr): Likewise.
3172
3173 Fri Dec 24 00:25:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3174
3175         * Makefile.in (LIBDEPS): Added gcc's errors.o
3176         (../jcf-dump$(exeext):): Link with gcc's errors.o
3177         (../gcjh$(exeext):): Likewise.
3178         * expr.c (expand_java_NEW): Layout the entire target type instead of
3179         laying out its methods only.
3180         (lookup_field): Layout the class after having loaded it.
3181         * java-tree.h (java_debug_context): Declared.
3182         * jcf-io.c (toplev.h): Included.
3183         (find_class): Removed assignment to jcf's outofsynch
3184         field. Force source file to be read if newer than its matching
3185         class file. Tweaked debug messages.
3186         * jcf-parse.c (jcf_out_of_synch): Deleted.
3187         (read_class): Call to jcf_out_of_synch removed.
3188         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
3189         (jcf_out_of_synch): Prototype deleted.
3190         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
3191         `deprecated' and `class_err': integer turned into bit fields.
3192         New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
3193         * parse.y (package_list): New global.
3194         (package_declaration:): Record newly parsed package name.
3195         (extra_ctxp_pushed_p): Static global deleted.
3196         (java_parser_context_save_global): Create buffer context for the
3197         purpose of saving globals, if necessary.
3198         (java_parser_context_restore_global): Pop context pushed for the
3199         purpose of saving globals, if necessary.
3200         (java_debug_context_do): New prototype and function.
3201         (java_debug_context): Likewise.
3202         (do_resolve_class): Use already parsed package names to qualify
3203         and lookup class candidate.
3204         (java_pre_expand_clinit): Removed unnecessary local variable.
3205
3206 1999-12-17  Tom Tromey  <tromey@cygnus.com>
3207
3208         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
3209         fixes PR gcj/119.
3210         (process_file): Use `\n\' at end of each line in string.
3211
3212 Thu Dec 16 00:09:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3213
3214         * expr.c (expand_invoke): Layout the loaded class before
3215         attempting to use it.
3216         (expand_java_field_op): Allow final field assignments to take
3217         place in $finit$.
3218         * typeck.c (convert): Return error_mark_node if expr is null.
3219
3220 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3221
3222         * class.c (class_depth): Return -1 if the class doesn't load
3223         properly.
3224         * expr.c (can_widen_reference_to): Check for errors during depth
3225         computation and return 0 accordingly.
3226         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
3227         create default constructors and add an other error check.
3228         * parse.h (java_fix_constructors): Prototyped.
3229         * parse.y (java_pre_expand_clinit): Likewise.
3230         (build_super_invocation): Re-prototyped to feature one argument.
3231         (java_check_circular_reference): Directly use `current'.
3232         (java_fix_constructors): New function.
3233         (java_check_regular_methods): Don't create default constructors
3234         here, but abort if none were found.
3235         (java_complete_expand_methods): Pre-process <clinit> calling
3236         java_pre_expand_clinit.
3237         (java_pre_expand_clinit): New function.
3238         (fix_constructors): build_super_invocation invoked with the
3239         current method declaration as an argument.
3240         (build_super_invocation): Use the context of the processed method
3241         decl argument instead of current_class.
3242         * typeck.c (lookup_java_method): Take WFLs in method names into
3243         account.
3244
3245 Tue Dec 14 14:20:16 1999  Per Bothner  <per@bothner.com>
3246
3247         * class.c (make_class_data): flag_keep_inline_functions to keep
3248         private methods in the method array.
3249
3250 1999-12-15  Anthony Green  <green@cygnus.com>
3251
3252         * check-init.c (check_init): Take into account both types of
3253         `throw's when checking for uninitialized variables.
3254
3255 Fri Dec 10 21:53:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3256
3257         * parse.y (java_complete_lhs): Force convertion of array
3258         dimensions to int_type_node, that's what runtime's ABI expects.
3259
3260 Fri Dec 10 16:13:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3261
3262         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
3263         operand of a WFL, until the Java front-end gets fixed with regard
3264         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
3265
3266 1999-12-10  Andrew Haley  <aph@cygnus.com>
3267
3268         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
3269         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
3270         expr.c (build_java_athrow): Add support for sjlj-exceptions.
3271         java-tree.h: Ditto.
3272         jcf-write.c: Ditto.
3273
3274 Wed Dec  8 15:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3275
3276         * expr.c (java_lang_expand_expr): Switch to permanent obstack
3277         before calling expand_eh_region_start and expand_start_all_catch.
3278         * except.c (expand_start_java_handler): Switch to permanent
3279         obstack before calling expand_eh_region_start.
3280         (expand_end_java_handler): Switch to permanent obstack before
3281         calling expand_start_all_catch.
3282
3283 1999-12-5  Anthony Green  <green@cygnus.com>
3284
3285         * decl.c (init_decl_processing): Mark throw_node as a noreturn
3286         function with side effects.
3287         (init_decl_processing): Mark all memory allocating DECLs with
3288         DECL_IS_MALLOC.
3289
3290 Wed Dec  1 04:25:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3291
3292         * except.c (expand_end_java_handler): Call
3293         expand_resume_after_catch and end_catch_handler.
3294
3295 Tue Nov 30 12:36:15 1999  Anthony Green  <green@cygnus.com>
3296
3297         * verify.c (verify_jvm_instructions): Create new return label
3298         chain if non existant (don't rely on the verified state of the jsr
3299         target.)
3300
3301 Tue Nov 30 12:28:34 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3302
3303         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
3304         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
3305
3306         * parse.y (patch_assignment): Removed bogus final class test on
3307         lhs when checking on whether to emit an ArrayStoreException runtime
3308         check.
3309         * expr.c (expand_java_arraystore): Likewise.
3310
3311 1999-11-28 Anthony Green <green@cygnus.com>
3312
3313         * decl.c (find_local_variable): Reuse single slot decls when
3314           appropriate.
3315
3316 Wed Nov 24 17:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3317
3318         * jcf-parse.c (saw_java_source): Global variable removed.
3319         (read_class): Don't use `saw_java_source'. Added extra braces.
3320         (yyparse): Code setting `saw_java_source' removed.
3321
3322 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
3323
3324         * except.c (emit_handlers): Zero catch_clauses after emitting them.
3325
3326 Tue Nov 23 17:29:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3327
3328         * verify.c (merge_type_state): Non verified subroutines being
3329         considered more than once to trigger passive type merge.
3330
3331 Tue Nov 23 10:55:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3332
3333         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
3334         in case of error. Error message tuned.
3335
3336 1999-11-21  Anthony Green  <green@cygnus.com>
3337
3338         * constants.c (find_methodref_index): Unwrap method names before
3339         inserting them in the constant pool.
3340
3341         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
3342
3343         * class.c (assume_compiled_node): New typedef.
3344         (assume_compiled_tree): New static data.
3345         (find_assume_compiled_node): New function.
3346         (add_assume_compiled): New function.
3347         (assume_compiled): New function.
3348         * class.c (make_class_data): Use assume_compiled.
3349         (is_compiled_class): Use assume_compiled.
3350
3351         * java-tree.h (add_assume_compiled): Declare.
3352
3353         * lang.c (lang_decode_option): Parse new options.
3354
3355 Wed Nov 17 21:09:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3356
3357         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
3358         int_type_node: that's what `_Jv_AllocObject' expects.
3359
3360 Thu Nov 11 01:57:14 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3361
3362         * parse.y (lookup_method_invoke): Use lang_printable_name to
3363         reliably build the type name during error report. Fixes PR gcj/97.
3364
3365 1999-11-09  Tom Tromey  <tromey@cygnus.com>
3366
3367         * jcf-path.c: Include <sys/stat.h>.
3368         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
3369         (DIR_UP): New macro.
3370
3371 Tue Nov  9 12:12:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3372
3373         * parse.y (source_end_java_method): Resume permanent allocation,
3374         reversing Apr 27 1998 patch.
3375         (patch_string_cst): Pop obstacks after having pushed the permanent
3376         ones.
3377
3378 1999-11-05  Tom Tromey  <tromey@cygnus.com>
3379
3380         * class.c (finish_class): Emit inlined methods if any native
3381         methods exist in the class.  Fixes PR gcj/85.
3382
3383 Thu Nov  4 16:27:01 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3384
3385         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
3386         (qualify_ambiguous_name): Likewise.
3387
3388 Wed Nov  3 15:20:02 MST 1999  Godmar Back <gback@cs.utah.edu>
3389
3390         * typeck.c: (lookup_java_method):  search all inherited
3391         interfaces when looking up interface method.
3392
3393 Mon Nov  1 23:42:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3394
3395         * parse.y (method_header:): Issue error message for rule `type
3396         error'.
3397         (synchronized:): Error report when not using synchronized.
3398
3399 Mon Nov  1 01:32:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3400
3401         * parse.y (resolve_qualified_expression_name): Prevent `this' from
3402         being used before the superclass constructor has been called.
3403         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
3404         instead of `CALL_THIS_CONSTRUCTOR_P'.
3405
3406 Sat Oct 30 21:35:13 1999  Todd T. Fries <todd@lighthouse.fries.net>
3407
3408         * check-init.c: Fix typo in comment.
3409
3410 Fri Oct 29 14:35:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3411
3412         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
3413         and final method.
3414
3415 Fri Oct 29 14:23:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3416
3417         * parse.y (expression_statement:): Call function to report
3418         improper invocation of a constructor.
3419         (parse_ctor_invocation_error): New function.
3420
3421 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
3422
3423         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
3424         remember_end_note.
3425
3426 1999-10-21  Tom Tromey  <tromey@cygnus.com>
3427
3428         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
3429         in generated `main'.
3430
3431 Thu Oct 21 01:27:31 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3432
3433         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
3434         (qualify_ambiguous_name): Likewise.
3435
3436 Wed Oct 20 01:41:47 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3437
3438         * parse.y (java_complete_tree): fold_constant_for_init to work on
3439         permanent_obstack.
3440         (java_complete_lhs): Likewise.
3441         (array_constructor_check_entry): Complete an initializer element
3442         on permanent_obstack.
3443
3444 1999-10-19  Tom Tromey  <tromey@cygnus.com>
3445
3446         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
3447         From Mike Moreton <mike@pillim.demon.co.uk>.
3448
3449 1999-10-15  Greg McGary  <gkm@gnu.org>
3450
3451         * java-tree.h (flag_bounds_check): Remove extern decl.
3452         * lang.c (flag_bounds_check): Remove global variable.
3453         (lang_f_options): Remove "bounds-check" entry.
3454         (lang_init_options): Default flag_bounds_check to "on".
3455
3456 1999-10-14  Tom Tromey  <tromey@cygnus.com>
3457
3458         * jvgenmain.c (usage): New function.
3459         (main): Use it.  Also, handle `-D' options.
3460         * jvspec.c (lang_specific_driver): Recognize -D.
3461         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
3462
3463         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
3464
3465 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3466
3467         * jcf-dump.c (print_constant, disassemble_method): Don't call a
3468         variadic function with a non-literal format string.
3469
3470         * parse-scan.y (report_main_declaration): Likewise.
3471
3472         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
3473
3474         * parse.y (read_import_dir, patch_assignment, patch_binop,
3475         patch_array_ref): Likewise.
3476
3477         * typeck.c (build_java_array_type): Likewise.
3478
3479         * verify.c (verify_jvm_instructions): Likewise.
3480
3481 Tue Oct 12 22:28:10 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3482
3483         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
3484
3485 1999-10-07  Anthony Green  <green@cygnus.com>
3486
3487         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
3488         where CHECK_PUT may fail for valid reasons.
3489
3490         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
3491         UNSAFE_PUTN): New macros.
3492
3493 1999-10-04  Tom Tromey  <tromey@cygnus.com>
3494
3495         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
3496         well.  Fixes Java PR gcj/59.
3497         * parse-scan.y (yyerror): Report errors.
3498
3499 Fri Sep 24 12:23:05 1999  Glenn Chambers  <GChambers@provsol.com>
3500
3501         * decl.c (insert_block): Remove unconditional `abort'.
3502
3503 Fri Sep 24 10:48:10 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
3504
3505         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
3506         FUNCTION_CODE now of type int.  All callers changed.
3507         Set the builtin's DECL_BUILT_IN_CLASS.
3508
3509 1999-09-23  Tom Tromey  <tromey@cygnus.com>
3510
3511         * jvspec.c (lang_specific_driver): Don't read spec file if
3512         -fsyntax-only given.
3513
3514 1999-09-22  Tom Tromey  <tromey@cygnus.com>
3515
3516         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
3517
3518         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
3519         (WORDS_TO_LONG): Likewise.
3520         (WORDS_TO_DOUBLE): Likewise.
3521
3522 Tue Sep 14 16:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3523
3524         * jcf-write.c (RELOCATION_VALUE_0): New macro.
3525         (RELOCATION_VALUE_1): Likewise.
3526         (emit_iinc, emit_reloc, push_constant1, push_constant2,
3527         push_in_const, push_long_const): Prototyped.
3528         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
3529         (push_constant2): Likewise.
3530         (push_int_const): Cast find_constant1's integer arguments to `jword'.
3531         (find_constant_wide): Cast find_constant2's integer arguments to
3532         `jword'.
3533         (find_constant_index): Cast find_constant2's and find_constant2's
3534         integer arguments to `jword'.
3535         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
3536         (emit_switch_reloc): Use RELOCATION_VALUE_0.
3537         (emit_if): Use RELOCATION_VALUE_1.
3538         (emit_goto): Likewise.
3539         (emit_jsr): Likewise.
3540         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
3541         argument to push_long_const to HOST_WIDE_INT.
3542
3543 1999-09-15  Andreas Schwab  <schwab@suse.de>
3544
3545         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
3546
3547 1999-09-20  Nick Clifton  <nickc@cygnus.com>
3548
3549         * lang.c (lang_decode_option): Extend comment.
3550
3551 Thu Sep 16 15:42:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3552
3553         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
3554         instead of fndecl.
3555
3556 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3557
3558         * gjavah.c (get_field_name, print_method_info, print_include,
3559         add_namelet): Use xmalloc, not malloc.
3560
3561         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
3562         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
3563         NULL pointer.
3564
3565         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
3566
3567         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
3568
3569         * jcf-path.c (add_entry): Likewise.
3570
3571         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
3572
3573         * jv-scan.c (xmalloc): Remove definition.
3574
3575         * jvgenmain.c (xmalloc): Likewise.
3576
3577         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
3578
3579         * lex.c (java_store_unicode): Use xrealloc, not realloc.
3580
3581         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
3582         concat, not xmalloc/sprintf.
3583         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
3584         (xstrdup): Remove definition.
3585
3586         * parse.y (duplicate_declaration_error_p,
3587         constructor_circularity_msg, verify_constructor_circularity,
3588         check_abstract_method_definitions, java_check_regular_methods,
3589         java_check_abstract_methods, patch_method_invocation,
3590         check_for_static_method_reference, patch_assignment, patch_binop,
3591         patch_cast, array_constructor_check_entry, patch_return,
3592         patch_conditional_expr): Use xstrdup, not strdup.
3593
3594         * zextract.c (ALLOC): Use xmalloc, not malloc.
3595
3596 Sun Sep 12 23:30:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3597
3598         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
3599
3600         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
3601         (do_spec, lang_specific_pre_link, lang_specific_driver,
3602         input_filename, input_filename_length): Don't declare.
3603         (main_class_name, jvgenmain_spec, lang_specific_driver):
3604         Constify a char*.
3605         (lang_specific_driver): All calls to the function pointer
3606         parameter now explicitly call `fatal'.
3607
3608 Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3609
3610         * parse.y (find_applicable_accessible_methods_list): Search
3611         abstract classes as interfaces.
3612
3613 Thu Sep  9 17:33:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3614
3615         * class.c (finish_class): We're now outside a valid method
3616         declaration. Tell the rest of gcc so.
3617
3618 1999-09-08  Bruce Korb  autogen@linuxbox.com
3619
3620         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
3621
3622 1999-09-07  Tom Tromey  <tromey@cygnus.com>
3623
3624         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
3625         java-array.h.
3626         (decode_signature_piece): Don't emit "::" in JArray<>.
3627         (print_namelet): Only print trailing `;' when printing a class.
3628
3629 Fri Sep 10 10:32:32 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
3630
3631         * java-tree.h: Delete declarations for all tree nodes now moved to
3632         global_trees.
3633         * decl.c: Delete their definitions.
3634
3635 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
3636
3637         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
3638         * Makefile.in (OBJS): Add ggc-callbacks.o.
3639         (OBJDEPS): Likewise.
3640
3641 1999-09-03  Tom Tromey  <tromey@cygnus.com>
3642
3643         * parse.y (strip_out_static_field_access_decl): Return operand if
3644         it satisfies JDECL_P.
3645
3646 1999-09-02  Tom Tromey  <tromey@cygnus.com>
3647
3648         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
3649         Handle nested arrays, like `[[I'.
3650
3651 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3652
3653         * class.c (finish_class): Remove unused parameter, all callers
3654         changed.
3655
3656         * expr.c (build_java_athrow): Change return type to void.
3657         (java_lang_expand_expr): Make sure each case in switch returns a
3658         value.
3659
3660         * java-tree.h (finish_class): Fix prototype to take void args.
3661
3662         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
3663         (main): Issue return from main, not exit.
3664
3665         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
3666
3667         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
3668
3669         * jv-scan.c (main): Issue return from main, not exit.
3670
3671         * parse.y (check_abstract_method_definitions,
3672         java_check_abstract_method_definitions): Add static prototypes.
3673         (java_complete_expand_methods): Fix call to `finish_class'.
3674
3675         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
3676         and `prevpc'.
3677
3678 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3679
3680         * lang.c (language_string): Constify.
3681
3682 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3683
3684         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
3685         Remove hacks for stuff which comes from libiberty.
3686
3687         * Make-lang.in: Likewise.
3688
3689 Mon Aug 30 16:41:41 1999  Hans-Peter Nilsson  <hp@axis.se>
3690
3691         * Makefile.in (xref.o): Depend on xref.c explicitly.
3692
3693 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3694
3695         * java-tree.h (lang_printable_name): Constify a char*.
3696
3697         * lang.c (lang_printable_name): Likewise.
3698
3699 Fri Aug 27 23:31:57 1999  Jeffrey A Law  (law@cygnus.com)
3700
3701         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
3702         comments in C code.
3703
3704 1999-08-26  Tom Tromey  <tromey@cygnus.com>
3705
3706         * gjavah.c (print_cxx_classname): Print "::" before qualified
3707         name.
3708
3709 Thu Aug 26 09:10:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3710
3711         * parse.y (lookup_cl): Changed leading comment. Now does its best
3712         to set the column number.
3713         (qualify_ambiguous_name): Take WFL wrappers into account.
3714
3715 Wed Aug 25 15:37:15 1999  Gregg Townsend  <gmt@cs.arizona.edu>
3716
3717         * verify.c (verify_jvm_instructions): Don't check instruction
3718         validity beyond end of method.
3719
3720 1999-08-25  Tom Tromey  <tromey@cygnus.com>
3721
3722         * jvspec.c (lang_specific_driver): Correctly handle --help again.
3723
3724 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3725
3726         * gjavah.c (print_name, print_base_classname, utf8_cmp,
3727         cxx_keyword_subst, generate_access, name_is_method_p,
3728         get_field_name, print_field_name, super_class_name, print_include,
3729         decode_signature_piece, print_class_decls, usage, help,
3730         java_no_argument, version, add_namelet, print_namelet): Add static
3731         prototype.
3732         (print_base_classname, utf8_cmp, cxx_keyword_subst,
3733         name_is_method_p): Constify a char*.
3734         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
3735         Provide a final else clause in an if-else-if.
3736         (print_field_info): Add missing final arg in function call to
3737         `print_field_name'.
3738         (print_method_info, decompile_method, decode_signature_piece,
3739         print_c_decl, print_full_cxx_name, print_stub,
3740         print_mangled_classname, super_class_name, print_include,
3741         add_namelet, add_class_decl, print_class_decls, process_file,
3742         help): Constify a char*.
3743
3744         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
3745         push_int_const, find_constant_wide, find_constant_index,
3746         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
3747         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
3748         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
3749         emit_if, emit_goto, emit_jsr, call_cleanups,
3750         make_class_file_name): Add static prototypes.
3751         (generate_bytecode_return, generate_bytecode_insns): Pass a
3752         NULL_PTR, not a NULL_TREE.
3753
3754         * jv-scan.c: Include "jcf.h".
3755         (main): Declare using DEFUN macro.
3756
3757         * jvspec.c (find_spec_file, lang_specific_pre_link,
3758         lang_specific_driver): Add prototypes.
3759         (find_spec_file): Constify a char*.
3760
3761         * keyword.gperf (hash, java_keyword): Add prototypes.
3762
3763         * lang.c (lang_print_error): Add static prototype.
3764         (lang_init): Prefer memcpy over bcopy to avoid casts.
3765
3766         * lex.c (yylex): Add static prototype.
3767
3768         * parse-scan.y: Include "lex.c" earlier.
3769
3770         * parse.h: Remove redundant declaration for `yylex'.
3771
3772         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
3773         labeled_block_contains_loop_p): Add static prototypes.
3774         (not_accessible_p): Make static to match prototype.
3775
3776         * verify.c (start_pc_cmp): Don't needlessly cast away const.
3777
3778 Sun Aug 22 11:07:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3779
3780         * parse.y (check_method_redefinition): Changed leading comment.
3781         (check_abstract_method_definitions): New function.
3782         (java_check_abstract_method_definitions): New function.
3783         (java_check_regular_methods): Call it.
3784         (verify_constructor_super): Fixed indentation.
3785         (lookup_method_invoke): Likewise.
3786
3787 Thu Aug 19 10:26:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3788
3789         * parse.y (method_header): Return a null pointer if the current
3790         class node is null.
3791         (finish_method_declaration): Return if the current function decl
3792         is null.
3793         (source_start_java_method): Likewise.
3794         (java_method_add_stmt): Likewise.
3795
3796 Wed Aug 18 13:17:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3797
3798         * class.c (emit_register_class): Removed unnecessary call to
3799         start_sequence.
3800         * parse.y (labeled_block_contains_loop_p): Removed unused local
3801         variable.
3802
3803 Tue Aug 17 22:51:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3804
3805         * parse.y (java_refold): Added prototype.
3806
3807 Tue Aug 17 21:48:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3808
3809         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
3810         (java_stabilize_reference): Removed unnecessary `else'.
3811         (java_complete_lhs): Set flag to remember boolean. Call
3812         java_refold. Added comments.
3813         (java_decl_equiv): New function.
3814         (binop_compound_p): Likewise.
3815         (java_refold): Likewise.
3816         (patch_unaryop): Striped static field access assigned to decl and
3817         op. Changed promotion scheme for ++/-- operators.
3818         (search_loop): New function.
3819         (labeled_block_contains_loop_p): Likewise.
3820         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
3821         comment.
3822         (patch_bc_statement): Call search_loop. Fixed comment.
3823
3824 1999-08-14  Anthony Green  <green@cygnus.com>
3825
3826         * expr.c (java_lang_expand_expr): Mark static array data as
3827         referenced.
3828
3829 Tue Aug 10 00:28:31 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3830
3831         * jvgenmain.c (main): NUL-terminate name_obstack.
3832
3833 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3834
3835         * check-init.c (check_bool2_init, done_alternative): Add static
3836         prototypes.
3837
3838         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
3839         (add_method, build_utf8_ref, build_class_ref,
3840         append_gpp_mangled_type, layout_class_method): Constify a char*.
3841
3842         * decl.c (push_promoted_type, make_binding_level): Add static
3843         prototypes.
3844         (push_promoted_type, pushdecl): Constify a char*.
3845
3846         * except.c (find_handler_in_range, link_handler,
3847         check_start_handlers): Add static prototypes.
3848
3849         * expr.c (process_jvm_instruction): Constify a char*.
3850
3851         * gjavah.c (main): Constify a char*.
3852
3853         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
3854         Constify a char*.
3855
3856         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
3857         static prototypes.
3858         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
3859         munge, print_ents): Constify a char*.
3860
3861         * jcf-dump.c (disassemble_method): Constify a char*.
3862         (print_constant_pool, print_exception_table): Add static prototypes.
3863         (print_constant, print_exception_table, main, disassemble_method):
3864         Constify a char*.
3865
3866         * jcf-io.c (find_classfile, find_class): Likewise.
3867
3868         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
3869         (set_source_filename, predefined_filename_p): Add static prototypes.
3870         (set_source_filename, get_constant, get_class_constant,
3871         find_in_current_zip): Constify a char*.
3872
3873         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
3874         static prototypes.
3875         (add_entry, add_path, jcf_path_classpath_arg,
3876         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
3877
3878         * jcf-reader.c (get_attribute, jcf_parse_preamble,
3879         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
3880         jcf_parse_one_method, jcf_parse_methods,
3881         jcf_parse_final_attributes): Add static prototypes.
3882         (get_attribute): Constify a char*.
3883
3884         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
3885         jcf_dependency_add_target, jcf_path_classpath_arg,
3886         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
3887
3888         * jv-scan.c (main): Constify a char*.
3889         (gcc_obstack_init): Add prototype arguments.
3890
3891         * jvgenmain.c (gcc_obstack_init): Likewise.
3892         (main): Constify a char*.
3893
3894         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
3895         static prototypes.
3896         (put_decl_string, lang_print_error): Constify a char*.
3897         (lang_init): Remove redundant extern prototype.
3898
3899         * mangle.c (emit_unicode_mangled_name): Constify a char*.
3900
3901         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
3902         Add static prototypes.
3903         (get_type_from_signature): Constify a char*.
3904
3905         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
3906         Add static prototypes.
3907         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
3908         (verify_jvm_instructions): Constify a char*.
3909
3910         * xref.c (xref_flag_value): Likewise.
3911
3912         * xref.h (xref_flag_value): Likewise.
3913
3914         * zextract.c (makeword, makelong): Add static prototypes.
3915         (makeword, makelong): Constify a uch*.
3916
3917 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3918
3919         * lang.c (java_dummy_print): Constify a char*.
3920         (lang_print_error): Likewise.
3921         (lang_init): Remove redundant prototype for `print_error_function'.
3922         (lang_init_source): Likewise.
3923         (lang_identify): Constify a char*.
3924
3925 1999-08-09  Tom Tromey  <tromey@cygnus.com>
3926
3927         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
3928         (WORDS_TO_LONG): Likewise.
3929         (WORDS_TO_DOUBLE): Likewise.
3930
3931 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3932
3933         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
3934
3935         * expr.c (java_stack_pop, java_array_data_offset,
3936         build_java_throw_out_of_bounds_exception, case_identity,
3937         build_java_check_indexed_type): Add static prototypes.
3938         (linenumber_table, expand_invoke, expand_java_field_op,
3939         build_primtype_type_ref, expand_byte_code): Constify a char*.
3940
3941         * java-tree.h (build_primtype_type_ref, linenumber_table):
3942         Constify a char*.
3943         (java_lang_expand_expr): Add prototype.
3944
3945         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
3946         `java_lang_expand_expr'.
3947
3948         * lex.c (java_lex_error): Constify a char*.
3949         (java_get_unicode, java_read_char, java_allocate_new_line,
3950         java_unget_unicode, java_sneak_unicode): Prototype.
3951
3952         * parse-scan.y (current_class, package_name, method_declarator,
3953         report_class_declaration, yyerror): Constify a char*.
3954