--- old/src/cpu/s390/vm/interp_masm_s390.cpp 2017-04-29 08:24:03.277850111 -0700 +++ new/src/cpu/s390/vm/interp_masm_s390.cpp 2017-04-29 08:24:03.121844272 -0700 @@ -1,6 +1,6 @@ /* * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2016 SAP SE. All rights reserved. + * Copyright (c) 2016, 2017 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -387,6 +387,16 @@ load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result); } +// load cpool->resolved_klass_at(index) +void InterpreterMacroAssembler::load_resolved_klass_at_offset(Register cpool, Register offset, Register iklass) { + // int value = *(Rcpool->int_at_addr(which)); + // int resolved_klass_index = extract_low_short_from_int(value); + z_llgh(offset, Address(cpool, offset, sizeof(ConstantPool) + 2)); // offset = resolved_klass_index (s390 is big-endian) + z_sllg(offset, offset, LogBytesPerWord); // Convert 'index' to 'offset' + z_lg(iklass, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes())); // iklass = cpool->_resolved_klasses + z_lg(iklass, Address(iklass, offset, Array::base_offset_in_bytes())); +} + void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset,