#include "config.h"#include "system.h"#include "tree.h"#include "real.h"#include "rtl.h"#include "flags.h"#include "expr.h"#include "java-tree.h"#include "javaop.h"#include "java-opcodes.h"#include "jcf.h"#include "java-except.h"#include "parse.h"#include "toplev.h"#include "except.h"#include "ggc.h"#include "javaop.def"

Go to the source code of this file.
Defines | |
| #define | BCODE byte_ops |
| #define | BYTE_type_node byte_type_node |
| #define | SHORT_type_node short_type_node |
| #define | INT_type_node int_type_node |
| #define | LONG_type_node long_type_node |
| #define | CHAR_type_node char_type_node |
| #define | PTR_type_node ptr_type_node |
| #define | FLOAT_type_node float_type_node |
| #define | DOUBLE_type_node double_type_node |
| #define | VOID_type_node void_type_node |
| #define | CONST_INDEX_1 (saw_index = 1, IMMEDIATE_u1) |
| #define | CONST_INDEX_2 (saw_index = 1, IMMEDIATE_u2) |
| #define | VAR_INDEX_1 (saw_index = 1, IMMEDIATE_u1) |
| #define | VAR_INDEX_2 (saw_index = 1, IMMEDIATE_u2) |
| #define | CHECK_PC_IN_RANGE(PC) ((void)1) |
| #define | JAVAOP(OPNAME, OPCODE, OPKIND, OPERAND_TYPE, OPERAND_VALUE) |
| #define | NOTE_LABEL(PC) note_label(oldpc, PC) |
| #define | PRE_PUSHC(OPERAND_TYPE, OPERAND_VALUE) (void)(OPERAND_VALUE); |
| #define | PRE_LOAD(OPERAND_TYPE, OPERAND_VALUE) (void)(OPERAND_VALUE); |
| #define | PRE_STORE(OPERAND_TYPE, OPERAND_VALUE) (void)(OPERAND_VALUE); |
| #define | PRE_STACK(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_UNOP(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_BINOP(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_CONVERT(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_CONVERT2(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_SPECIAL(OPERAND_TYPE, INSTRUCTION) PRE_SPECIAL_##INSTRUCTION(OPERAND_TYPE) |
| #define | PRE_SPECIAL_IINC(OPERAND_TYPE) ((void) IMMEDIATE_u1, (void) IMMEDIATE_s1) |
| #define | PRE_SPECIAL_ENTER(IGNORE) |
| #define | PRE_SPECIAL_EXIT(IGNORE) |
| #define | PRE_SPECIAL_THROW(IGNORE) |
| #define | PRE_SPECIAL_BREAK(IGNORE) |
| #define | PRE_SPECIAL_WIDE(IGNORE) |
| #define | PRE_IMPL(IGNORE1, IGNORE2) |
| #define | PRE_MONITOR(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_RETURN(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_ARRAY(OPERAND_TYPE, SUBOP) PRE_ARRAY_##SUBOP(OPERAND_TYPE) |
| #define | PRE_ARRAY_LOAD(TYPE) |
| #define | PRE_ARRAY_STORE(TYPE) |
| #define | PRE_ARRAY_LENGTH(TYPE) |
| #define | PRE_ARRAY_NEW(TYPE) PRE_ARRAY_NEW_##TYPE |
| #define | PRE_ARRAY_NEW_NUM ((void) IMMEDIATE_u1) |
| #define | PRE_ARRAY_NEW_PTR ((void) IMMEDIATE_u2) |
| #define | PRE_ARRAY_NEW_MULTI ((void) IMMEDIATE_u2, (void) IMMEDIATE_u1) |
| #define | PRE_TEST(OPERAND_TYPE, OPERAND_VALUE) NOTE_LABEL (oldpc+IMMEDIATE_s2) |
| #define | PRE_COND(OPERAND_TYPE, OPERAND_VALUE) NOTE_LABEL (oldpc+IMMEDIATE_s2) |
| #define | PRE_BRANCH(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_JSR(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PRE_RET(OPERAND_TYPE, OPERAND_VALUE) (void)(OPERAND_VALUE) |
| #define | PRE_SWITCH(OPERAND_TYPE, TABLE_OR_LOOKUP) PC = (PC + 3) / 4 * 4; PRE_##TABLE_OR_LOOKUP##_SWITCH |
| #define | PRE_LOOKUP_SWITCH |
| #define | PRE_TABLE_SWITCH |
| #define | PRE_FIELD(MAYBE_STATIC, PUT_OR_GET) (void)(IMMEDIATE_u2); |
| #define | PRE_OBJECT(MAYBE_STATIC, PUT_OR_GET) (void)(IMMEDIATE_u2); |
| #define | PRE_INVOKE(MAYBE_STATIC, IS_INTERFACE) |
| #define | JAVAOP(OPNAME, OPCODE, OPKIND, OPERAND_TYPE, OPERAND_VALUE) |
| #define | RET(OPERAND_TYPE, OPERAND_VALUE) |
| #define | JSR(OPERAND_TYPE, OPERAND_VALUE) |
| #define | PUSHC(OPERAND_TYPE, OPERAND_VALUE) |
| #define | LOAD_INTERNAL(OPTYPE, OPVALUE) expand_load_internal (OPVALUE, type_map[OPVALUE], oldpc); |
| #define | LOAD(OPERAND_TYPE, OPERAND_VALUE) |
| #define | RETURN(OPERAND_TYPE, OPERAND_VALUE) expand_java_return (OPERAND_TYPE##_type_node) |
| #define | REM_EXPR TRUNC_MOD_EXPR |
| #define | BINOP(OPERAND_TYPE, OPERAND_VALUE) expand_java_binop (OPERAND_TYPE##_type_node, OPERAND_VALUE##_EXPR) |
| #define | FIELD(IS_STATIC, IS_PUT) expand_java_field_op (IS_STATIC, IS_PUT, IMMEDIATE_u2) |
| #define | TEST(OPERAND_TYPE, CONDITION) expand_test (CONDITION##_EXPR, OPERAND_TYPE##_type_node, oldpc+IMMEDIATE_s2) |
| #define | COND(OPERAND_TYPE, CONDITION) expand_cond (CONDITION##_EXPR, OPERAND_TYPE##_type_node, oldpc+IMMEDIATE_s2) |
| #define | BRANCH(OPERAND_TYPE, OPERAND_VALUE) BRANCH_##OPERAND_TYPE (OPERAND_VALUE) |
| #define | BRANCH_GOTO(OPERAND_VALUE) expand_java_goto (oldpc + OPERAND_VALUE) |
| #define | BRANCH_CALL(OPERAND_VALUE) expand_java_call (oldpc + OPERAND_VALUE, oldpc) |
| #define | NOT_IMPL(OPERAND_TYPE, OPERAND_VALUE) |
| #define | NOT_IMPL1(OPERAND_VALUE) |
| #define | BRANCH_RETURN(OPERAND_VALUE) NOT_IMPL1(OPERAND_VALUE) |
| #define | STACK(SUBOP, COUNT) STACK_##SUBOP (COUNT) |
| #define | STACK_POP(COUNT) java_stack_pop (COUNT) |
| #define | STACK_SWAP(COUNT) java_stack_swap() |
| #define | STACK_DUP(COUNT) java_stack_dup (COUNT, 0) |
| #define | STACK_DUPx1(COUNT) java_stack_dup (COUNT, 1) |
| #define | STACK_DUPx2(COUNT) java_stack_dup (COUNT, 2) |
| #define | SWITCH(OPERAND_TYPE, TABLE_OR_LOOKUP) PC = (PC + 3) / 4 * 4; TABLE_OR_LOOKUP##_SWITCH |
| #define | LOOKUP_SWITCH |
| #define | TABLE_SWITCH |
| #define | INVOKE(MAYBE_STATIC, IS_INTERFACE) |
| #define | OBJECT(TYPE, OP) expand_java_##OP (get_class_constant (current_jcf, IMMEDIATE_u2)) |
| #define | ARRAY(OPERAND_TYPE, SUBOP) ARRAY_##SUBOP(OPERAND_TYPE) |
| #define | ARRAY_LOAD(OPERAND_TYPE) |
| #define | ARRAY_STORE(OPERAND_TYPE) |
| #define | ARRAY_LENGTH(OPERAND_TYPE) expand_java_array_length(); |
| #define | ARRAY_NEW(OPERAND_TYPE) ARRAY_NEW_##OPERAND_TYPE() |
| #define | ARRAY_NEW_PTR() |
| #define | ARRAY_NEW_NUM() |
| #define | ARRAY_NEW_MULTI() |
| #define | UNOP(OPERAND_TYPE, OPERAND_VALUE) |
| #define | CONVERT2(FROM_TYPE, TO_TYPE) |
| #define | CONVERT(FROM_TYPE, TO_TYPE) |
| #define | STORE_INTERNAL(OPTYPE, OPVALUE) |
| #define | STORE(OPERAND_TYPE, OPERAND_VALUE) |
| #define | SPECIAL(OPERAND_TYPE, INSTRUCTION) SPECIAL_##INSTRUCTION(OPERAND_TYPE) |
| #define | SPECIAL_ENTER(IGNORED) MONITOR_OPERATION (soft_monitorenter_node) |
| #define | SPECIAL_EXIT(IGNORED) MONITOR_OPERATION (soft_monitorexit_node) |
| #define | MONITOR_OPERATION(call) |
| #define | SPECIAL_IINC(IGNORED) |
| #define | SPECIAL_WIDE(IGNORED) |
| #define | SPECIAL_THROW(IGNORED) build_java_athrow (pop_value (throwable_type_node)) |
| #define | SPECIAL_BREAK NOT_IMPL1 |
| #define | IMPL NOT_IMPL |
Functions/Subroutines | |
| static void flush_quick_stack | PARAMS ((void)) |
| static void push_value | PARAMS ((tree)) |
| static void java_stack_dup | PARAMS ((int, int)) |
| static void expand_java_multianewarray | PARAMS ((tree, int)) |
| static tree build_java_monitor | PARAMS ((tree, tree)) |
| static void expand_java_pushc | PARAMS ((int, tree)) |
| static void expand_load_internal | PARAMS ((int, tree, int)) |
| static void expand_iinc | PARAMS ((unsigned int, int, int)) |
| static void expand_java_binop | PARAMS ((tree, enum tree_code)) |
| static void expand_compare | PARAMS ((enum tree_code, tree, tree, int)) |
| static void expand_test | PARAMS ((enum tree_code, tree, int)) |
| static void expand_java_goto | PARAMS ((int)) |
| static void expand_invoke | PARAMS ((int, int, int)) |
| static void java_push_constant_from_pool | PARAMS ((struct JCF *, int)) |
| static unsigned char peek_opcode_at_pc | PARAMS ((struct JCF *, int, int)) |
| static bool emit_init_test_initialization | PARAMS ((struct hash_entry *, PTR ptr)) |
| void | init_expr_processing () |
| tree | truthvalue_conversion (tree expr) |
| static void | flush_quick_stack () |
| int | push_type_0 (tree type) |
| void | push_type (tree type) |
| static void | push_value (tree value) |
| tree | pop_type_0 (tree type, char **messagep) |
| tree | pop_type (tree type) |
| int | can_widen_reference_to (tree source_type, tree target_type) |
| static tree | pop_value (tree type) |
| static void | java_stack_pop (int count) |
| static void | java_stack_swap () |
| static void | java_stack_dup (int size, int offset) |
| static void | build_java_athrow (tree node) |
| static void | build_java_jsr (int target_pc, int return_pc) |
| static void | build_java_ret (tree location) |
| tree | decode_newarray_type (int atype) |
| int | encode_newarray_type (tree type) |
| static tree | build_java_throw_out_of_bounds_exception (tree index) |
| tree | build_java_array_length_access (tree node) |
| tree | java_check_reference (tree expr, int check) |
| tree | build_java_indirect_ref (tree type, tree expr, int check) |
| tree | build_java_arrayaccess (tree array, tree type, tree index) |
| tree | build_java_arraystore_check (tree array, tree object) |
| static tree | build_java_check_indexed_type (tree array_node, tree indexed_type) |
| tree | build_newarray (int atype_value, tree length) |
| tree | build_anewarray (tree class_type, tree length) |
| tree | build_new_array (tree type, tree length) |
| static void | expand_java_multianewarray (tree class_type, int ndim) |
| static void | expand_java_arraystore (tree rhs_type_node) |
| static void | expand_java_arrayload (tree lhs_type_node) |
| static void | expand_java_array_length () |
| static tree | build_java_monitor (tree call, tree object) |
| static void | expand_java_pushc (int ival, tree type) |
| static void | expand_java_return (tree type) |
| static void | expand_load_internal (int index, tree type, int pc) |
| tree | build_address_of (tree value) |
| bool | class_has_finalize_method (tree type) |
| static void | expand_java_NEW (tree type) |
| tree | build_get_class (tree value) |
| tree | build_instanceof (tree value, tree type) |
| static void | expand_java_INSTANCEOF (tree type) |
| static void | expand_java_CHECKCAST (tree type) |
| static void | expand_iinc (unsigned int local_var_index, int ival, int pc) |
| tree | build_java_soft_divmod (enum tree_code op, tree type, tree op1, tree op2) |
| tree | build_java_binop (enum tree_code op, tree type, tree arg1, tree arg2) |
| static void | expand_java_binop (tree type, enum tree_code op) |
| tree | lookup_field (tree *typep, tree name) |
| tree | build_field_ref (tree self_value, tree self_class, tree name) |
| tree | lookup_label (int pc) |
| tree | generate_name () |
| tree | create_label_decl (tree name) |
| static void | note_label (current_pc, int current_pc target_pc) |
| static void | expand_compare (enum tree_code condition, tree value1, tree value2, int target_pc) |
| static void | expand_test (enum tree_code condition, tree type, int target_pc) |
| static void | expand_cond (enum tree_code condition, tree type, int target_pc) |
| static void | expand_java_goto (int target_pc) |
| static tree | pop_arguments (tree arg_types) |
| tree | build_class_init (tree clas, tree expr) |
| tree | build_known_method_ref (tree method, method_type, tree self_type, method_signature, arg_list) |
| tree | invoke_build_dtable (int is_invoke_interface, tree arg_list) |
| int | get_offset_table_index (tree method) |
| tree | build_invokevirtual (tree dtable, tree method) |
| tree | build_invokeinterface (tree dtable, tree method) |
| static void | expand_invoke (int opcode, int method_ref_index, nargs) |
| tree | build_jni_stub (tree method) |
| static void | expand_java_field_op (int is_static, int is_putting, int field_ref_index) |
| void | load_type_state (tree label) |
| static tree | case_identity (t, tree v) |
| static tree | get_primitive_array_vtable (tree elt) |
| struct rtx_def * | java_lang_expand_expr (tree exp, rtx target, enum machine_mode tmode, enum expand_modifier modifier) |
| void | note_instructions (JCF *jcf, tree method) |
| void | expand_byte_code (JCF *jcf, tree method) |
| static void | java_push_constant_from_pool (JCF *jcf, int index) |
| int | process_jvm_instruction (int PC, const unsigned char *byte_ops, length) |
| static unsigned char | peek_opcode_at_pc (JCF *jcf, int code_offset, int pc) |
| int | maybe_adjust_start_pc (struct JCF *jcf, int code_offset, int start_pc, int slot) |
| tree | force_evaluation_order (tree node) |
| static bool | emit_init_test_initialization (struct hash_entry *entry, key) |
Variables | |
| static tree | operand_type [59] |
| struct obstack | permanent_obstack |
| static tree | methods_ident = NULL_TREE |
| static tree | ncode_ident = NULL_TREE |
| tree | dtable_ident = NULL_TREE |
| int | always_initialize_class_p |
| static tree | quick_stack = NULL_TREE |
| static tree | tree_list_free_list = NULL_TREE |
| int | stack_pointer |
| const unsigned char * | linenumber_table |
| int | linenumber_count |
| char * | instruction_bits |
| #define ARRAY | ( | OPERAND_TYPE, | |||
| SUBOP | ) | ARRAY_##SUBOP(OPERAND_TYPE) |
| #define ARRAY_LENGTH | ( | OPERAND_TYPE | ) | expand_java_array_length(); |
| #define ARRAY_LOAD | ( | OPERAND_TYPE | ) |
Value:
{ \
expand_java_arrayload( OPERAND_TYPE##_type_node ); \
}
| #define ARRAY_NEW | ( | OPERAND_TYPE | ) | ARRAY_NEW_##OPERAND_TYPE() |
| #define ARRAY_NEW_MULTI | ( | ) |
Value:
{ \
tree class = get_class_constant (current_jcf, IMMEDIATE_u2 ); \
int ndims = IMMEDIATE_u1; \
expand_java_multianewarray( class, ndims ); \
}
| #define ARRAY_NEW_NUM | ( | ) |
Value:
{ \
int atype = IMMEDIATE_u1; \
push_value (build_newarray (atype, pop_value (int_type_node)));\
}
| #define ARRAY_NEW_PTR | ( | ) |
Value:
| #define ARRAY_STORE | ( | OPERAND_TYPE | ) |
Value:
{ \
expand_java_arraystore( OPERAND_TYPE##_type_node ); \
}
| #define BCODE byte_ops |
| #define BINOP | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | expand_java_binop (OPERAND_TYPE##_type_node, OPERAND_VALUE##_EXPR) |
| #define BRANCH | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | BRANCH_##OPERAND_TYPE (OPERAND_VALUE) |
| #define BRANCH_CALL | ( | OPERAND_VALUE | ) | expand_java_call (oldpc + OPERAND_VALUE, oldpc) |
| #define BRANCH_GOTO | ( | OPERAND_VALUE | ) | expand_java_goto (oldpc + OPERAND_VALUE) |
| #define BRANCH_RETURN | ( | OPERAND_VALUE | ) | NOT_IMPL1(OPERAND_VALUE) |
| #define BYTE_type_node byte_type_node |
| #define CHAR_type_node char_type_node |
| #define COND | ( | OPERAND_TYPE, | |||
| CONDITION | ) | expand_cond (CONDITION##_EXPR, OPERAND_TYPE##_type_node, oldpc+IMMEDIATE_s2) |
| #define CONST_INDEX_1 (saw_index = 1, IMMEDIATE_u1) |
| #define CONST_INDEX_2 (saw_index = 1, IMMEDIATE_u2) |
| #define CONVERT | ( | FROM_TYPE, | |||
| TO_TYPE | ) |
Value:
{ \
push_value (convert (TO_TYPE##_type_node, \
pop_value (FROM_TYPE##_type_node))); \
}
| #define CONVERT2 | ( | FROM_TYPE, | |||
| TO_TYPE | ) |
Value:
{ \
push_value (build1 (NOP_EXPR, int_type_node, \
(convert (TO_TYPE##_type_node, \
pop_value (FROM_TYPE##_type_node))))); \
}
| #define DOUBLE_type_node double_type_node |
| #define FIELD | ( | IS_STATIC, | |||
| IS_PUT | ) | expand_java_field_op (IS_STATIC, IS_PUT, IMMEDIATE_u2) |
| #define FLOAT_type_node float_type_node |
| #define IMPL NOT_IMPL |
| #define INT_type_node int_type_node |
| #define INVOKE | ( | MAYBE_STATIC, | |||
| IS_INTERFACE | ) |
Value:
{ int opcode = byte_ops[PC-1]; \
int method_ref_index = IMMEDIATE_u2; \
int nargs; \
if (IS_INTERFACE) { nargs = IMMEDIATE_u1; (void) IMMEDIATE_u1; } \
else nargs = -1; \
expand_invoke (opcode, method_ref_index, nargs); \
}
| #define JAVAOP | ( | OPNAME, | |||
| OPCODE, | |||||
| OPKIND, | |||||
| OPERAND_TYPE, | |||||
| OPERAND_VALUE | ) |
Value:
case OPCODE: \ opname = #OPNAME; \ OPKIND(OPERAND_TYPE, OPERAND_VALUE); \ break;
| #define JAVAOP | ( | OPNAME, | |||
| OPCODE, | |||||
| OPKIND, | |||||
| OPERAND_TYPE, | |||||
| OPERAND_VALUE | ) |
Value:
case OPCODE: \ PRE_##OPKIND(OPERAND_TYPE, OPERAND_VALUE); \ break;
| #define JSR | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
{ \
/* OPERAND_VALUE may have side-effects on PC */ \
int opvalue = OPERAND_VALUE; \
build_java_jsr (oldpc + opvalue, PC); \
}
| #define LOAD | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
{ \
/* have to do this since OPERAND_VALUE may have side-effects */ \
int opvalue = OPERAND_VALUE; \
LOAD_INTERNAL(OPERAND_TYPE##_type_node, opvalue); \
}
| #define LOAD_INTERNAL | ( | OPTYPE, | |||
| OPVALUE | ) | expand_load_internal (OPVALUE, type_map[OPVALUE], oldpc); |
| #define LONG_type_node long_type_node |
| #define LOOKUP_SWITCH |
Value:
{ jint default_offset = IMMEDIATE_s4; jint npairs = IMMEDIATE_s4; \
tree selector = pop_value (INT_type_node); \
tree duplicate, label; \
tree type = TREE_TYPE (selector); \
flush_quick_stack (); \
expand_start_case (0, selector, type, "switch statement");\
while (--npairs >= 0) \
{ \
jint match = IMMEDIATE_s4; jint offset = IMMEDIATE_s4; \
tree value = build_int_2 (match, match < 0 ? -1 : 0); \
TREE_TYPE (value) = type; \
label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); \
pushcase (value, convert, label, &duplicate); \
expand_java_goto (oldpc + offset); \
} \
label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); \
pushcase (NULL_TREE, 0, label, &duplicate); \
expand_java_goto (oldpc + default_offset); \
expand_end_case (selector); \
}
| #define MONITOR_OPERATION | ( | call | ) |
Value:
{ \
tree o = pop_value (ptr_type_node); \
tree c; \
flush_quick_stack (); \
c = build_java_monitor (call, o); \
TREE_SIDE_EFFECTS (c) = 1; \
expand_expr_stmt (c); \
}
| #define NOT_IMPL | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define NOT_IMPL1 | ( | OPERAND_VALUE | ) |
| #define OBJECT | ( | TYPE, | |||
| OP | ) | expand_java_##OP (get_class_constant (current_jcf, IMMEDIATE_u2)) |
| #define PRE_ARRAY | ( | OPERAND_TYPE, | |||
| SUBOP | ) | PRE_ARRAY_##SUBOP(OPERAND_TYPE) |
| #define PRE_ARRAY_LENGTH | ( | TYPE | ) |
| #define PRE_ARRAY_LOAD | ( | TYPE | ) |
| #define PRE_ARRAY_NEW_NUM ((void) IMMEDIATE_u1) |
| #define PRE_ARRAY_NEW_PTR ((void) IMMEDIATE_u2) |
| #define PRE_ARRAY_STORE | ( | TYPE | ) |
| #define PRE_BINOP | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_BRANCH | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
saw_index = 0; INT_temp = (OPERAND_VALUE); \ if (!saw_index) NOTE_LABEL(oldpc + INT_temp);
| #define PRE_COND | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | NOTE_LABEL (oldpc+IMMEDIATE_s2) |
| #define PRE_CONVERT | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_CONVERT2 | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_FIELD | ( | MAYBE_STATIC, | |||
| PUT_OR_GET | ) | (void)(IMMEDIATE_u2); |
| #define PRE_IMPL | ( | IGNORE1, | |||
| IGNORE2 | ) |
| #define PRE_INVOKE | ( | MAYBE_STATIC, | |||
| IS_INTERFACE | ) |
Value:
(void)(IMMEDIATE_u2); \ PC += 2 * IS_INTERFACE /* for invokeinterface */;
| #define PRE_JSR | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
saw_index = 0; INT_temp = (OPERAND_VALUE); \ NOTE_LABEL (PC); \ if (!saw_index) NOTE_LABEL(oldpc + INT_temp);
| #define PRE_LOAD | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | (void)(OPERAND_VALUE); |
| #define PRE_LOOKUP_SWITCH |
Value:
{ jint default_offset = IMMEDIATE_s4; jint npairs = IMMEDIATE_s4; \
NOTE_LABEL (default_offset+oldpc); \
if (npairs >= 0) \
while (--npairs >= 0) { \
jint match ATTRIBUTE_UNUSED = IMMEDIATE_s4; \
jint offset = IMMEDIATE_s4; \
NOTE_LABEL (offset+oldpc); } \
}
| #define PRE_MONITOR | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_OBJECT | ( | MAYBE_STATIC, | |||
| PUT_OR_GET | ) | (void)(IMMEDIATE_u2); |
| #define PRE_PUSHC | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | (void)(OPERAND_VALUE); |
| #define PRE_RET | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | (void)(OPERAND_VALUE) |
| #define PRE_RETURN | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_SPECIAL | ( | OPERAND_TYPE, | |||
| INSTRUCTION | ) | PRE_SPECIAL_##INSTRUCTION(OPERAND_TYPE) |
| #define PRE_SPECIAL_BREAK | ( | IGNORE | ) |
| #define PRE_SPECIAL_ENTER | ( | IGNORE | ) |
| #define PRE_SPECIAL_EXIT | ( | IGNORE | ) |
| #define PRE_SPECIAL_THROW | ( | IGNORE | ) |
| #define PRE_SPECIAL_WIDE | ( | IGNORE | ) |
Value:
{ \
int modified_opcode = IMMEDIATE_u1; \
if (modified_opcode == OPCODE_iinc) \
{ \
(void) IMMEDIATE_u2; /* indexbyte1 and indexbyte2 */ \
(void) IMMEDIATE_s2; /* constbyte1 and constbyte2 */ \
} \
else \
{ \
(void) IMMEDIATE_u2; /* indexbyte1 and indexbyte2 */ \
} \
}
| #define PRE_STACK | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PRE_STORE | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | (void)(OPERAND_VALUE); |
| #define PRE_SWITCH | ( | OPERAND_TYPE, | |||
| TABLE_OR_LOOKUP | ) | PC = (PC + 3) / 4 * 4; PRE_##TABLE_OR_LOOKUP##_SWITCH |
| #define PRE_TABLE_SWITCH |
Value:
{ jint default_offset = IMMEDIATE_s4; \
jint low = IMMEDIATE_s4; jint high = IMMEDIATE_s4; \
NOTE_LABEL (default_offset+oldpc); \
if (low <= high) \
while (low++ <= high) { \
jint offset = IMMEDIATE_s4; \
NOTE_LABEL (offset+oldpc); } \
}
| #define PRE_TEST | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | NOTE_LABEL (oldpc+IMMEDIATE_s2) |
| #define PRE_UNOP | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
| #define PTR_type_node ptr_type_node |
| #define PUSHC | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
{ int saw_index = 0; int ival = (OPERAND_VALUE); \
if (saw_index) java_push_constant_from_pool (current_jcf, ival); \
else expand_java_pushc (ival, OPERAND_TYPE##_type_node); }
| #define REM_EXPR TRUNC_MOD_EXPR |
| #define RET | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
{ \
int saw_index = 0; \
int index = OPERAND_VALUE; \
build_java_ret (find_local_variable (index, ptr_type_node, oldpc)); \
}
| #define RETURN | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) | expand_java_return (OPERAND_TYPE##_type_node) |
Referenced by alpha_handle_trap_shadows(), any_condjump_p(), arc_final_prescan_insn(), arm_final_prescan_insn(), cirrus_reorg(), classify_insn(), compute_defs_uses_and_gen(), condjump_in_parallel_p(), condjump_p(), copy_rtx_and_substitute(), cris_target_asm_function_epilogue(), df_uses_record(), eliminate_regs(), eliminate_regs_1(), elimination_effects(), emit(), expand_builtin_expect_jump(), final_prescan_insn(), final_scan_insn(), find_and_verify_loops(), find_dead_or_set_registers(), fix_crossing_conditional_branches(), follow_jumps(), for_each_insn_in_loop(), frv_function_prologue(), gen_block_redirect(), gen_expand(), gen_split(), get_dest_uid(), gt_ggc_mx_rtx_def(), i960_output_call_insn(), i960_output_function_epilogue(), instantiate_virtual_regs_1(), ix86_pad_returns(), mark_loop_jump(), mostly_false_jump(), print_pattern(), ra_print_rtx(), recog(), recog_11(), recog_38(), recog_4(), recog_6(), recog_9(), redirect_exp_1(), reg_dead_after_loop(), regs_used(), reload_combine(), restore_world_operation(), return_insn_p(), returnjump_p_1(), rtx_needs_barrier(), set_label_offsets(), simplify_set(), split_branches(), and subst_constants().
| #define SHORT_type_node short_type_node |
| #define SPECIAL | ( | OPERAND_TYPE, | |||
| INSTRUCTION | ) | SPECIAL_##INSTRUCTION(OPERAND_TYPE) |
| #define SPECIAL_BREAK NOT_IMPL1 |
| #define SPECIAL_ENTER | ( | IGNORED | ) | MONITOR_OPERATION (soft_monitorenter_node) |
| #define SPECIAL_EXIT | ( | IGNORED | ) | MONITOR_OPERATION (soft_monitorexit_node) |
| #define SPECIAL_IINC | ( | IGNORED | ) |
Value:
{ \
unsigned int local_var_index = IMMEDIATE_u1; \
int ival = IMMEDIATE_s1; \
expand_iinc(local_var_index, ival, oldpc); \
}
| #define SPECIAL_THROW | ( | IGNORED | ) | build_java_athrow (pop_value (throwable_type_node)) |
| #define SPECIAL_WIDE | ( | IGNORED | ) |
| #define STACK_SWAP | ( | COUNT | ) | java_stack_swap() |
| #define STORE | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
{ \
/* have to do this since OPERAND_VALUE may have side-effects */ \
int opvalue = OPERAND_VALUE; \
STORE_INTERNAL(OPERAND_TYPE##_type_node, opvalue); \
}
| #define STORE_INTERNAL | ( | OPTYPE, | |||
| OPVALUE | ) |
Value:
{ \
tree decl, value; \
int var = OPVALUE; \
tree type = OPTYPE; \
value = pop_value (type); \
type = TREE_TYPE (value); \
decl = find_local_variable (var, type, oldpc); \
set_local_type (var, type ); \
expand_assignment (decl, value, 0, 0); \
}
| #define TABLE_SWITCH |
Value:
{ jint default_offset = IMMEDIATE_s4; \
jint low = IMMEDIATE_s4; jint high = IMMEDIATE_s4; \
tree selector = pop_value (INT_type_node); \
tree duplicate, label; \
tree type = TREE_TYPE (selector); \
flush_quick_stack (); \
expand_start_case (0, selector, type, "switch statement");\
for (; low <= high; low++) \
{ \
jint offset = IMMEDIATE_s4; \
tree value = build_int_2 (low, low < 0 ? -1 : 0); \
TREE_TYPE (value) = type; \
label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); \
pushcase (value, convert, label, &duplicate); \
expand_java_goto (oldpc + offset); \
} \
label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); \
pushcase (NULL_TREE, 0, label, &duplicate); \
expand_java_goto (oldpc + default_offset); \
expand_end_case (selector); \
}
| #define TEST | ( | OPERAND_TYPE, | |||
| CONDITION | ) | expand_test (CONDITION##_EXPR, OPERAND_TYPE##_type_node, oldpc+IMMEDIATE_s2) |
| #define UNOP | ( | OPERAND_TYPE, | |||
| OPERAND_VALUE | ) |
Value:
push_value (fold (build1 (NEGATE_EXPR, OPERAND_TYPE##_type_node, \ pop_value (OPERAND_TYPE##_type_node))));
| #define VAR_INDEX_1 (saw_index = 1, IMMEDIATE_u1) |
| #define VAR_INDEX_2 (saw_index = 1, IMMEDIATE_u2) |
| #define VOID_type_node void_type_node |
Definition at line 1177 of file expr.c.
References build1, build_pointer_type(), and TREE_TYPE.
Referenced by build_anewarray(), build_class_init(), build_constants_constructor(), build_instanceof(), build_invokeinterface(), build_java_arraystore_check(), build_java_athrow(), build_java_binop(), build_java_monitor(), build_java_soft_divmod(), build_java_throw_out_of_bounds_exception(), build_jni_stub(), build_newarray(), complete_start_java_method(), expand_java_CHECKCAST(), expand_java_multianewarray(), expand_java_NEW(), get_primitive_array_vtable(), java_check_reference(), and make_field_value().
Definition at line 944 of file expr.c.
References build(), build_address_of(), build_class_ref(), build_java_array_type(), build_tree_list, host_integerp(), null_pointer_node, NULL_TREE, promote_type(), soft_anewarray_node, tree_cons, and tree_low_cst().
Referenced by build_new_array().
Definition at line 1759 of file expr.c.
References boolean_false_node, boolean_true_node, boolean_type_node, build(), build_address_of(), build_class_ref(), build_decl, build_tree_list, current_class, current_function_decl, DECL_BIT_INDEX, DECL_CONTEXT, DECL_FUNCTION_INIT_TEST_CLASS, DECL_FUNCTION_INIT_TEST_TABLE, hash_lookup(), inherits_from_p(), init_test_hash_entry::init_test_decl, integer_zero_node, LOCAL_CLASS_INITIALIZATION_FLAG, MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, NULL, NULL_TREE, soft_initclass_node, STATIC_CLASS_INIT_OPT_P, TREE_SIDE_EFFECTS, TREE_TYPE, TRUE, and void_type_node.
Referenced by expand_java_field_op().
Definition at line 1563 of file expr.c.
References build(), build1, build_java_indirect_ref(), build_static_field_ref(), check, DECL_NAME, DECL_P, error(), error_mark_node, flag_check_references, fold(), IDENTIFIER_POINTER, lookup_field(), NULL_TREE, promote_type(), this_identifier_node, and TREE_TYPE.
Referenced by expand_java_field_op().
Definition at line 1218 of file expr.c.
References build(), build1, build_java_indirect_ref(), class_ptr_type, dtable_ptr_type, dtable_type, flag_check_references, get_identifier(), lookup_field(), and object_type_node.
Referenced by build_instanceof().
Definition at line 1238 of file expr.c.
References boolean_false_node, boolean_true_node, build(), build_address_of(), build_class_ref(), build_get_class(), build_tree_list, CLASS_FINAL, CLASS_INTERFACE, CLASS_LOADED_P, CLASS_P, DECL_P, error_mark_node, inherits_from_p(), load_class(), NULL_TREE, object_type_node, save, save_expr(), soft_instanceof_node, TREE_CODE, tree_cons, TREE_SIDE_EFFECTS, TREE_TYPE, TYPE_ARRAY_P, TYPE_NAME, and TYPE_SIZE.
Referenced by expand_java_INSTANCEOF().
Definition at line 1984 of file expr.c.
References abort, build(), build_address_of(), build_class_ref(), build_int_2, build_java_indirect_ref(), build_tree_list, class_ptr_type, DECL_CONTEXT, dtable_type, flag_check_references, flag_indirect_dispatch, get_identifier(), get_offset_table_index(), i, idx, integer_type_node, interface, layout_class_methods(), lookup_field(), NULL_TREE, otable_decl, ptr_type_node, soft_lookupinterfacemethod_node, TREE_CHAIN, tree_cons, and TYPE_METHODS.
Referenced by expand_invoke().
Definition at line 1938 of file expr.c.
References build(), build1, build_int_2, build_pointer_type(), convert(), DECL_VINDEX, flag_indirect_dispatch, fold(), func, get_offset_table_index(), integer_type_node, nativecode_ptr_type_node, otable_decl, size_binop(), size_int, sizetype, TARGET_VTABLE_USES_DESCRIPTORS, and TYPE_SIZE_UNIT.
Referenced by expand_invoke().
Definition at line 695 of file expr.c.
References abort, build(), build_int_2, build_java_indirect_ref(), flag_check_references, get_identifier(), HOST_WIDE_INT, int_type_node, IS_ARRAY_LENGTH_ACCESS, is_array_type_p(), java_array_type_length(), length, lookup_field(), and TREE_TYPE.
Referenced by build_java_arrayaccess(), and expand_java_array_length().
Definition at line 759 of file expr.c.
References boolean_type_node, build(), build_java_array_length_access(), build_java_indirect_ref(), build_java_throw_out_of_bounds_exception(), convert(), flag_bounds_check, flag_check_references, fold(), get_identifier(), int_type_node, integer_zerop(), len, lookup_field(), node, NULL_TREE, TREE_SIDE_EFFECTS, TREE_TYPE, and unsigned_int_type_node.
Referenced by expand_java_arrayload(), and expand_java_arraystore().
Definition at line 810 of file expr.c.
References abort, build(), build1, build_address_of(), build_tree_list, check, CLASS_FINAL, flag_store_check, is_array_type_p(), NULL_TREE, soft_checkarraystore_node, source, target, TREE_CODE, tree_cons, TREE_OPERAND, TREE_SIDE_EFFECTS, TREE_TYPE, TYPE_ARRAY_P, TYPE_NAME, and void_type_node.
Referenced by expand_java_arraystore().
Definition at line 592 of file expr.c.
References build(), build_address_of(), build_tree_list, call(), expand_expr_stmt(), java_stack_pop(), NULL_TREE, throw_node, TREE_SIDE_EFFECTS, and void_type_node.
Definition at line 1393 of file expr.c.
References boolean_type_node, build(), build_address_of(), build_int_2, build_java_soft_divmod(), build_tree_list, call(), convert(), double_type_node, flag_syntax_only, flag_use_divide_subroutine, fold(), int_type_node, integer_minus_one_node, integer_one_node, integer_zero_node, NULL_TREE, save_expr(), soft_fmod_node, TREE_CODE, tree_cons, TREE_TYPE, TYPE_PRECISION, and unsigned_type().
Referenced by expand_java_binop().
Definition at line 883 of file expr.c.
References abort, boolean_type_node, byte_type_node, is_array_type_p(), promote_type(), ptr_type_node, TREE_TYPE, and TYPE_ARRAY_ELEMENT.
Referenced by expand_java_arrayload(), and expand_java_arraystore().
Definition at line 745 of file expr.c.
References build1, and java_check_reference().
Referenced by build_field_ref(), build_get_class(), build_invokeinterface(), build_java_array_length_access(), build_java_arrayaccess(), invoke_build_dtable(), and java_lang_expand_expr().
| static void build_java_jsr | ( | int | target_pc, | |
| int | return_pc | |||
| ) | [static] |
Definition at line 610 of file expr.c.
References BCODE_VERIFIED, build1, emit_jump(), expand_label(), flush_quick_stack(), fold(), instruction_bits, label_rtx(), load_type_state(), lookup_label(), push_value(), ret, ret_label, return_address_type_node, and where.
Definition at line 1082 of file expr.c.
References build(), build_address_of(), build_tree_list, NULL_TREE, and void_type_node.
Definition at line 1343 of file expr.c.
References abort, build(), build_address_of(), build_tree_list, call(), convert(), int_type_node, long_type_node, NULL, NULL_TREE, soft_idiv_node, soft_irem_node, soft_ldiv_node, soft_lrem_node, and tree_cons.
Referenced by build_java_binop().
Definition at line 681 of file expr.c.
References build(), build_address_of(), build_tree_list, int_type_node, node, NULL_TREE, soft_badarrayindex_node, and TREE_SIDE_EFFECTS.
Referenced by build_java_arrayaccess().
Definition at line 2180 of file expr.c.
References abort, arg_types, args, BLOCK_EXPR_BODY, BLOCK_EXPR_DECLS, build(), build1, build_address_of(), build_block(), build_class_ref(), build_decl, build_function_type(), build_java_signature(), build_pointer_type(), build_tree_list, build_utf8_ref(), call(), CAN_COMPLETE_NORMALLY, chainon(), CLASS_FROM_SOURCE_P, DECL_ARGUMENTS, DECL_ARTIFICIAL, DECL_CONTEXT, DECL_EXTERNAL, DECL_FUNCTION_BODY, DECL_INITIAL, DECL_NAME, DECL_RESULT, flag_jni, get_identifier(), IDENTIFIER_LENGTH, IDENTIFIER_POINTER, layout_decl(), make_decl_rtl(), METHOD_NATIVE, METHOD_STATIC, nreverse(), NULL, null_pointer_node, NULL_TREE, object_ptr_type_node, ptr_type_node, rest_of_decl_compilation(), soft_getjnienvnewframe_node, soft_jnipopsystemframe_node, soft_lookupjnimethod_node, TREE_CHAIN, tree_cons, TREE_PUBLIC, TREE_SIDE_EFFECTS, TREE_STATIC, TREE_TYPE, TREE_USED, TYPE_ARG_TYPES, unmangle_classname(), and void_type_node.
| tree build_known_method_ref | ( | tree | method, | |
| method_type | , | |||
| tree | self_type, | |||
| method_signature | , | |||
| arg_list | ||||
| ) |
Definition at line 1824 of file expr.c.
References build(), build1, build_class_ref(), build_int_2, CLASS_TO_HANDLE_TYPE, class_type_node, DECL_NAME, fatal_error(), fold(), func, get_identifier(), IDENTIFIER_POINTER, int_size_in_bytes(), is_compiled_class(), lookup_field(), make_decl_rtl(), method_ptr_type_node, method_type_node, nativecode_ptr_type_node, NULL, NULL_TREE, TREE_CHAIN, and TYPE_METHODS.
Referenced by expand_invoke().
Definition at line 965 of file expr.c.
References build_anewarray(), build_newarray(), encode_newarray_type(), JPRIMITIVE_TYPE_P, and TREE_TYPE.
Referenced by java_lang_expand_expr().
Definition at line 912 of file expr.c.
References build(), build_address_of(), build_class_ref(), build_int_2, build_java_array_type(), build_tree_list, decode_newarray_type(), flag_emit_class_files, host_integerp(), NULL_TREE, promote_type(), soft_newarray_node, tree_cons, and tree_low_cst().
Referenced by build_new_array().
Definition at line 396 of file expr.c.
References class_depth(), CLASS_INTERFACE, HANDLE_TO_CLASS_TYPE, HOST_WIDE_INT, i, java_array_type_length(), n, object_ptr_type_node, ptr_type_node, TREE_CODE, TREE_TYPE, TREE_VEC_ELT, TREE_VEC_LENGTH, TYPE_ARRAY_ELEMENT, TYPE_ARRAY_P, TYPE_BINFO_BASETYPE, TYPE_BINFO_BASETYPES, and TYPE_NAME.
Referenced by merge_types(), and pop_type_0().
Definition at line 1183 of file expr.c.
References CLASSTYPE_SUPER, HAS_FINALIZER_P, and NULL_TREE.
Referenced by expand_java_NEW().
Definition at line 1630 of file expr.c.
References build_decl, current_function_decl, DECL_CONTEXT, DECL_IGNORED_P, return_address_type_node, and TREE_TYPE.
Referenced by lookup_label().
| tree decode_newarray_type | ( | int | atype | ) |
Definition at line 634 of file expr.c.
References boolean_type_node, byte_type_node, char_type_node, double_type_node, float_type_node, int_type_node, long_type_node, NULL_TREE, and short_type_node.
Referenced by build_newarray(), and verify_jvm_instructions().
| static bool emit_init_test_initialization | ( | struct hash_entry * | entry, | |
| key | ||||
| ) | [static] |
Definition at line 3470 of file expr.c.
References boolean_true_node, boolean_type_node, build(), build1, build_class_ref(), build_int_2, byte_type_node, class_type_node, DECL_INITIAL, expand_expr_stmt(), get_identifier(), init_test_hash_entry::init_test_decl, JV_STATE_DONE, and lookup_field().
Referenced by java_lang_expand_expr().
| int encode_newarray_type | ( | tree | type | ) |
Definition at line 654 of file expr.c.
References abort, boolean_type_node, byte_type_node, char_type_node, double_type_node, float_type_node, int_type_node, long_type_node, and short_type_node.
Referenced by build_new_array(), and generate_bytecode_insns().
Definition at line 2822 of file expr.c.
References BCODE_HAS_LINENUMBER, BCODE_HAS_MULTI_LINENUMBERS, BCODE_TARGET, BCODE_VERIFIED, DECL_CODE_LENGTH, DECL_CODE_OFFSET, emit_line_note(), expand_label(), flush_quick_stack(), GET_u2, i, input_filename, JCF_SEEK, LABEL_VERIFIED, length, lineno, load_type_state(), lookup_label(), maybe_poplevels(), maybe_pushlevels(), PC, pc, process_jvm_instruction(), verify_jvm_instructions(), and warning.
| static void expand_compare | ( | enum tree_code | condition, | |
| tree | value1, | |||
| tree | value2, | |||
| int | target_pc | |||
| ) | [static] |
Definition at line 1656 of file expr.c.
References boolean_type_node, build(), cond, expand_end_cond(), expand_goto(), expand_start_cond(), fold(), lookup_label(), target, and truthvalue_conversion().
Referenced by expand_cond(), and expand_test().
Definition at line 1686 of file expr.c.
References expand_compare(), flush_quick_stack(), and pop_value().
| static void expand_iinc | ( | unsigned int | local_var_index, | |
| int | ival, | |||
| int | pc | |||
| ) | [static] |
Definition at line 1326 of file expr.c.
References build(), build_int_2, expand_assignment(), find_local_variable(), flush_quick_stack(), fold(), and int_type_node.
| static void expand_invoke | ( | int | opcode, | |
| int | method_ref_index, | |||
| nargs | ||||
| ) | [static] |
Definition at line 2047 of file expr.c.
References arg_list, build(), build1, build_invokeinterface(), build_invokevirtual(), build_known_method_ref(), build_pointer_type(), call(), check, check_for_builtin(), CLASS_FINAL, CLASS_LOADED_P, CLASS_TO_HANDLE_TYPE, COMPONENT_REF_CLASS_INDEX, COMPONENT_REF_NAME, COMPONENT_REF_SIGNATURE, convert(), JCF::cpool, current_jcf, DECL_INIT_P, DECL_NAME, dtable, error(), expand_expr_stmt(), fatal_error(), flush_quick_stack(), func, get_class_constant(), get_type_from_signature(), ID_INIT_P, IDENTIFIER_POINTER, integer_zero_node, invoke_build_dtable(), java_check_reference(), layout_class_methods(), load_class(), lookup_java_constructor(), lookup_java_method(), METHOD_ABSTRACT, METHOD_FINAL, METHOD_PRIVATE, METHOD_STATIC, NULL_TREE, pop_arguments(), pop_type(), promote_type(), push_value(), save_expr(), TREE_CODE, TREE_SIDE_EFFECTS, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, TYPE_NAME, and TYPE_SIZE.
| static void expand_java_array_length | ( | ) | [static] |
Definition at line 1070 of file expr.c.
References build_java_array_length_access(), length, pop_value(), ptr_type_node, and push_value().
Definition at line 1046 of file expr.c.
References build1, build_java_arrayaccess(), build_java_check_indexed_type(), fold(), int_type_node, INTEGRAL_TYPE_P, pop_value(), ptr_type_node, push_value(), save_expr(), and TYPE_PRECISION.
Definition at line 1010 of file expr.c.
References build_java_arrayaccess(), build_java_arraystore_check(), build_java_check_indexed_type(), check, expand_assignment(), expand_expr_stmt(), flush_quick_stack(), index(), int_type_node, INTEGRAL_TYPE_P, pop_value(), ptr_type_node, save_expr(), TREE_CODE, and TYPE_PRECISION.
Definition at line 1474 of file expr.c.
References build_java_binop(), int_type_node, ltype, pop_value(), and push_value().
Definition at line 1313 of file expr.c.
References build(), build_address_of(), build_class_ref(), build_tree_list, NULL_TREE, pop_value(), promote_type(), ptr_type_node, push_value(), soft_checkcast_node, and tree_cons.
| static void expand_java_field_op | ( | int | is_static, | |
| int | is_putting, | |||
| int | field_ref_index | |||
| ) | [static] |
Definition at line 2362 of file expr.c.
References build_class_init(), build_field_ref(), build_java_signature(), COMPONENT_REF_CLASS_INDEX, COMPONENT_REF_NAME, COMPONENT_REF_SIGNATURE, convert(), JCF::cpool, current_class, current_function_decl, current_jcf, DECL_CLINIT_P, DECL_CONSTRUCTOR_P, DECL_CONTEXT, DECL_NAME, error(), error_mark_node, expand_assignment(), FIELD_FINAL, FIELD_STATIC, field_type(), flush_quick_stack(), get_class_constant(), get_type_from_signature(), ID_FINIT_P, IDENTIFIER_POINTER, integer_zero_node, lookup_field(), new_value, NULL_TREE, pop_value(), push_value(), TREE_TYPE, and TYPE_NAME.
| static void expand_java_goto | ( | int | target_pc | ) | [static] |
Definition at line 1701 of file expr.c.
References expand_goto(), flush_quick_stack(), and lookup_label().
Definition at line 1304 of file expr.c.
References build_instanceof(), object_ptr_type_node, pop_value(), and push_value().
Definition at line 980 of file expr.c.
References args, build(), build_address_of(), build_class_ref(), build_int_2, build_tree_list, i, int_type_node, null_pointer_node, NULL_TREE, pop_value(), promote_type(), push_value(), soft_multianewarray_node, and tree_cons.
Definition at line 1196 of file expr.c.
References alloc_no_finalizer_node, alloc_node(), alloc_object_node, build(), build_address_of(), build_class_ref(), build_tree_list, class_has_finalize_method(), CLASS_LOADED_P, load_class(), NULL_TREE, promote_type(), push_value(), size_in_bytes(), and tree_cons.
Definition at line 1096 of file expr.c.
References abort, build_int_2, build_real(), double_type_node, float_type_node, int_type_node, long_type_node, null_pointer_node, ptr_type_node, push_value(), REAL_VALUE_FROM_INT, REAL_VALUE_TYPE, TREE_TYPE, TYPE_MODE, and x.
Definition at line 1125 of file expr.c.
References build(), build1, current_function_decl, DECL_RESULT, expand_null_return(), expand_return(), GET_MODE_SIZE, INT_TYPE_SIZE, pop_value(), TREE_SIDE_EFFECTS, TREE_TYPE, TYPE_MODE, and void_type_node.
Definition at line 1151 of file expr.c.
References build_decl, copy, current_function_decl, DECL_CONTEXT, DECL_INITIAL, DECL_REGISTER, expand_decl(), expand_decl_init(), find_local_variable(), layout_decl(), MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, NULL_TREE, and push_value().
Definition at line 1671 of file expr.c.
References expand_compare(), flush_quick_stack(), integer_zero_node, null_pointer_node, pop_value(), and ptr_type_node.
| static void flush_quick_stack | ( | ) | [static] |
Definition at line 230 of file expr.c.
References cur, expand_assignment(), find_stack_slot(), next, node, NULL_TREE, prev, TREE_CHAIN, TREE_TYPE, TREE_VALUE, and TYPE_IS_WIDE.
Referenced by build_java_jsr(), expand_byte_code(), expand_cond(), expand_iinc(), expand_invoke(), expand_java_arraystore(), expand_java_field_op(), expand_java_goto(), expand_test(), java_stack_dup(), and java_stack_swap().
Definition at line 3410 of file expr.c.
References abort, build(), CAN_COMPLETE_NORMALLY, flag_syntax_only, NULL_TREE, save_expr(), TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_OPERAND, TREE_SIDE_EFFECTS, TREE_TYPE, TREE_VALUE, and void_type_node.
| tree generate_name | ( | ) |
Definition at line 1620 of file expr.c.
References ASM_GENERATE_INTERNAL_LABEL, and get_identifier().
Referenced by java_lang_expand_expr().
| int get_offset_table_index | ( | tree | method | ) |
Definition at line 1908 of file expr.c.
References build_tree_list, i, NULL_TREE, otable_methods, TREE_CHAIN, and TREE_VALUE.
Referenced by build_invokeinterface(), and build_invokevirtual().
Definition at line 2463 of file expr.c.
References abort, boolean_array_vtable, boolean_type_node, build_address_of(), byte_array_vtable, byte_type_node, char_array_vtable, char_type_node, double_array_vtable, double_type_node, float_array_vtable, float_type_node, int_array_vtable, int_type_node, long_array_vtable, long_type_node, r, short_array_vtable, and short_type_node.
Referenced by java_lang_expand_expr().
| void init_expr_processing | ( | ) |
Definition at line 140 of file expr.c.
References double_type_node, float_type_node, int_type_node, long_type_node, and ptr_type_node.
Referenced by java_init_decl_processing().
Definition at line 1878 of file expr.c.
References build(), build_java_indirect_ref(), dtable, dtable_ptr_type, flag_check_references, get_identifier(), is_array_type_p(), lookup_field(), NULL_TREE, object_type_node, save_expr(), TREE_TYPE, and TREE_VALUE.
Referenced by expand_invoke().
Definition at line 722 of file expr.c.
References boolean_type_node, build(), build_address_of(), cond, empty_stmt_node, flag_syntax_only, null_pointer_node, NULL_TREE, save_expr(), soft_nullpointer_node, TREE_TYPE, and void_type_node.
Referenced by build_java_indirect_ref(), and expand_invoke().
| struct rtx_def* java_lang_expand_expr | ( | tree | exp, | |
| rtx | target, | |||
| enum machine_mode | tmode, | |||
| enum expand_modifier | modifier | |||
| ) | [read] |
Definition at line 2488 of file expr.c.
References BLOCK, BLOCK_EXPR_BODY, BLOCK_EXPR_DECLS, build(), build1, build_decl, build_exception_object_ref(), build_int_2, build_java_indirect_ref(), build_new_array(), case_identity(), const0_rtx, current_function_decl, DECL_ALIGN, DECL_ASSEMBLER_NAME, DECL_FUNCTION_INIT_TEST_TABLE, DECL_IGNORED_P, DECL_INITIAL, duplicate, emit_init_test_initialization(), emit_queue(), expand_assignment(), expand_decl(), expand_eh_region_start(), expand_end_all_catch(), expand_end_bindings(), expand_end_case, expand_end_catch(), expand_expr(), expand_expr_stmt(), expand_start_all_catch(), expand_start_bindings, expand_start_case(), expand_start_catch(), EXPR_WFL_LINECOL, FINISH_RECORD_CONSTRUCTOR, flag_check_references, flag_hash_synchronization, generate_name(), get_primitive_array_vtable(), getdecls(), hash_traverse(), HOST_WIDE_INT, init_decl, int_type_node, internal_error(), java_array_type_length(), JPRIMITIVE_TYPE_P, layout_decl(), length, LOCAL_CLASS_INITIALIZATION_FLAG_P, next, NULL, null_pointer_node, NULL_TREE, object_type_node, POINTER_SIZE, poplevel(), PUSH_FIELD_VALUE, PUSH_SUPER_VALUE, pushcase(), pushdecl(), pushdecl_top_level(), pushlevel(), r, rest_of_decl_compilation(), START_RECORD_CONSTRUCTOR, tmp, TREE_CHAIN, TREE_CODE, tree_code_name, TREE_CONSTANT, TREE_OPERAND, TREE_READONLY, TREE_STATIC, TREE_SYMBOL_REFERENCED, TREE_TYPE, TYPE_ARRAY_ELEMENT, TYPE_FIELDS, and wfl_operator.
Referenced by java_init().
Definition at line 2933 of file expr.c.
References alloc_name_constant(), build_ref_from_constant_pool(), c, CONSTANT_String, get_constant(), get_name_constant(), JPOOL_TAG, JPOOL_USHORT1, promote_type(), push_value(), string_type_node, and TREE_TYPE.
| static void java_stack_dup | ( | int | size, | |
| int | offset | |||
| ) | [static] |
Definition at line 543 of file expr.c.
References abort, DECL_RTL, emit_move_insn(), error(), find_stack_slot(), flush_quick_stack(), stack_type_map, TYPE_IS_WIDE, and TYPE_SECOND.
| static void java_stack_pop | ( | int | count | ) | [static] |
Definition at line 491 of file expr.c.
References abort, pop_value(), stack_type_map, TYPE_SECOND, and val.
Referenced by build_java_athrow().
| static void java_stack_swap | ( | ) | [static] |
Definition at line 518 of file expr.c.
References abort, copy_to_reg(), DECL_RTL, emit_move_insn(), find_stack_slot(), flush_quick_stack(), stack_type_map, obstack::temp, TYPE_IS_WIDE, TYPE_SECOND, and TYPE_UNKNOWN.
Definition at line 2437 of file expr.c.
References current_function_decl, DECL_MAX_LOCALS, i, LABEL_TYPE_STATE, TREE_VEC_ELT, TREE_VEC_LENGTH, type_map, and vec.
Referenced by build_java_jsr(), expand_byte_code(), and verify_jvm_instructions().
Definition at line 1503 of file expr.c.
References BINFO_TYPE, CLASS_LOADED_P, CLASS_P, CLASSTYPE_SUPER, DECL_CONTEXT, DECL_NAME, error(), error_mark_node, i, i1, i2, IDENTIFIER_POINTER, load_class(), lookup_field(), n, NULL_TREE, TREE_CHAIN, TREE_CODE, TREE_VEC_ELT, TREE_VEC_LENGTH, TYPE_BINFO_BASETYPES, TYPE_FIELDS, TYPE_NAME, and TYPE_SIZE.
| tree lookup_label | ( | int | pc | ) |
Definition at line 1597 of file expr.c.
References ASM_GENERATE_INTERNAL_LABEL, buf, create_label_decl(), get_identifier(), IDENTIFIER_LOCAL_VALUE, LABEL_PC, label_rtx(), and pushdecl().
Definition at line 3305 of file expr.c.
References BCODE_INSTRUCTION_START, first, index(), int, opcode, pc, and peek_opcode_at_pc().
Referenced by give_name_to_locals().
Definition at line 2676 of file expr.c.
References BCODE_INSTRUCTION_START, DECL_CODE_LENGTH, DECL_CODE_OFFSET, JCF_SEEK, length, memset, PC, and xrealloc().
| static void note_label | ( | current_pc | , | |
| int current_pc | target_pc | |||
| ) | [static] |
| static bool emit_init_test_initialization PARAMS | ( | (struct hash_entry *, PTR ptr) | ) | [static] |
| static void expand_invoke PARAMS | ( | (int, int, int) | ) | [static] |
| static void expand_java_goto PARAMS | ( | (int) | ) | [static] |
| static void expand_iinc PARAMS | ( | (unsigned int, int, int) | ) | [static] |
| static void java_stack_dup PARAMS | ( | (int, int) | ) | [static] |
Definition at line 77 of file cplus-dem.c.
| static unsigned char peek_opcode_at_pc | ( | JCF * | jcf, | |
| int | code_offset, | |||
| int | pc | |||
| ) | [static] |
Definition at line 1735 of file expr.c.
References abort, convert(), end_params_node, integer_type_node, INTEGRAL_TYPE_P, NULL_TREE, pop_value(), PROMOTE_PROTOTYPES, tail, TREE_CHAIN, TREE_CODE, tree_cons, TREE_VALUE, and TYPE_PRECISION.
Referenced by expand_invoke().
Definition at line 379 of file expr.c.
References error(), free(), NULL, and pop_type_0().
Referenced by expand_invoke(), pop_value(), process_jvm_instruction(), type_stack_dup(), and verify_jvm_instructions().
Definition at line 318 of file expr.c.
References can_widen_reference_to(), CLASS_INTERFACE, concat(), free(), INTEGRAL_TYPE_P, lang_printable_name(), NULL, NULL_TREE, object_ptr_type_node, promote_type(), ptr_type_node, stack_type_map, obstack::temp, TREE_CODE, TREE_TYPE, TYPE_IS_WIDE, TYPE_NAME, TYPE_PRECISION, void_type_node, and xstrdup().
Referenced by pop_argument_types(), and pop_type().
Definition at line 470 of file expr.c.
References find_stack_slot(), node, pop_type(), promote_type(), TREE_CHAIN, and TREE_VALUE.
Referenced by expand_cond(), expand_java_array_length(), expand_java_arrayload(), expand_java_arraystore(), expand_java_binop(), expand_java_CHECKCAST(), expand_java_field_op(), expand_java_INSTANCEOF(), expand_java_multianewarray(), expand_java_return(), expand_test(), java_stack_pop(), and pop_arguments().
| int process_jvm_instruction | ( | int | PC, | |
| const unsigned char* | byte_ops, | |||
| length | ||||
| ) |
Definition at line 2952 of file expr.c.
References BCODE_EXCEPTION_TARGET, build(), fprintf(), pop_type(), ptr_type_node, and push_value().
Referenced by expand_byte_code().
Definition at line 282 of file expr.c.
References abort, and push_type_0().
Referenced by push_value(), and type_stack_dup().
| int push_type_0 | ( | tree | type | ) |
Definition at line 266 of file expr.c.
References current_function_decl, DECL_MAX_STACK, promote_type(), stack_type_map, TYPE_IS_WIDE, and TYPE_SECOND.
Referenced by push_type().
Definition at line 290 of file expr.c.
References convert(), INTEGRAL_TYPE_P, node, NULL_TREE, promote_type(), push_type(), TREE_CHAIN, tree_cons, TREE_TYPE, TREE_VALUE, and TYPE_PRECISION.
Referenced by build_java_jsr(), expand_invoke(), expand_java_array_length(), expand_java_arrayload(), expand_java_binop(), expand_java_CHECKCAST(), expand_java_field_op(), expand_java_INSTANCEOF(), expand_java_multianewarray(), expand_java_NEW(), expand_java_pushc(), expand_load_internal(), java_push_constant_from_pool(), and process_jvm_instruction().
Definition at line 155 of file expr.c.
References boolean_false_node, boolean_true_node, boolean_type_node, build(), fold(), integer_zerop(), real_zerop(), TREE_CODE, TREE_OPERAND, TREE_TYPE, truthvalue_conversion(), and TYPE_PRECISION.
| tree dtable_ident = NULL_TREE |
| char* instruction_bits |
Definition at line 1642 of file expr.c.
Referenced by build_java_jsr(), and verify_jvm_instructions().
| int linenumber_count |
| const unsigned char* linenumber_table |
tree methods_ident = NULL_TREE [static] |
tree ncode_ident = NULL_TREE [static] |
tree operand_type[59] [static] |
tree quick_stack = NULL_TREE [static] |
| int stack_pointer |
tree tree_list_free_list = NULL_TREE [static] |
1.5.6