< prev index next >
src/cpu/aarch64/vm/templateTable_aarch64.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2003, 2016, 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
--- 1,7 ----
/*
! * 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,3592 ****
__ 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)));
__ bind(resolved);
// Generate subtype check. Blows r2, r5
// Superklass in r0. Subklass in r3.
--- 3581,3600 ----
__ b(resolved);
// Get superklass in r0 and subklass in r3
__ bind(quicked);
__ load_klass(r3, r0);
! //__ 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 >