OSDN Git Service

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