# HG changeset patch # User goetz # Date 1572358099 -3600 # Node ID 8c0e8cff877ff89b124a8e9a7ff42e1e6193c9a6 # Parent c440a6b4e096616d41f74f7c7c2a627ab7445eb5 8232921: assert(is_object_aligned(result)) failed: address not aligned Reviewed-by: coleenp, rschmelter diff -r c440a6b4e096 -r 8c0e8cff877f src/hotspot/share/classfile/javaClasses.cpp --- a/src/hotspot/share/classfile/javaClasses.cpp Thu Oct 31 19:32:41 2019 +0000 +++ b/src/hotspot/share/classfile/javaClasses.cpp Tue Oct 29 15:08:19 2019 +0100 @@ -1962,6 +1962,8 @@ // This class provides a simple wrapper over the internal structure of // exception backtrace to insulate users of the backtrace from needing // to know what it looks like. +// The code of this class is not GC safe. Allocations can only happen +// in expand(). class BacktraceBuilder: public StackObj { friend class BacktraceIterator; private: @@ -2110,10 +2112,14 @@ void set_has_hidden_top_frame(TRAPS) { if (_has_hidden_top_frame == NULL) { - jvalue prim; - prim.z = 1; - PauseNoSafepointVerifier pnsv(&_nsv); - _has_hidden_top_frame = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK); + // It would be nice to add java/lang/Boolean::TRUE here + // to indicate that this backtrace has a hidden top frame. + // But this code is used before TRUE is allocated. + // Therefor let's just use an arbitrary legal oop + // available right here. We only test for != null + // anyways. _methods is a short[]. + assert(_methods != NULL, "we need a legal oop"); + _has_hidden_top_frame = _methods; _head->obj_at_put(trace_hidden_offset, _has_hidden_top_frame); } }