/* * Copyright (c) 1999, 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. *
*/
class CompilationResourceObj; class XHandlers; class ExceptionInfo; class DebugInformationRecorder; class FrameMap; class IR; class IRScope; class Instruction; class LinearScan; class OopMap; class LIR_Emitter; class LIR_Assembler; class CodeEmitInfo; class ciEnv; class ciMethod; class ValueStack; class C1_MacroAssembler; class CFGPrinter; class CFGPrinterOutput;
Instruction* _current_instruction; // the instruction currently being processed #ifndef PRODUCT
Instruction* _last_instruction_printed; // the last instruction printed during traversal
CFGPrinterOutput* _cfg_printer_output; #endif// PRODUCT
// will compilation make optimistic assumptions that might lead to // deoptimization and that the runtime will account for? bool is_optimistic() { return CompilerConfig::is_c1_only_no_jvmci() && !is_profiling() &&
(RangeCheckElimination || UseLoopInvariantCodeMotion) &&
method()->method_data()->trap_count(Deoptimization::Reason_none) == 0;
}
ciKlass* cha_exact_type(ciType* type);
// Dump inlining replay data to the stream. void dump_inline_data(outputStream* out) { /* do nothing now */ }
// How much stack space would the interpreter need in case of a // deoptimization (worst case) void update_interpreter_frame_size(int size) { if (_interpreter_frame_size < size) {
_interpreter_frame_size = size;
}
}
int interpreter_frame_size() const { return _interpreter_frame_size;
}
};
// Macro definitions for unified bailout-support // The methods bailout() and bailed_out() are present in all classes // that might bailout, but forward all calls to Compilation #define BAILOUT(msg) { bailout(msg); return; } #define BAILOUT_(msg, res) { bailout(msg); return res; }
#define CHECK_BAILOUT() { if (bailed_out()) return; } #define CHECK_BAILOUT_(res) { if (bailed_out()) return res; }
// BAILOUT check with reset of bound labels #define CHECK_BAILOUT1(l1) { if (bailed_out()) { l1.reset(); return; } } #define CHECK_BAILOUT2(l1, l2) { if (bailed_out()) { l1.reset(); l2.reset(); return; } } #define CHECK_BAILOUT3(l1, l2, l3) { if (bailed_out()) { l1.reset(); l2.reset(); l3.reset(); return; } }
class InstructionMark: public StackObj { private:
Compilation* _compilation;
Instruction* _previous;
//---------------------------------------------------------------------- // Base class for objects allocated by the compiler in the compilation arena class CompilationResourceObj { public: void* operatornew(size_t size) throw() { return Compilation::current()->arena()->Amalloc(size); } void* operatornew(size_t size, Arena* arena) throw() { return arena->Amalloc(size);
} voidoperatordelete(void* p) {} // nothing to do
//---------------------------------------------------------------------- // Class for aggregating exception handler information.
// Effectively extends XHandlers class with PC offset of // potentially exception-throwing instruction. // This class is used at the end of the compilation to build the // ExceptionHandlerTable. class ExceptionInfo: public CompilationResourceObj { private: int _pco; // PC of potentially exception-throwing instruction
XHandlers* _exception_handlers; // flat list of exception handlers covering this PC
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 ist noch experimentell.