103 enum {
104 // initial size should be power of two
105 initial_buffer_size = 1024
106 };
107
108 inline Thread* thread() { return _thread; }
109
110 void write_class_file_format();
111 void write_field_infos();
112 void write_method_infos();
113 void write_method_info(methodHandle method);
114 void write_code_attribute(methodHandle method);
115 void write_exceptions_attribute(constMethodHandle const_method);
116 void write_synthetic_attribute();
117 void write_class_attributes();
118 void write_source_file_attribute();
119 void write_source_debug_extension_attribute();
120 u2 line_number_table_entries(methodHandle method);
121 void write_line_number_table_attribute(methodHandle method, u2 num_entries);
122 void write_local_variable_table_attribute(methodHandle method, u2 num_entries);
123 void write_stackmap_table_attribute(methodHandle method, int stackmap_table_len);
124 u2 inner_classes_attribute_length();
125 void write_inner_classes_attribute(int length);
126 void write_signature_attribute(u2 generic_signaure_index);
127 void write_attribute_name_index(const char* name);
128 void write_annotations_attribute(const char* attr_name, typeArrayHandle annos);
129
130 address writeable_address(size_t size);
131 void write_u1(u1 x);
132 void write_u2(u2 x);
133 void write_u4(u4 x);
134 void write_u8(u8 x);
135
136 public:
137 // Calls to this constructor must be proceeded by a ResourceMark
138 // and a HandleMark
139 JvmtiClassFileReconstituter(instanceKlassHandle ikh) :
140 JvmtiConstantPoolReconstituter(ikh) {
141 _buffer_size = initial_buffer_size;
142 _buffer = _buffer_ptr = NEW_RESOURCE_ARRAY(u1, _buffer_size);
|
103 enum {
104 // initial size should be power of two
105 initial_buffer_size = 1024
106 };
107
108 inline Thread* thread() { return _thread; }
109
110 void write_class_file_format();
111 void write_field_infos();
112 void write_method_infos();
113 void write_method_info(methodHandle method);
114 void write_code_attribute(methodHandle method);
115 void write_exceptions_attribute(constMethodHandle const_method);
116 void write_synthetic_attribute();
117 void write_class_attributes();
118 void write_source_file_attribute();
119 void write_source_debug_extension_attribute();
120 u2 line_number_table_entries(methodHandle method);
121 void write_line_number_table_attribute(methodHandle method, u2 num_entries);
122 void write_local_variable_table_attribute(methodHandle method, u2 num_entries);
123 void write_local_variable_type_table_attribute(methodHandle method, u2 num_entries);
124 void write_stackmap_table_attribute(methodHandle method, int stackmap_table_len);
125 u2 inner_classes_attribute_length();
126 void write_inner_classes_attribute(int length);
127 void write_signature_attribute(u2 generic_signaure_index);
128 void write_attribute_name_index(const char* name);
129 void write_annotations_attribute(const char* attr_name, typeArrayHandle annos);
130
131 address writeable_address(size_t size);
132 void write_u1(u1 x);
133 void write_u2(u2 x);
134 void write_u4(u4 x);
135 void write_u8(u8 x);
136
137 public:
138 // Calls to this constructor must be proceeded by a ResourceMark
139 // and a HandleMark
140 JvmtiClassFileReconstituter(instanceKlassHandle ikh) :
141 JvmtiConstantPoolReconstituter(ikh) {
142 _buffer_size = initial_buffer_size;
143 _buffer = _buffer_ptr = NEW_RESOURCE_ARRAY(u1, _buffer_size);
|