96 fieldDescriptor fd;
97
98 klassOop res = ik->find_field(name_symbol, signature_symbol, &fd);
99 if (res == NULL) {
100 tty->print_cr("Invalid layout of %s at %s", ik->external_name(),
101 name_symbol->as_C_string());
102 fatal("Invalid layout of preloaded class");
103 }
104
105 //fetch the field at the offset we've found
106 int dest_offset = fd.offset();
107
108 return dest_offset;
109 }
110
111
112 const char* WhiteBox::lookup_jstring(const char* field_name, oop object) {
113 int offset = offset_for_field(field_name, object,
114 vmSymbols::string_signature());
115 oop string = object->obj_field(offset);
116 const char* ret = java_lang_String::as_utf8_string(string);
117 return ret;
118 }
119
120 bool WhiteBox::lookup_bool(const char* field_name, oop object) {
121 int offset =
122 offset_for_field(field_name, object, vmSymbols::bool_signature());
123 bool ret = (object->bool_field(offset) == JNI_TRUE);
124 return ret;
125 }
126
127
128 #define CC (char*)
129
130 static JNINativeMethod methods[] = {
131 {CC"getObjectAddress", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
132 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
133 {CC "parseCommandLine",
134 CC "(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
135 (void*) &WB_ParseCommandLine
|
96 fieldDescriptor fd;
97
98 klassOop res = ik->find_field(name_symbol, signature_symbol, &fd);
99 if (res == NULL) {
100 tty->print_cr("Invalid layout of %s at %s", ik->external_name(),
101 name_symbol->as_C_string());
102 fatal("Invalid layout of preloaded class");
103 }
104
105 //fetch the field at the offset we've found
106 int dest_offset = fd.offset();
107
108 return dest_offset;
109 }
110
111
112 const char* WhiteBox::lookup_jstring(const char* field_name, oop object) {
113 int offset = offset_for_field(field_name, object,
114 vmSymbols::string_signature());
115 oop string = object->obj_field(offset);
116 if (oopDesc::is_null(string)) {
117 return NULL;
118 }
119 const char* ret = java_lang_String::as_utf8_string(string);
120 return ret;
121 }
122
123 bool WhiteBox::lookup_bool(const char* field_name, oop object) {
124 int offset =
125 offset_for_field(field_name, object, vmSymbols::bool_signature());
126 bool ret = (object->bool_field(offset) == JNI_TRUE);
127 return ret;
128 }
129
130
131 #define CC (char*)
132
133 static JNINativeMethod methods[] = {
134 {CC"getObjectAddress", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
135 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
136 {CC "parseCommandLine",
137 CC "(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
138 (void*) &WB_ParseCommandLine
|