< prev index next >

src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp

Print this page
@@ -22,10 +22,11 @@
   *
   */
  
  #include "precompiled.hpp"
  #include "classfile/symbolTable.hpp"
+ #include "classfile/vmClasses.hpp"
  #include "interpreter/bytecodeStream.hpp"
  #include "memory/universe.hpp"
  #include "oops/fieldStreams.inline.hpp"
  #include "oops/recordComponent.hpp"
  #include "prims/jvmtiClassFileReconstituter.hpp"

@@ -911,12 +912,11 @@
    // JVMSpec|           cp_info constant_pool[constant_pool_count-1];
    write_u2(cpool()->length());
    copy_cpool_bytes(writeable_address(cpool_size()));
  
    // JVMSpec|           u2 access_flags;
-   write_u2(ik()->access_flags().get_flags() & JVM_RECOGNIZED_CLASS_MODIFIERS);
- 
+   write_u2(ik()->access_flags().get_flags() & (JVM_RECOGNIZED_CLASS_MODIFIERS | JVM_ACC_PRIMITIVE | JVM_ACC_VALUE | JVM_ACC_PERMITS_VALUE));
    // JVMSpec|           u2 this_class;
    // JVMSpec|           u2 super_class;
    write_u2(class_symbol_to_cpool_index(ik()->name()));
    Klass* super_class = ik()->super();
    write_u2(super_class == NULL? 0 :  // zero for java.lang.Object

@@ -925,10 +925,11 @@
    // JVMSpec|           u2 interfaces_count;
    // JVMSpec|           u2 interfaces[interfaces_count];
    Array<InstanceKlass*>* interfaces =  ik()->local_interfaces();
    int num_interfaces = interfaces->length();
    write_u2(num_interfaces);
+ 
    for (int index = 0; index < num_interfaces; index++) {
      HandleMark hm(thread());
      InstanceKlass* iik = interfaces->at(index);
      write_u2(class_symbol_to_cpool_index(iik->name()));
    }

@@ -1023,10 +1024,11 @@
        switch (code) {
        case Bytecodes::_getstatic       :  // fall through
        case Bytecodes::_putstatic       :  // fall through
        case Bytecodes::_getfield        :  // fall through
        case Bytecodes::_putfield        :  // fall through
+       case Bytecodes::_withfield       :  // fall through
        case Bytecodes::_invokevirtual   :  // fall through
        case Bytecodes::_invokespecial   :  // fall through
        case Bytecodes::_invokestatic    :  // fall through
        case Bytecodes::_invokedynamic   :  // fall through
        case Bytecodes::_invokeinterface : {
< prev index next >