PUBLIC
L4_fpage::Rights
Vm_vmx_ept::v_delete(Mem_space::Vaddr virt, Mem_space::Page_order size,
                     L4_fpage::Rights page_attribs)
{
  (void)size;
  assert (cxx::get_lsb(Virt_addr(virt), size) == 0);

  auto i = _ept->walk(virt);

  if (EXPECT_FALSE (! i.is_valid()))
    return L4_fpage::Rights(0);

  L4_fpage::Rights ret = i.access_flags();

  if (! (page_attribs & L4_fpage::Rights::R()))
    {
      // downgrade PDE (superpage) rights
      i.del_rights(page_attribs);
    }
  else
    {
      // delete PDE (superpage)
      i.clear();
    }

  return ret;
}
Пример #2
0
 void next() {
   if (access_flags().field_has_generic_signature()) {
     _generic_signature_slot ++;
     assert(_generic_signature_slot <= _fields->length(), "");
   }
   _index += 1;
 }
Пример #3
0
 void set_generic_signature_index(int index) {
   assert(!field()->is_internal(), "regular only");
   if (access_flags().field_has_generic_signature()) {
     assert(_generic_signature_slot < _fields->length(), "out of bounds");
     _fields->at_put(_generic_signature_slot, index);
   }
 }
Пример #4
0
 Symbol* generic_signature() const {
   if (access_flags().field_has_generic_signature()) {
     assert(_generic_signature_slot < _fields->length(), "out of bounds");
     int index = _fields->at(_generic_signature_slot);
     return _constants->symbol_at(index);
   } else {
     return NULL;
   }
 }
Пример #5
0
 int generic_signature_index() const {
   assert(!field()->is_internal(), "regular only");
   if (access_flags().field_has_generic_signature()) {
     assert(_generic_signature_slot < _fields->length(), "out of bounds");
     return _fields->at(_generic_signature_slot);
   } else {
     return 0;
   }
 }
Пример #6
0
 bool is_static() const          { return access_flags().is_static();    }
Пример #7
0
 bool has_finalizer() const {
   return access_flags().has_finalizer();
 }
Пример #8
0
 bool has_vanilla_constructor() const {
   return access_flags().has_vanilla_constructor();
 }
Пример #9
0
void ClassInfo::iterate(OopVisitor* visitor) {
#if USE_OOP_VISITOR
  Oop::iterate(visitor);

  {
    NamedField id("object_size", true);
    visitor->do_ushort(&id, object_size_offset(), true);
  }

  {
    NamedField id("vtable_length", true);
    visitor->do_ushort(&id, vtable_length_offset(), true);
  }

  {
    NamedField id("itable_length", true);
    visitor->do_ushort(&id, itable_length_offset(), true);
  }

  {
    NamedField id("class_id", true);
    visitor->do_ushort(&id, class_id_offset(), true);
  }

  {
    NamedField id("name", true);
    visitor->do_oop(&id, name_offset(), true);
  }

  {
    char buff[1024];
    access_flags().print_to_buffer(buff, AccessFlags::CLASS_FLAGS);
    visitor->do_comment(buff);
    NamedField id("access_flags", true);
    id.set_hex_output(true);
    visitor->do_uint(&id, access_flags_offset(), true);
  }

  if (is_array()) {
    {
      NamedField id("type", true);
      visitor->do_int(&id, type_offset(), true);
    }
    { 
      NamedField id("scale", true);
      visitor->do_int(&id, scale_offset(), true);
    }
  } else {
    {
      NamedField id("methods", true);
      visitor->do_oop(&id, methods_offset(), true);
    }
    {
      NamedField id("fields", true);
      visitor->do_oop(&id, fields_offset(), true);
    }
    {
      NamedField id("local_interfaces", true);
      visitor->do_oop(&id, local_interfaces_offset(), true);
    }
#if ENABLE_REFLECTION
    {
      NamedField id("inner_classes", true);
      visitor->do_oop(&id, inner_classes_offset(), true);
    }
#endif
    {
      NamedField id("constants", true);
      visitor->do_oop(&id, constants_offset(), true);
    }
  }

  iterate_tables(visitor);
#endif
}
Пример #10
0
 bool is_package_private() const {
   return access_flags().is_package_private();
 }
Пример #11
0
 bool is_synthetic() const       { return access_flags().is_synthetic(); }
Пример #12
0
 bool is_transient() const       { return access_flags().is_transient(); }
Пример #13
0
 bool is_volatile() const        { return access_flags().is_volatile();  }
Пример #14
0
 bool is_verified() const {
   return access_flags().is_verified();
 }
Пример #15
0
 bool is_protected() const       { return access_flags().is_protected(); }
Пример #16
0
 // Access flags
 bool is_public() const          { return access_flags().is_public();    }
Пример #17
0
 bool is_interface() const {
   return access_flags().is_interface();
 }
Пример #18
0
 // Is this a ClassInfo for an ArrayClass?
 bool is_array() {
   return access_flags().is_array_class();
 }
Пример #19
0
 void set_has_vanilla_constructor() {
   AccessFlags flags = access_flags();
   flags.set_has_vanilla_constructor();
   set_access_flags(flags);
 }
Пример #20
0
 void set_is_verified() {
   AccessFlags flags = access_flags();
   flags.set_is_verified();
   set_access_flags(flags);
 }
Пример #21
0
 bool is_final() const           { return access_flags().is_final();     }
Пример #22
0
 bool is_abstract() const {
   return access_flags().is_abstract();
 }