diff options
author | Andrew Haley <aph@redhat.com> | 2004-07-21 16:03:43 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2004-07-21 16:03:43 +0000 |
commit | 00150bf9f31d6a0ec576ead73a315f26b1c31749 (patch) | |
tree | 1785e3e0f34d4daf27613e8a698fd2c59ee721f3 /gcc/java/java-tree.h | |
parent | 5d16533a079388246d53311790a4a4b2a16aa6c6 (diff) | |
download | gcc-00150bf9f31d6a0ec576ead73a315f26b1c31749.zip gcc-00150bf9f31d6a0ec576ead73a315f26b1c31749.tar.gz gcc-00150bf9f31d6a0ec576ead73a315f26b1c31749.tar.bz2 |
verify.c (verify_jvm_instructions): Comment change only.
2004-07-20 Andrew Haley <aph@redhat.com>
* verify.c (verify_jvm_instructions): Comment change only.
* typeck.c (build_java_array_type): Add size field to array name.
* java-tree.h (LOCAL_SLOT_P): New.
(update_aliases): Add PC argument.
(pushdecl_function_level): New function.
* java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
MODIFY_EXPR, and SAVE_EXPR.
(java_gimplify_modify_expr): New function.
* expr.c (push_type_0): Call find_stack_slot() to create temporary.
(expand_iinc): Pass PC to update_aliases().
(STORE_INTERNAL): Likewise.
(process_jvm_instruction): Likewise.
* decl.c (base_decl_map): New variable.
(uniq): New variable.
(update_aliases): Rewrite with more thorough checking.
(debug_variable_p): New function.
(push_jvm_slot): Don't initialize local variable. Don't pushdecl.
(check_local_named_variable): Delete whole function.
(initialize_local_variable): New function.
(check_local_unnamed_variable): Add checks and comments.
(find_local_variable): Rewrite.
(java_replace_reference): New function.
(function_binding_level): New variable.
(pushdecl_function_level): New function.
(maybe_pushlevels): Set DECL_LOCAL_END_PC.
(maybe_pushlevels): Call pushdecl() on each of the new decls.
(start_java_method): Reset uniq. Create base_decl_map. Set
function_binding_level.
(end_java_method): Null unused fields to save memory.
From-SVN: r85009
Diffstat (limited to 'gcc/java/java-tree.h')
-rw-r--r-- | gcc/java/java-tree.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 5f33ec5..44a2ed9 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -925,6 +925,8 @@ union lang_tree_node /* True if NODE is a variable that is out of scope. */ #define LOCAL_VAR_OUT_OF_SCOPE_P(NODE) \ (DECL_LANG_SPECIFIC (NODE)->u.v.freed) +#define LOCAL_SLOT_P(NODE) \ + (DECL_LANG_SPECIFIC (NODE)->u.v.local_slot) /* Create a DECL_LANG_SPECIFIC if necessary. */ #define MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC(T) \ if (DECL_LANG_SPECIFIC (T) == NULL) \ @@ -1010,7 +1012,8 @@ struct lang_decl_var GTY(()) tree owner; unsigned int final_iud : 1; /* Final initialized upon declaration */ unsigned int cif : 1; /* True: decl is a class initialization flag */ - unsigned int freed; /* Decl is no longer in scope. */ + unsigned int freed : 1; /* Decl is no longer in scope. */ + unsigned int local_slot : 1; /* Decl is a temporary in the stack frame. */ }; /* This is what 'lang_decl' really points to. */ @@ -1176,7 +1179,7 @@ extern void set_java_signature (tree, tree); extern tree build_static_field_ref (tree); extern tree build_address_of (tree); extern tree find_local_variable (int index, tree type, int pc); -extern void update_aliases (tree decl, int index); +extern void update_aliases (tree decl, int index, int pc); extern tree find_stack_slot (int index, tree type); extern tree build_prim_array_type (tree, HOST_WIDE_INT); extern tree build_java_array_type (tree, HOST_WIDE_INT); @@ -1254,6 +1257,8 @@ extern void java_layout_seen_class_methods (void); extern void check_for_initialization (tree, tree); extern tree pushdecl_top_level (tree); +extern tree pushdecl_function_level (tree); +extern tree java_replace_reference (tree, bool); extern int alloc_class_constant (tree); extern void init_expr_processing (void); extern void push_super_field (tree, tree); |