< 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 >