# HG changeset patch # User Tom Rodriguez # Date 1429746125 25200 # Node ID 0cf5897db25a2d85d8c1db457c4f2fe35e4f92b2 # Parent f01ebceea99544b0bcb8dcb77682b3530f1ca07c Better assertion message for NULL deference in graalJavaAccess diff -r f01ebceea995 -r 0cf5897db25a src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Wed Apr 22 16:34:32 2015 -0700 +++ b/src/share/vm/graal/graalJavaAccess.hpp Wed Apr 22 16:42:05 2015 -0700 @@ -273,8 +273,8 @@ class name : AllStatic { \ private: \ friend class GraalCompiler; \ - static void check(oop obj) { \ - assert(obj != NULL, "NULL field access of class " #name); \ + static void check(oop obj, const char* field_name) { \ + assert(obj != NULL, err_msg("NULL field access of %s.%s", #name, field_name)); \ assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected"); \ } \ static void compute_offsets(); \ @@ -283,14 +283,14 @@ #define END_CLASS }; -#define FIELD(name, type, accessor, cast) \ - static int _##name##_offset; \ - static type name(oop obj) { check(obj); return cast obj->accessor(_##name##_offset); } \ - static type name(Handle& obj) { check(obj()); return cast obj->accessor(_##name##_offset); } \ - static type name(jobject obj) { check(JNIHandles::resolve(obj)); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ - static void set_##name(oop obj, type x) { check(obj); obj->accessor##_put(_##name##_offset, x); } \ - static void set_##name(Handle& obj, type x) { check(obj()); obj->accessor##_put(_##name##_offset, x); } \ - static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj)); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } +#define FIELD(name, type, accessor, cast) \ + static int _##name##_offset; \ + static type name(oop obj) { check(obj, #name); return cast obj->accessor(_##name##_offset); } \ + static type name(Handle& obj) { check(obj(), #name); return cast obj->accessor(_##name##_offset); } \ + static type name(jobject obj) { check(JNIHandles::resolve(obj), #name); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ + static void set_##name(oop obj, type x) { check(obj, #name); obj->accessor##_put(_##name##_offset, x); } \ + static void set_##name(Handle& obj, type x) { check(obj(), #name); obj->accessor##_put(_##name##_offset, x); } \ + static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj), #name); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } #define EMPTY_CAST #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field, EMPTY_CAST)