62 AccessFlags access_flags, |
62 AccessFlags access_flags, |
63 int compressed_line_number_size, |
63 int compressed_line_number_size, |
64 int localvariable_table_length, |
64 int localvariable_table_length, |
65 int exception_table_length, |
65 int exception_table_length, |
66 int checked_exceptions_length, |
66 int checked_exceptions_length, |
|
67 u2 generic_signature_index, |
67 ConstMethod::MethodType method_type, |
68 ConstMethod::MethodType method_type, |
68 TRAPS) { |
69 TRAPS) { |
69 assert(!access_flags.is_native() || byte_code_size == 0, |
70 assert(!access_flags.is_native() || byte_code_size == 0, |
70 "native methods should not contain byte codes"); |
71 "native methods should not contain byte codes"); |
71 ConstMethod* cm = ConstMethod::allocate(loader_data, |
72 ConstMethod* cm = ConstMethod::allocate(loader_data, |
72 byte_code_size, |
73 byte_code_size, |
73 compressed_line_number_size, |
74 compressed_line_number_size, |
74 localvariable_table_length, |
75 localvariable_table_length, |
75 exception_table_length, |
76 exception_table_length, |
76 checked_exceptions_length, |
77 checked_exceptions_length, |
|
78 generic_signature_index, |
77 method_type, |
79 method_type, |
78 CHECK_NULL); |
80 CHECK_NULL); |
79 |
81 |
80 int size = Method::size(access_flags.is_native()); |
82 int size = Method::size(access_flags.is_native()); |
81 |
83 |
1032 assert((flags_bits & JVM_ACC_PUBLIC) == 0, "do not expose these methods"); |
1034 assert((flags_bits & JVM_ACC_PUBLIC) == 0, "do not expose these methods"); |
1033 |
1035 |
1034 methodHandle m; |
1036 methodHandle m; |
1035 { |
1037 { |
1036 Method* m_oop = Method::allocate(loader_data, 0, accessFlags_from(flags_bits), |
1038 Method* m_oop = Method::allocate(loader_data, 0, accessFlags_from(flags_bits), |
1037 0, 0, 0, 0, ConstMethod::NORMAL, CHECK_(empty)); |
1039 0, 0, 0, 0, 0, ConstMethod::NORMAL, CHECK_(empty)); |
1038 m = methodHandle(THREAD, m_oop); |
1040 m = methodHandle(THREAD, m_oop); |
1039 } |
1041 } |
1040 m->set_constants(cp()); |
1042 m->set_constants(cp()); |
1041 m->set_name_index(_imcp_invoke_name); |
1043 m->set_name_index(_imcp_invoke_name); |
1042 m->set_signature_index(_imcp_invoke_signature); |
1044 m->set_signature_index(_imcp_invoke_signature); |
1080 u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS) { |
1082 u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS) { |
1081 // Code below does not work for native methods - they should never get rewritten anyway |
1083 // Code below does not work for native methods - they should never get rewritten anyway |
1082 assert(!m->is_native(), "cannot rewrite native methods"); |
1084 assert(!m->is_native(), "cannot rewrite native methods"); |
1083 // Allocate new Method* |
1085 // Allocate new Method* |
1084 AccessFlags flags = m->access_flags(); |
1086 AccessFlags flags = m->access_flags(); |
|
1087 u2 generic_signature_index = m->generic_signature_index(); |
1085 int checked_exceptions_len = m->checked_exceptions_length(); |
1088 int checked_exceptions_len = m->checked_exceptions_length(); |
1086 int localvariable_len = m->localvariable_table_length(); |
1089 int localvariable_len = m->localvariable_table_length(); |
1087 int exception_table_len = m->exception_table_length(); |
1090 int exception_table_len = m->exception_table_length(); |
1088 |
1091 |
1089 ClassLoaderData* loader_data = m->method_holder()->class_loader_data(); |
1092 ClassLoaderData* loader_data = m->method_holder()->class_loader_data(); |
1092 flags, |
1095 flags, |
1093 new_compressed_linenumber_size, |
1096 new_compressed_linenumber_size, |
1094 localvariable_len, |
1097 localvariable_len, |
1095 exception_table_len, |
1098 exception_table_len, |
1096 checked_exceptions_len, |
1099 checked_exceptions_len, |
|
1100 generic_signature_index, |
1097 m->method_type(), |
1101 m->method_type(), |
1098 CHECK_(methodHandle())); |
1102 CHECK_(methodHandle())); |
1099 methodHandle newm (THREAD, newm_oop); |
1103 methodHandle newm (THREAD, newm_oop); |
1100 int new_method_size = newm->method_size(); |
1104 int new_method_size = newm->method_size(); |
1101 |
1105 |