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 und die Messung sind noch experimentell.