/* * Copyright (c) 2018, 2022, 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. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
// The LIRAddressOpr comprises either a LIRItem or a LIR_Opr to describe elements // of an access in the C1 Access API. Both of them allow asking for the opr() which // will correspond to either _item.result() or _opr if there is no _item. class LIRAddressOpr: public StackObj {
LIRItem* _item;
LIR_Opr _opr; public:
LIRAddressOpr(LIRItem& item) : _item(&item), _opr() {}
LIRAddressOpr(LIR_Opr opr) : _item(NULL), _opr(opr) {}
LIRAddressOpr(const LIRAddressOpr& other) : _item(other._item), _opr(other._opr) {}
// The LIRAccess class wraps shared context parameters required for performing // the right access in C1. This includes the address of the offset and the decorators. class LIRAccess: public StackObj {
LIRGenerator* _gen;
DecoratorSet _decorators;
LIRAddressOpr _base;
LIRAddressOpr _offset;
BasicType _type;
LIR_Opr _resolved_addr;
CodeEmitInfo* _patch_emit_info;
CodeEmitInfo* _access_emit_info;
// The BarrierSetC1 class is the main entry point for the GC backend of the Access API in C1. // It is called by the LIRGenerator::access_* functions, which is the main entry point for // access calls in C1.
class BarrierSetC1: public CHeapObj<mtGC> { protected: virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.