OSDN Git Service

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