/* * 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. *
*/
void C2Compiler::initialize() {
assert(!CompilerConfig::is_c1_or_interpreter_only_no_jvmci(), "C2 compiler is launched, it's not c1/interpreter only mode"); // The first compiler thread that gets here will initialize the // small amount of global state (and runtime stubs) that C2 needs.
// There is a race possible once at startup and then we're fine
// Note that this is being called from a compiler thread not the // main startup thread. if (should_perform_init()) { bool successful = C2Compiler::init_c2_runtime(); int new_state = (successful) ? initialized : failed;
set_state(new_state);
}
}
void C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci, bool install_code, DirectiveSet* directive) {
assert(is_initialized(), "Compiler thread must be initialized");
bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virtual) {
vmIntrinsics::ID id = method->intrinsic_id();
assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
if (id < vmIntrinsics::FIRST_ID || id > vmIntrinsics::LAST_COMPILER_INLINE) { returnfalse;
}
// Only Object.hashCode and Object.clone intrinsics implement also a virtual // dispatch because calling both methods is expensive but both methods are // frequently overridden. All other intrinsics implement only a non-virtual // dispatch. if (is_virtual) { switch (id) { case vmIntrinsics::_hashCode: case vmIntrinsics::_clone: break; default: returnfalse;
}
}
switch (id) { case vmIntrinsics::_compressStringC: case vmIntrinsics::_compressStringB: if (!Matcher::match_rule_supported(Op_StrCompressedCopy)) returnfalse; break; case vmIntrinsics::_inflateStringC: case vmIntrinsics::_inflateStringB: if (!Matcher::match_rule_supported(Op_StrInflatedCopy)) returnfalse; break; case vmIntrinsics::_compareToL: case vmIntrinsics::_compareToU: case vmIntrinsics::_compareToLU: case vmIntrinsics::_compareToUL: if (!Matcher::match_rule_supported(Op_StrComp)) returnfalse; break; case vmIntrinsics::_equalsL: case vmIntrinsics::_equalsU: if (!Matcher::match_rule_supported(Op_StrEquals)) returnfalse; break; case vmIntrinsics::_equalsB: case vmIntrinsics::_equalsC: if (!Matcher::match_rule_supported(Op_AryEq)) returnfalse; break; case vmIntrinsics::_copyMemory: if (StubRoutines::unsafe_arraycopy() == NULL) returnfalse; break; case vmIntrinsics::_encodeAsciiArray: if (!Matcher::match_rule_supported(Op_EncodeISOArray) || !Matcher::supports_encode_ascii_array) returnfalse; break; case vmIntrinsics::_encodeISOArray: case vmIntrinsics::_encodeByteISOArray: if (!Matcher::match_rule_supported(Op_EncodeISOArray)) returnfalse; break; case vmIntrinsics::_countPositives: if (!Matcher::match_rule_supported(Op_CountPositives)) returnfalse; break; case vmIntrinsics::_bitCount_i: if (!Matcher::match_rule_supported(Op_PopCountI)) returnfalse; break; case vmIntrinsics::_bitCount_l: if (!Matcher::match_rule_supported(Op_PopCountL)) returnfalse; break; case vmIntrinsics::_compress_i: case vmIntrinsics::_compress_l: if (!Matcher::match_rule_supported(Op_CompressBits)) returnfalse; break; case vmIntrinsics::_expand_i: case vmIntrinsics::_expand_l: if (!Matcher::match_rule_supported(Op_ExpandBits)) returnfalse; break; case vmIntrinsics::_numberOfLeadingZeros_i: if (!Matcher::match_rule_supported(Op_CountLeadingZerosI)) returnfalse; break; case vmIntrinsics::_numberOfLeadingZeros_l: if (!Matcher::match_rule_supported(Op_CountLeadingZerosL)) returnfalse; break; case vmIntrinsics::_numberOfTrailingZeros_i: if (!Matcher::match_rule_supported(Op_CountTrailingZerosI)) returnfalse; break; case vmIntrinsics::_numberOfTrailingZeros_l: if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) returnfalse; break; case vmIntrinsics::_reverse_i: if (!Matcher::match_rule_supported(Op_ReverseI)) returnfalse; break; case vmIntrinsics::_reverse_l: if (!Matcher::match_rule_supported(Op_ReverseL)) returnfalse; break; case vmIntrinsics::_reverseBytes_c: if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) returnfalse; break; case vmIntrinsics::_reverseBytes_s: if (!Matcher::match_rule_supported(Op_ReverseBytesS)) returnfalse; break; case vmIntrinsics::_reverseBytes_i: if (!Matcher::match_rule_supported(Op_ReverseBytesI)) returnfalse; break; case vmIntrinsics::_reverseBytes_l: if (!Matcher::match_rule_supported(Op_ReverseBytesL)) returnfalse; break; case vmIntrinsics::_compareUnsigned_i: if (!Matcher::match_rule_supported(Op_CmpU3)) returnfalse; break; case vmIntrinsics::_compareUnsigned_l: if (!Matcher::match_rule_supported(Op_CmpUL3)) returnfalse; break; case vmIntrinsics::_divideUnsigned_i: if (!Matcher::match_rule_supported(Op_UDivI)) returnfalse; break; case vmIntrinsics::_remainderUnsigned_i: if (!Matcher::match_rule_supported(Op_UModI)) returnfalse; break; case vmIntrinsics::_divideUnsigned_l: if (!Matcher::match_rule_supported(Op_UDivL)) returnfalse; break; case vmIntrinsics::_remainderUnsigned_l: if (!Matcher::match_rule_supported(Op_UModL)) returnfalse; break; case vmIntrinsics::_float16ToFloat: if (!Matcher::match_rule_supported(Op_ConvHF2F)) returnfalse; break; case vmIntrinsics::_floatToFloat16: if (!Matcher::match_rule_supported(Op_ConvF2HF)) returnfalse; break;
/* CompareAndSet, Object: */ case vmIntrinsics::_compareAndSetReference: #ifdef _LP64 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapN)) returnfalse; if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) returnfalse; #else if (!Matcher::match_rule_supported(Op_CompareAndSwapP)) returnfalse; #endif break; case vmIntrinsics::_weakCompareAndSetReferencePlain: case vmIntrinsics::_weakCompareAndSetReferenceAcquire: case vmIntrinsics::_weakCompareAndSetReferenceRelease: case vmIntrinsics::_weakCompareAndSetReference: #ifdef _LP64 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) returnfalse; if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) returnfalse; #else if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) returnfalse; #endif break; /* CompareAndSet, Long: */ case vmIntrinsics::_compareAndSetLong: if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) returnfalse; break; case vmIntrinsics::_weakCompareAndSetLongPlain: case vmIntrinsics::_weakCompareAndSetLongAcquire: case vmIntrinsics::_weakCompareAndSetLongRelease: case vmIntrinsics::_weakCompareAndSetLong: if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) returnfalse; break;
/* CompareAndSet, Int: */ case vmIntrinsics::_compareAndSetInt: if (!Matcher::match_rule_supported(Op_CompareAndSwapI)) returnfalse; break; case vmIntrinsics::_weakCompareAndSetIntPlain: case vmIntrinsics::_weakCompareAndSetIntAcquire: case vmIntrinsics::_weakCompareAndSetIntRelease: case vmIntrinsics::_weakCompareAndSetInt: if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapI)) returnfalse; break;
/* CompareAndSet, Byte: */ case vmIntrinsics::_compareAndSetByte: if (!Matcher::match_rule_supported(Op_CompareAndSwapB)) returnfalse; break; case vmIntrinsics::_weakCompareAndSetBytePlain: case vmIntrinsics::_weakCompareAndSetByteAcquire: case vmIntrinsics::_weakCompareAndSetByteRelease: case vmIntrinsics::_weakCompareAndSetByte: if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) returnfalse; break;
/* CompareAndSet, Short: */ case vmIntrinsics::_compareAndSetShort: if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) returnfalse; break; case vmIntrinsics::_weakCompareAndSetShortPlain: case vmIntrinsics::_weakCompareAndSetShortAcquire: case vmIntrinsics::_weakCompareAndSetShortRelease: case vmIntrinsics::_weakCompareAndSetShort: if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) returnfalse; break;
/* CompareAndExchange, Object: */ case vmIntrinsics::_compareAndExchangeReference: case vmIntrinsics::_compareAndExchangeReferenceAcquire: case vmIntrinsics::_compareAndExchangeReferenceRelease: #ifdef _LP64 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeN)) returnfalse; if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeP)) returnfalse; #else if (!Matcher::match_rule_supported(Op_CompareAndExchangeP)) returnfalse; #endif break;
/* CompareAndExchange, Long: */ case vmIntrinsics::_compareAndExchangeLong: case vmIntrinsics::_compareAndExchangeLongAcquire: case vmIntrinsics::_compareAndExchangeLongRelease: if (!Matcher::match_rule_supported(Op_CompareAndExchangeL)) returnfalse; break;
/* CompareAndExchange, Int: */ case vmIntrinsics::_compareAndExchangeInt: case vmIntrinsics::_compareAndExchangeIntAcquire: case vmIntrinsics::_compareAndExchangeIntRelease: if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) returnfalse; break;
/* CompareAndExchange, Byte: */ case vmIntrinsics::_compareAndExchangeByte: case vmIntrinsics::_compareAndExchangeByteAcquire: case vmIntrinsics::_compareAndExchangeByteRelease: if (!Matcher::match_rule_supported(Op_CompareAndExchangeB)) returnfalse; break;
/* CompareAndExchange, Short: */ case vmIntrinsics::_compareAndExchangeShort: case vmIntrinsics::_compareAndExchangeShortAcquire: case vmIntrinsics::_compareAndExchangeShortRelease: if (!Matcher::match_rule_supported(Op_CompareAndExchangeS)) returnfalse; break;
case vmIntrinsics::_getAndAddByte: if (!Matcher::match_rule_supported(Op_GetAndAddB)) returnfalse; break; case vmIntrinsics::_getAndAddShort: if (!Matcher::match_rule_supported(Op_GetAndAddS)) returnfalse; break; case vmIntrinsics::_getAndAddInt: if (!Matcher::match_rule_supported(Op_GetAndAddI)) returnfalse; break; case vmIntrinsics::_getAndAddLong: if (!Matcher::match_rule_supported(Op_GetAndAddL)) returnfalse; break;
case vmIntrinsics::_getAndSetByte: if (!Matcher::match_rule_supported(Op_GetAndSetB)) returnfalse; break; case vmIntrinsics::_getAndSetShort: if (!Matcher::match_rule_supported(Op_GetAndSetS)) returnfalse; break; case vmIntrinsics::_getAndSetInt: if (!Matcher::match_rule_supported(Op_GetAndSetI)) returnfalse; break; case vmIntrinsics::_getAndSetLong: if (!Matcher::match_rule_supported(Op_GetAndSetL)) returnfalse; break; case vmIntrinsics::_getAndSetReference: #ifdef _LP64 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetP)) returnfalse; if (UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetN)) returnfalse; break; #else if (!Matcher::match_rule_supported(Op_GetAndSetP)) returnfalse; break; #endif case vmIntrinsics::_incrementExactI: case vmIntrinsics::_addExactI: if (!Matcher::match_rule_supported(Op_OverflowAddI)) returnfalse; break; case vmIntrinsics::_incrementExactL: case vmIntrinsics::_addExactL: if (!Matcher::match_rule_supported(Op_OverflowAddL)) returnfalse; break; case vmIntrinsics::_decrementExactI: case vmIntrinsics::_subtractExactI: if (!Matcher::match_rule_supported(Op_OverflowSubI)) returnfalse; break; case vmIntrinsics::_decrementExactL: case vmIntrinsics::_subtractExactL: if (!Matcher::match_rule_supported(Op_OverflowSubL)) returnfalse; break; case vmIntrinsics::_negateExactI: if (!Matcher::match_rule_supported(Op_OverflowSubI)) returnfalse; break; case vmIntrinsics::_negateExactL: if (!Matcher::match_rule_supported(Op_OverflowSubL)) returnfalse; break; case vmIntrinsics::_multiplyExactI: if (!Matcher::match_rule_supported(Op_OverflowMulI)) returnfalse; break; case vmIntrinsics::_multiplyExactL: if (!Matcher::match_rule_supported(Op_OverflowMulL)) returnfalse; break; case vmIntrinsics::_multiplyHigh: if (!Matcher::match_rule_supported(Op_MulHiL)) returnfalse; break; case vmIntrinsics::_unsignedMultiplyHigh: if (!Matcher::match_rule_supported(Op_UMulHiL)) returnfalse; break; case vmIntrinsics::_getCallerClass: if (vmClasses::reflect_CallerSensitive_klass() == NULL) returnfalse; break; case vmIntrinsics::_onSpinWait: if (!Matcher::match_rule_supported(Op_OnSpinWait)) returnfalse; break; case vmIntrinsics::_fmaD: if (!UseFMA || !Matcher::match_rule_supported(Op_FmaD)) returnfalse; break; case vmIntrinsics::_fmaF: if (!UseFMA || !Matcher::match_rule_supported(Op_FmaF)) returnfalse; break; case vmIntrinsics::_isDigit: if (!Matcher::match_rule_supported(Op_Digit)) returnfalse; break; case vmIntrinsics::_isLowerCase: if (!Matcher::match_rule_supported(Op_LowerCase)) returnfalse; break; case vmIntrinsics::_isUpperCase: if (!Matcher::match_rule_supported(Op_UpperCase)) returnfalse; break; case vmIntrinsics::_isWhitespace: if (!Matcher::match_rule_supported(Op_Whitespace)) returnfalse; break; case vmIntrinsics::_maxF: case vmIntrinsics::_maxF_strict: if (!Matcher::match_rule_supported(Op_MaxF)) returnfalse; break; case vmIntrinsics::_minF: case vmIntrinsics::_minF_strict: if (!Matcher::match_rule_supported(Op_MinF)) returnfalse; break; case vmIntrinsics::_maxD: case vmIntrinsics::_maxD_strict: if (!Matcher::match_rule_supported(Op_MaxD)) returnfalse; break; case vmIntrinsics::_minD: case vmIntrinsics::_minD_strict: if (!Matcher::match_rule_supported(Op_MinD)) returnfalse; break; case vmIntrinsics::_writeback0: if (!Matcher::match_rule_supported(Op_CacheWB)) returnfalse; break; case vmIntrinsics::_writebackPreSync0: if (!Matcher::match_rule_supported(Op_CacheWBPreSync)) returnfalse; break; case vmIntrinsics::_writebackPostSync0: if (!Matcher::match_rule_supported(Op_CacheWBPostSync)) returnfalse; break; case vmIntrinsics::_rint: case vmIntrinsics::_ceil: case vmIntrinsics::_floor: if (!Matcher::match_rule_supported(Op_RoundDoubleMode)) returnfalse; break; case vmIntrinsics::_dcopySign: if (!Matcher::match_rule_supported(Op_CopySignD)) returnfalse; break; case vmIntrinsics::_fcopySign: if (!Matcher::match_rule_supported(Op_CopySignF)) returnfalse; break; case vmIntrinsics::_dsignum: if (!Matcher::match_rule_supported(Op_SignumD)) returnfalse; break; case vmIntrinsics::_fsignum: if (!Matcher::match_rule_supported(Op_SignumF)) returnfalse; break; case vmIntrinsics::_floatIsInfinite: if (!Matcher::match_rule_supported(Op_IsInfiniteF)) returnfalse; break; case vmIntrinsics::_floatIsFinite: if (!Matcher::match_rule_supported(Op_IsFiniteF)) returnfalse; break; case vmIntrinsics::_doubleIsInfinite: if (!Matcher::match_rule_supported(Op_IsInfiniteD)) returnfalse; break; case vmIntrinsics::_doubleIsFinite: if (!Matcher::match_rule_supported(Op_IsFiniteD)) returnfalse; break; case vmIntrinsics::_hashCode: case vmIntrinsics::_identityHashCode: case vmIntrinsics::_getClass: case vmIntrinsics::_dsin: case vmIntrinsics::_dcos: case vmIntrinsics::_dtan: case vmIntrinsics::_dabs: case vmIntrinsics::_fabs: case vmIntrinsics::_iabs: case vmIntrinsics::_labs: case vmIntrinsics::_datan2: case vmIntrinsics::_dsqrt: case vmIntrinsics::_dsqrt_strict: case vmIntrinsics::_dexp: case vmIntrinsics::_dlog: case vmIntrinsics::_dlog10: case vmIntrinsics::_dpow: case vmIntrinsics::_roundD: case vmIntrinsics::_roundF: case vmIntrinsics::_min: case vmIntrinsics::_max: case vmIntrinsics::_min_strict: case vmIntrinsics::_max_strict: case vmIntrinsics::_arraycopy: case vmIntrinsics::_indexOfL: case vmIntrinsics::_indexOfU: case vmIntrinsics::_indexOfUL: case vmIntrinsics::_indexOfIL: case vmIntrinsics::_indexOfIU: case vmIntrinsics::_indexOfIUL: case vmIntrinsics::_indexOfU_char: case vmIntrinsics::_indexOfL_char: case vmIntrinsics::_toBytesStringU: case vmIntrinsics::_getCharsStringU: case vmIntrinsics::_getCharStringU: case vmIntrinsics::_putCharStringU: case vmIntrinsics::_getReference: case vmIntrinsics::_getBoolean: case vmIntrinsics::_getByte: case vmIntrinsics::_getShort: case vmIntrinsics::_getChar: case vmIntrinsics::_getInt: case vmIntrinsics::_getLong: case vmIntrinsics::_getFloat: case vmIntrinsics::_getDouble: case vmIntrinsics::_putReference: case vmIntrinsics::_putBoolean: case vmIntrinsics::_putByte: case vmIntrinsics::_putShort: case vmIntrinsics::_putChar: case vmIntrinsics::_putInt: case vmIntrinsics::_putLong: case vmIntrinsics::_putFloat: case vmIntrinsics::_putDouble: case vmIntrinsics::_getReferenceVolatile: case vmIntrinsics::_getBooleanVolatile: case vmIntrinsics::_getByteVolatile: case vmIntrinsics::_getShortVolatile: case vmIntrinsics::_getCharVolatile: case vmIntrinsics::_getIntVolatile: case vmIntrinsics::_getLongVolatile: case vmIntrinsics::_getFloatVolatile: case vmIntrinsics::_getDoubleVolatile: case vmIntrinsics::_putReferenceVolatile: case vmIntrinsics::_putBooleanVolatile: case vmIntrinsics::_putByteVolatile: case vmIntrinsics::_putShortVolatile: case vmIntrinsics::_putCharVolatile: case vmIntrinsics::_putIntVolatile: case vmIntrinsics::_putLongVolatile: case vmIntrinsics::_putFloatVolatile: case vmIntrinsics::_putDoubleVolatile: case vmIntrinsics::_getReferenceAcquire: case vmIntrinsics::_getBooleanAcquire: case vmIntrinsics::_getByteAcquire: case vmIntrinsics::_getShortAcquire: case vmIntrinsics::_getCharAcquire: case vmIntrinsics::_getIntAcquire: case vmIntrinsics::_getLongAcquire: case vmIntrinsics::_getFloatAcquire: case vmIntrinsics::_getDoubleAcquire: case vmIntrinsics::_putReferenceRelease: case vmIntrinsics::_putBooleanRelease: case vmIntrinsics::_putByteRelease: case vmIntrinsics::_putShortRelease: case vmIntrinsics::_putCharRelease: case vmIntrinsics::_putIntRelease: case vmIntrinsics::_putLongRelease: case vmIntrinsics::_putFloatRelease: case vmIntrinsics::_putDoubleRelease: case vmIntrinsics::_getReferenceOpaque: case vmIntrinsics::_getBooleanOpaque: case vmIntrinsics::_getByteOpaque: case vmIntrinsics::_getShortOpaque: case vmIntrinsics::_getCharOpaque: case vmIntrinsics::_getIntOpaque: case vmIntrinsics::_getLongOpaque: case vmIntrinsics::_getFloatOpaque: case vmIntrinsics::_getDoubleOpaque: case vmIntrinsics::_putReferenceOpaque: case vmIntrinsics::_putBooleanOpaque: case vmIntrinsics::_putByteOpaque: case vmIntrinsics::_putShortOpaque: case vmIntrinsics::_putCharOpaque: case vmIntrinsics::_putIntOpaque: case vmIntrinsics::_putLongOpaque: case vmIntrinsics::_putFloatOpaque: case vmIntrinsics::_putDoubleOpaque: case vmIntrinsics::_getShortUnaligned: case vmIntrinsics::_getCharUnaligned: case vmIntrinsics::_getIntUnaligned: case vmIntrinsics::_getLongUnaligned: case vmIntrinsics::_putShortUnaligned: case vmIntrinsics::_putCharUnaligned: case vmIntrinsics::_putIntUnaligned: case vmIntrinsics::_putLongUnaligned: case vmIntrinsics::_loadFence: case vmIntrinsics::_storeFence: case vmIntrinsics::_storeStoreFence: case vmIntrinsics::_fullFence: case vmIntrinsics::_currentCarrierThread: case vmIntrinsics::_currentThread: case vmIntrinsics::_setCurrentThread: case vmIntrinsics::_scopedValueCache: case vmIntrinsics::_setScopedValueCache: #ifdef JFR_HAVE_INTRINSICS case vmIntrinsics::_counterTime: case vmIntrinsics::_getEventWriter: #endif case vmIntrinsics::_currentTimeMillis: case vmIntrinsics::_nanoTime: case vmIntrinsics::_allocateInstance: case vmIntrinsics::_allocateUninitializedArray: case vmIntrinsics::_newArray: case vmIntrinsics::_getLength: case vmIntrinsics::_copyOf: case vmIntrinsics::_copyOfRange: case vmIntrinsics::_clone: case vmIntrinsics::_isAssignableFrom: case vmIntrinsics::_isInstance: case vmIntrinsics::_getModifiers: case vmIntrinsics::_isInterface: case vmIntrinsics::_isArray: case vmIntrinsics::_isPrimitive: case vmIntrinsics::_isHidden: case vmIntrinsics::_getSuperclass: case vmIntrinsics::_getClassAccessFlags: case vmIntrinsics::_floatToRawIntBits: case vmIntrinsics::_floatToIntBits: case vmIntrinsics::_intBitsToFloat: case vmIntrinsics::_doubleToRawLongBits: case vmIntrinsics::_doubleToLongBits: case vmIntrinsics::_longBitsToDouble: case vmIntrinsics::_Reference_get: case vmIntrinsics::_Reference_refersTo0: case vmIntrinsics::_PhantomReference_refersTo0: case vmIntrinsics::_Class_cast: case vmIntrinsics::_aescrypt_encryptBlock: case vmIntrinsics::_aescrypt_decryptBlock: case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: case vmIntrinsics::_electronicCodeBook_encryptAESCrypt: case vmIntrinsics::_electronicCodeBook_decryptAESCrypt: case vmIntrinsics::_counterMode_AESCrypt: case vmIntrinsics::_galoisCounterMode_AESCrypt: case vmIntrinsics::_md5_implCompress: case vmIntrinsics::_sha_implCompress: case vmIntrinsics::_sha2_implCompress: case vmIntrinsics::_sha5_implCompress: case vmIntrinsics::_sha3_implCompress: case vmIntrinsics::_digestBase_implCompressMB: case vmIntrinsics::_multiplyToLen: case vmIntrinsics::_squareToLen: case vmIntrinsics::_mulAdd: case vmIntrinsics::_montgomeryMultiply: case vmIntrinsics::_montgomerySquare: case vmIntrinsics::_bigIntegerRightShiftWorker: case vmIntrinsics::_bigIntegerLeftShiftWorker: case vmIntrinsics::_vectorizedMismatch: case vmIntrinsics::_ghash_processBlocks: case vmIntrinsics::_chacha20Block: case vmIntrinsics::_base64_encodeBlock: case vmIntrinsics::_base64_decodeBlock: case vmIntrinsics::_poly1305_processBlocks: case vmIntrinsics::_updateCRC32: case vmIntrinsics::_updateBytesCRC32: case vmIntrinsics::_updateByteBufferCRC32: case vmIntrinsics::_updateBytesCRC32C: case vmIntrinsics::_updateDirectByteBufferCRC32C: case vmIntrinsics::_updateBytesAdler32: case vmIntrinsics::_updateByteBufferAdler32: case vmIntrinsics::_profileBoolean: case vmIntrinsics::_isCompileConstant: case vmIntrinsics::_Preconditions_checkIndex: case vmIntrinsics::_Preconditions_checkLongIndex: case vmIntrinsics::_getObjectSize: break;
case vmIntrinsics::_VectorCompressExpand: case vmIntrinsics::_VectorUnaryOp: case vmIntrinsics::_VectorBinaryOp: case vmIntrinsics::_VectorTernaryOp: case vmIntrinsics::_VectorFromBitsCoerced: case vmIntrinsics::_VectorShuffleIota: case vmIntrinsics::_VectorShuffleToVector: case vmIntrinsics::_VectorLoadOp: case vmIntrinsics::_VectorLoadMaskedOp: case vmIntrinsics::_VectorStoreOp: case vmIntrinsics::_VectorStoreMaskedOp: case vmIntrinsics::_VectorGatherOp: case vmIntrinsics::_VectorScatterOp: case vmIntrinsics::_VectorReductionCoerced: case vmIntrinsics::_VectorTest: case vmIntrinsics::_VectorBlend: case vmIntrinsics::_VectorRearrange: case vmIntrinsics::_VectorCompare: case vmIntrinsics::_VectorBroadcastInt: case vmIntrinsics::_VectorConvert: case vmIntrinsics::_VectorInsert: case vmIntrinsics::_VectorExtract: case vmIntrinsics::_VectorMaskOp: case vmIntrinsics::_IndexVector: return EnableVectorSupport; case vmIntrinsics::_blackhole: break;
default: returnfalse;
} returntrue;
}
int C2Compiler::initial_code_buffer_size(int const_size) { // See Compile::init_scratch_buffer_blob int locs_size = sizeof(relocInfo) * PhaseOutput::MAX_locs_size; int slop = 2 * CodeSection::end_slop(); // space between sections return PhaseOutput::MAX_inst_size + PhaseOutput::MAX_stubs_size + const_size + slop + locs_size;
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
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.