00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 # include "incls/_precompiled.incl"
00025 # include "incls/_doubleKlass.cpp.incl"
00026
00027 oop doubleKlass::allocateObject() {
00028 assert(!can_inline_allocation(), "using nonstandard allocation");
00029
00030 doubleOop obj = as_doubleOop(Universe::allocate(doubleOopDesc::object_size(), (memOop*)&doubleKlassObj));
00031
00032 memOop(obj)->initialize_header(false, doubleKlassObj);
00033 obj->set_value(0.0);
00034 return obj;
00035 }
00036
00037 klassOop doubleKlass::create_subclass(mixinOop mixin, Format format) {
00038 return NULL;
00039 }
00040
00041 void set_doubleKlass_vtbl(Klass* k) {
00042 doubleKlass o;
00043 k->set_vtbl_value(o.vtbl_value());
00044 }
00045
00046 void doubleKlass::oop_short_print_on(oop obj, outputStream* st) {
00047 assert_double(obj, "obj must be double");
00048 st->print("%1.10gd ", doubleOop(obj)->value());
00049 oop_print_value_on(obj, st);
00050 }
00051
00052 void doubleKlass::oop_print_value_on(oop obj, outputStream* st) {
00053 assert_double(obj, "obj must be double");
00054 st->print("%1.10gd", doubleOop(obj)->value());
00055 }
00056
00057
00058 int doubleKlass::oop_scavenge_contents(oop obj) {
00059 return doubleOopDesc::object_size();
00060 }
00061
00062 int doubleKlass::oop_scavenge_tenured_contents(oop obj) {
00063 return doubleOopDesc::object_size();
00064 }
00065
00066 void doubleKlass::oop_follow_contents(oop obj) {
00067 memOop(obj)->follow_header();
00068 }
00069
00070 void doubleKlass::oop_layout_iterate(oop obj, ObjectLayoutClosure* blk) {
00071 memOop(obj)->layout_iterate_header(blk);
00072 blk->do_double("value", &doubleOop(obj)->addr()->_value);
00073 }
00074
00075 void doubleKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
00076 memOop(obj)->oop_iterate_header(blk);
00077 }