mirror of git://gcc.gnu.org/git/gcc.git
java-tree.h (throw_node): Define as a single member of java_global_trees instead of a separate array.
* java-tree.h (throw_node): Define as a single member of
java_global_trees instead of a separate array.
(JTI_THROW_NODE): New.
* decl.c (throw_node): Don't declare.
(init_decl_processing): Init a scalar throw_node.
Don't register it for gc.
* check-init.c (check_init): Reference scalar throw_node.
* expr.c (build_java_athrow): Likewise.
* jcf-write.c (generate_bytecode_insns): Likewise.
* parse.h (BUILD_THROW): Likewise.
From-SVN: r40922
This commit is contained in:
parent
da7da8f977
commit
ce1c98ea45
|
|
@ -1,3 +1,16 @@
|
||||||
|
2001-03-28 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* java-tree.h (throw_node): Define as a single member of
|
||||||
|
java_global_trees instead of a separate array.
|
||||||
|
(JTI_THROW_NODE): New.
|
||||||
|
* decl.c (throw_node): Don't declare.
|
||||||
|
(init_decl_processing): Init a scalar throw_node.
|
||||||
|
Don't register it for gc.
|
||||||
|
* check-init.c (check_init): Reference scalar throw_node.
|
||||||
|
* expr.c (build_java_athrow): Likewise.
|
||||||
|
* jcf-write.c (generate_bytecode_insns): Likewise.
|
||||||
|
* parse.h (BUILD_THROW): Likewise.
|
||||||
|
|
||||||
2001-03-28 Richard Henderson <rth@redhat.com>
|
2001-03-28 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* decl.c (end_java_method): Do not save and restore
|
* decl.c (end_java_method): Do not save and restore
|
||||||
|
|
|
||||||
|
|
@ -694,8 +694,7 @@ check_init (exp, before)
|
||||||
|
|
||||||
for ( ; x != NULL_TREE; x = TREE_CHAIN (x))
|
for ( ; x != NULL_TREE; x = TREE_CHAIN (x))
|
||||||
check_init (TREE_VALUE (x), before);
|
check_init (TREE_VALUE (x), before);
|
||||||
if (func == throw_node[0]
|
if (func == throw_node)
|
||||||
|| func == throw_node[1])
|
|
||||||
goto never_continues;
|
goto never_continues;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -72,8 +72,6 @@ tree decl_map;
|
||||||
|
|
||||||
static tree pending_local_decls = NULL_TREE;
|
static tree pending_local_decls = NULL_TREE;
|
||||||
|
|
||||||
tree throw_node [2];
|
|
||||||
|
|
||||||
/* Push a local variable or stack slot into the decl_map,
|
/* Push a local variable or stack slot into the decl_map,
|
||||||
and assign it an rtl. */
|
and assign it an rtl. */
|
||||||
|
|
||||||
|
|
@ -727,18 +725,13 @@ init_decl_processing ()
|
||||||
t),
|
t),
|
||||||
0, NOT_BUILT_IN,
|
0, NOT_BUILT_IN,
|
||||||
NULL_PTR);
|
NULL_PTR);
|
||||||
throw_node[0] = builtin_function ("_Jv_Throw",
|
throw_node = builtin_function ((USING_SJLJ_EXCEPTIONS
|
||||||
|
? "_Jv_Throw" : "_Jv_Sjlj_Throw"),
|
||||||
build_function_type (ptr_type_node, t),
|
build_function_type (ptr_type_node, t),
|
||||||
0, NOT_BUILT_IN, NULL_PTR);
|
0, NOT_BUILT_IN, NULL_PTR);
|
||||||
/* Mark throw_nodes as `noreturn' functions with side effects. */
|
/* Mark throw_nodes as `noreturn' functions with side effects. */
|
||||||
TREE_THIS_VOLATILE (throw_node[0]) = 1;
|
TREE_THIS_VOLATILE (throw_node) = 1;
|
||||||
TREE_SIDE_EFFECTS (throw_node[0]) = 1;
|
TREE_SIDE_EFFECTS (throw_node) = 1;
|
||||||
t = tree_cons (NULL_TREE, ptr_type_node, endlink);
|
|
||||||
throw_node[1] = builtin_function ("_Jv_Sjlj_Throw",
|
|
||||||
build_function_type (ptr_type_node, t),
|
|
||||||
0, NOT_BUILT_IN, NULL_PTR);
|
|
||||||
TREE_THIS_VOLATILE (throw_node[1]) = 1;
|
|
||||||
TREE_SIDE_EFFECTS (throw_node[1]) = 1;
|
|
||||||
t = build_function_type (int_type_node, endlink);
|
t = build_function_type (int_type_node, endlink);
|
||||||
soft_monitorenter_node
|
soft_monitorenter_node
|
||||||
= builtin_function ("_Jv_MonitorEnter", t, 0, NOT_BUILT_IN,
|
= builtin_function ("_Jv_MonitorEnter", t, 0, NOT_BUILT_IN,
|
||||||
|
|
@ -884,8 +877,6 @@ init_decl_processing ()
|
||||||
/* Register nodes with the garbage collector. */
|
/* Register nodes with the garbage collector. */
|
||||||
ggc_add_tree_root (java_global_trees,
|
ggc_add_tree_root (java_global_trees,
|
||||||
sizeof (java_global_trees) / sizeof (tree));
|
sizeof (java_global_trees) / sizeof (tree));
|
||||||
ggc_add_tree_root (throw_node,
|
|
||||||
sizeof (throw_node) / sizeof (tree));
|
|
||||||
ggc_add_tree_root (predef_filenames,
|
ggc_add_tree_root (predef_filenames,
|
||||||
sizeof (predef_filenames) / sizeof (tree));
|
sizeof (predef_filenames) / sizeof (tree));
|
||||||
ggc_add_tree_root (&decl_map, 1);
|
ggc_add_tree_root (&decl_map, 1);
|
||||||
|
|
|
||||||
|
|
@ -600,7 +600,7 @@ build_java_athrow (node)
|
||||||
|
|
||||||
call = build (CALL_EXPR,
|
call = build (CALL_EXPR,
|
||||||
void_type_node,
|
void_type_node,
|
||||||
build_address_of (throw_node[USING_SJLJ_EXCEPTIONS ? 1 : 0]),
|
build_address_of (throw_node),
|
||||||
build_tree_list (NULL_TREE, node),
|
build_tree_list (NULL_TREE, node),
|
||||||
NULL_TREE);
|
NULL_TREE);
|
||||||
TREE_SIDE_EFFECTS (call) = 1;
|
TREE_SIDE_EFFECTS (call) = 1;
|
||||||
|
|
|
||||||
|
|
@ -321,6 +321,7 @@ enum java_tree_index
|
||||||
|
|
||||||
JTI_END_PARAMS_NODE,
|
JTI_END_PARAMS_NODE,
|
||||||
|
|
||||||
|
JTI_THROW_NODE,
|
||||||
JTI_ALLOC_OBJECT_NODE,
|
JTI_ALLOC_OBJECT_NODE,
|
||||||
JTI_SOFT_INSTANCEOF_NODE,
|
JTI_SOFT_INSTANCEOF_NODE,
|
||||||
JTI_SOFT_CHECKCAST_NODE,
|
JTI_SOFT_CHECKCAST_NODE,
|
||||||
|
|
@ -544,6 +545,8 @@ extern tree java_global_trees[JTI_MAX];
|
||||||
java_global_trees[JTI_END_PARAMS_NODE]
|
java_global_trees[JTI_END_PARAMS_NODE]
|
||||||
|
|
||||||
/* References to internal libjava functions we use. */
|
/* References to internal libjava functions we use. */
|
||||||
|
#define throw_node \
|
||||||
|
java_global_trees[JTI_THROW_NODE]
|
||||||
#define alloc_object_node \
|
#define alloc_object_node \
|
||||||
java_global_trees[JTI_ALLOC_OBJECT_NODE]
|
java_global_trees[JTI_ALLOC_OBJECT_NODE]
|
||||||
#define soft_instanceof_node \
|
#define soft_instanceof_node \
|
||||||
|
|
@ -562,7 +565,6 @@ extern tree java_global_trees[JTI_MAX];
|
||||||
java_global_trees[JTI_SOFT_BADARRAYINDEX_NODE]
|
java_global_trees[JTI_SOFT_BADARRAYINDEX_NODE]
|
||||||
#define soft_nullpointer_node \
|
#define soft_nullpointer_node \
|
||||||
java_global_trees[JTI_SOFT_NULLPOINTER_NODE]
|
java_global_trees[JTI_SOFT_NULLPOINTER_NODE]
|
||||||
extern tree throw_node[];
|
|
||||||
#define soft_checkarraystore_node \
|
#define soft_checkarraystore_node \
|
||||||
java_global_trees[JTI_SOFT_CHECKARRAYSTORE_NODE]
|
java_global_trees[JTI_SOFT_CHECKARRAYSTORE_NODE]
|
||||||
#define soft_monitorenter_node \
|
#define soft_monitorenter_node \
|
||||||
|
|
|
||||||
|
|
@ -2513,8 +2513,7 @@ generate_bytecode_insns (exp, target, state)
|
||||||
}
|
}
|
||||||
else if (f == soft_monitorenter_node
|
else if (f == soft_monitorenter_node
|
||||||
|| f == soft_monitorexit_node
|
|| f == soft_monitorexit_node
|
||||||
|| f == throw_node[0]
|
|| f == throw_node)
|
||||||
|| f == throw_node[1])
|
|
||||||
{
|
{
|
||||||
if (f == soft_monitorenter_node)
|
if (f == soft_monitorenter_node)
|
||||||
op = OPCODE_monitorenter;
|
op = OPCODE_monitorenter;
|
||||||
|
|
|
||||||
|
|
@ -673,7 +673,7 @@ typedef struct _jdeplist {
|
||||||
{ \
|
{ \
|
||||||
(WHERE) = \
|
(WHERE) = \
|
||||||
build (CALL_EXPR, void_type_node, \
|
build (CALL_EXPR, void_type_node, \
|
||||||
build_address_of (throw_node[USING_SJLJ_EXCEPTIONS ? 1 : 0]), \
|
build_address_of (throw_node), \
|
||||||
build_tree_list (NULL_TREE, (WHAT)), NULL_TREE); \
|
build_tree_list (NULL_TREE, (WHAT)), NULL_TREE); \
|
||||||
TREE_SIDE_EFFECTS ((WHERE)) = 1; \
|
TREE_SIDE_EFFECTS ((WHERE)) = 1; \
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue