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(); }
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; }
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("'"); }
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()); }
byteArrayOop oopFactory::new_byteArray(int size) { byteArrayKlass* bk = (byteArrayKlass*) Universe::byteArrayKlassObj()->klass_part(); return byteArrayOop(bk->allocateObjectSize(size)); }
bool byteArrayKlass::oop_verify(oop obj) { assert_byteArray(obj,"Argument must be byteArray"); return byteArrayOop(obj)->verify(); }
int byteArrayKlass::oop_scavenge_tenured_contents(oop obj) { // header + instance variables memOopKlass::oop_scavenge_tenured_contents(obj); return object_size(byteArrayOop(obj)->length()); }
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); }