Пример #1
0
void byteArrayKlass::oop_layout_iterate(oop obj, ObjectLayoutClosure* blk) {
  u_char* p   = byteArrayOop(obj)->bytes();
  oop*  l   = byteArrayOop(obj)->length_addr();
  int   len = byteArrayOop(obj)->length();
  // header + instance variables
  memOopKlass::oop_layout_iterate(obj, blk);
  // indexables
  blk->begin_indexables();
  blk->do_oop("length", l);
  for (int index = 1; index <= len; index++) {
    blk->do_indexable_byte(index, p++);
  }
  blk->end_indexables();
}
Пример #2
0
byteArrayOop HCodeBuffer::bytes() {
  BlockScavenge bs;
  align();
  Klass* klass = Universe::byteArrayKlassObj()->klass_part();
  byteArrayOop result = byteArrayOop(klass->allocateObjectSize(byteLength()));

  for (int index = 0; index < byteLength(); index++)
    result->byte_at_put(index + 1, (unsigned char) _bytes->at(index));
  
  return result;
}
Пример #3
0
void byteArrayKlass::oop_print_value_on(oop obj, outputStream* st) {
  assert_byteArray(obj,"Argument must be byteArray");
  byteArrayOop array = byteArrayOop(obj);
  int len = array->length();
  int n   = min(MaxElementPrintSize, len);
  st->print("'");
  for(int index = 1; index <= n; index++) {
    char c = array->byte_at(index);
    if (isprint(c)) st->print("%c",   c);
    else            st->print("\\%o", c);
  }
  if (n < len) st->print("...");
  st->print("'");
}
Пример #4
0
PRIM_DECL_2(doubleByteArrayPrimitives::compare, oop receiver, oop argument) {
  PROLOGUE_2("compare", receiver, argument);
  ASSERT_RECEIVER;

  if(receiver == argument)
    return as_smiOop(0);

  if (argument->is_doubleByteArray())
    return as_smiOop(doubleByteArrayOop(receiver)->compare(doubleByteArrayOop(argument)));

  if (argument->is_byteArray())
    return as_smiOop(- byteArrayOop(argument)->compare_doubleBytes(doubleByteArrayOop(receiver)));

  return markSymbol(vmSymbols::first_argument_has_wrong_type());
}
Пример #5
0
byteArrayOop oopFactory::new_byteArray(int size) {
  byteArrayKlass* bk =
    (byteArrayKlass*) Universe::byteArrayKlassObj()->klass_part();
  return byteArrayOop(bk->allocateObjectSize(size));
}
Пример #6
0
bool byteArrayKlass::oop_verify(oop obj) {
  assert_byteArray(obj,"Argument must be byteArray");
  return byteArrayOop(obj)->verify();
}
Пример #7
0
int byteArrayKlass::oop_scavenge_tenured_contents(oop obj) {
  // header + instance variables
  memOopKlass::oop_scavenge_tenured_contents(obj);
  return object_size(byteArrayOop(obj)->length());  
}
Пример #8
0
void byteArrayKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
  oop* l = byteArrayOop(obj)->length_addr();
  // header + instance variables
  memOopKlass::oop_oop_iterate(obj, blk);
  blk->do_oop(l);
}