src/share/vm/prims/jvmtiClassFileReconstituter.cpp

changeset 3906
04ade88d9712
parent 3670
f7c4174b33ba
child 3921
e74da3c2b827
equal deleted inserted replaced
3905:5a1f452f8f90 3906:04ade88d9712
266 266
267 // Write SourceDebugExtension attribute 267 // Write SourceDebugExtension attribute
268 // JSR45| SourceDebugExtension_attribute { 268 // JSR45| SourceDebugExtension_attribute {
269 // JSR45| u2 attribute_name_index; 269 // JSR45| u2 attribute_name_index;
270 // JSR45| u4 attribute_length; 270 // JSR45| u4 attribute_length;
271 // JSR45| u2 sourcefile_index; 271 // JSR45| u1 debug_extension[attribute_length];
272 // JSR45| } 272 // JSR45| }
273 void JvmtiClassFileReconstituter::write_source_debug_extension_attribute() { 273 void JvmtiClassFileReconstituter::write_source_debug_extension_attribute() {
274 assert(ikh()->source_debug_extension() != NULL, "caller must check"); 274 assert(ikh()->source_debug_extension() != NULL, "caller must check");
275 275
276 write_attribute_name_index("SourceDebugExtension"); 276 write_attribute_name_index("SourceDebugExtension");
277 write_u4(2); // always length 2 277 int len = (int)strlen(ikh()->source_debug_extension());
278 write_u2(symbol_to_cpool_index(ikh()->source_debug_extension())); 278 write_u4(len);
279 u1* ext = (u1*)ikh()->source_debug_extension();
280 for (int i=0; i<len; i++) {
281 write_u1(ext[i]);
282 }
279 } 283 }
280 284
281 // Write (generic) Signature attribute 285 // Write (generic) Signature attribute
282 // JVMSpec| Signature_attribute { 286 // JVMSpec| Signature_attribute {
283 // JVMSpec| u2 attribute_name_index; 287 // JVMSpec| u2 attribute_name_index;

mercurial