--- old/src/hotspot/cpu/x86/interp_masm_x86.hpp 2019-11-27 16:55:42.239945310 +0100 +++ new/src/hotspot/cpu/x86/interp_masm_x86.hpp 2019-11-27 16:55:42.095942786 +0100 @@ -227,7 +227,7 @@ void allocate_instance(Register klass, Register new_obj, Register t1, Register t2, bool clear_fields, Label& alloc_failed); - // Allocate value buffer in new_obj and read in flattened field + // Allocate value buffer in "obj" and read in flattened field // NOTES: // - input holder object via "obj", which must be rax, // will return new value buffer obj via the same reg @@ -237,6 +237,15 @@ Register field_index, Register field_offset, Register obj = rax); + // Allocate value buffer in "obj" and read in flattened element at the given index + // NOTES: + // - Return via "obj" must be rax + // - kills all given regs + // - 32 bits: kills rdi and rsi + void read_flattened_element(Register array, Register index, + Register t1, Register t2, + Register obj = rax); + // Object locking void lock_object (Register lock_reg); void unlock_object(Register lock_reg);