< prev index next >
src/cpu/aarch64/vm/templateTable_aarch64.cpp
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. 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
* under the terms of the GNU General Public License version 2 only, as
@@ -3581,12 +3581,20 @@
__ b(resolved);
// Get superklass in r0 and subklass in r3
__ bind(quicked);
__ load_klass(r3, r0);
- __ lea(r0, Address(r2, r19, Address::lsl(3)));
- __ ldr(r0, Address(r0, sizeof(ConstantPool)));
+ //__ load_resolved_klass_at_offset(r2, r19, r0);
+ Register cpool = r2;
+ Register index = r19;
+ Register klass = r0;
+ Register tmp = klass;
+ __ lea(tmp, Address(cpool, index, Address::lsl(3)));
+ __ ldrh(index, Address(tmp, sizeof(ConstantPool))); // index = resolved_klass_index
+ __ ldr(tmp, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes())); // tmp = cpool->_resolved_klasses
+ __ lea(tmp, Address(tmp, index, Address::lsl(3)));
+ __ ldr(klass, Address(tmp, Array<Klass*>::base_offset_in_bytes()));
__ bind(resolved);
// Generate subtype check. Blows r2, r5
// Superklass in r0. Subklass in r3.
< prev index next >