* zextract.c (find_zip_file_start): New function.
(read_zip_archive): Use it.
+2000-04-25 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
+
Mon Apr 24 14:59:36 2000 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (end_class_declaration): Reset the interface number
(patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
the `==' and `!=' operators.
+2000-04-05 Tom Tromey <tromey@cygnus.com>
+
+ Fix for PR gcj/2:
+ * expr.c (expand_invoke): Generate check to see if object pointer
+ is null in nonvirtual invocation case.
+ * java-tree.h (soft_nullpointer_node): Declare.
+ * decl.c (soft_nullpointer_node): New global.
+ (init_decl_processing): Initialize soft_nullpointer_node.
+ * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
+ or `private' methods.
+ (patch_invoke): Handle INVOKE_NONVIRTUAL case.
+
2000-04-05 Tom Tromey <tromey@cygnus.com>
Fix for PR gcj/140:
&& TREE_TYPE (current_function_decl)
&& TREE_TYPE (TREE_TYPE (current_function_decl)) == void_type_node)
method_body = build1 (RETURN_EXPR, void_type_node, NULL);
-
+
BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)) = method_body;
maybe_absorb_scoping_blocks ();
/* Exit function's body */
JDEP_WFL (new) = wfl;
JDEP_CHAIN (new) = NULL;
JDEP_MISC (new) = NULL_TREE;
- if ((kind == JDEP_SUPER || kind == JDEP_INTERFACE)
+ /* For some dependencies, set the enclosing class of the current
+ class to be the enclosing context */
+ if ((kind == JDEP_SUPER || kind == JDEP_INTERFACE || kind == JDEP_ANONYMOUS)
&& GET_ENCLOSING_CPC ())
JDEP_ENCLOSING (new) = TREE_VALUE (GET_ENCLOSING_CPC ());
else
/* First, do the ordinary methods. */
for (decl = first_decl; decl; decl = TREE_CHAIN (decl))
{
- /* Skip abstract or native methods */
- if (METHOD_ABSTRACT (decl) || METHOD_NATIVE (decl)
+ /* Skip abstract or native methods -- but do handle native
+ methods when generating JNI stubs. */
+ if (METHOD_ABSTRACT (decl)
+ || (! flag_jni && METHOD_NATIVE (decl))
|| DECL_CONSTRUCTOR_P (decl) || DECL_CLINIT_P (decl))
continue;
+
+ if (METHOD_NATIVE (decl))
+ {
+ tree body = build_jni_stub (decl);
+ BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (decl)) = body;
+ }
+
java_complete_expand_method (decl);
}
{
block_body = java_complete_tree (block_body);
- if (!flag_emit_xref)
+ if (! flag_emit_xref && ! METHOD_NATIVE (mdecl))
check_for_initialization (block_body);
ctxp->explicit_constructor_p = 0;
}
+
BLOCK_EXPR_BODY (fbody) = block_body;
/* If we saw a return but couldn't evaluate it properly, we'll