< prev index next >

src/hotspot/share/c1/c1_Instruction.cpp

Print this page

*** 1,7 **** /* ! * Copyright (c) 1999, 2017, Oracle and/or its affiliates. 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 * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1999, 2019, Oracle and/or its affiliates. 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 * published by the Free Software Foundation.
*** 255,264 **** --- 255,274 ---- assert(array_type->is_array_klass(), "what else?"); ciArrayKlass* ak = (ciArrayKlass*)array_type; return ak->element_type(); } + bool StoreIndexed::is_exact_flattened_array_store() const { + if (array()->is_loaded_flattened_array() && value()->as_Constant() == NULL) { + ciKlass* element_klass = array()->declared_type()->as_value_array_klass()->element_klass(); + ciKlass* actual_klass = value()->declared_type()->as_klass(); + if (element_klass == actual_klass) { + return true; + } + } + return false; + } ciType* LoadField::declared_type() const { return field()->type(); }
< prev index next >