c2compiler.cpp revision 9248:6ab7e19c9220
1139804Simp/* 226156Sse * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. 326156Sse * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 426156Sse * 526156Sse * This code is free software; you can redistribute it and/or modify it 626156Sse * under the terms of the GNU General Public License version 2 only, as 726156Sse * published by the Free Software Foundation. 826156Sse * 926156Sse * This code is distributed in the hope that it will be useful, but WITHOUT 1026156Sse * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1126156Sse * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1226156Sse * version 2 for more details (a copy is included in the LICENSE file that 1326156Sse * accompanied this code). 1426156Sse * 1526156Sse * You should have received a copy of the GNU General Public License version 1626156Sse * 2 along with this work; if not, write to the Free Software Foundation, 1726156Sse * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1826156Sse * 1926156Sse * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2026156Sse * or visit www.oracle.com if you need additional information or have any 2126156Sse * questions. 2226156Sse * 2326156Sse */ 2426156Sse 2526156Sse#include "precompiled.hpp" 2626156Sse#include "opto/c2compiler.hpp" 27116182Sobrien#include "opto/compile.hpp" 28116182Sobrien#include "opto/optoreg.hpp" 2936887Sdfr#include "opto/output.hpp" 30121482Sjhb#include "opto/runtime.hpp" 31121482Sjhb 3241059Speter// register information defined by ADLC 3365822Sjhbextern const char register_save_policy[]; 34110860Salfredextern const int register_save_type[]; 3565822Sjhb 3641059Speterconst char* C2Compiler::retry_no_subsuming_loads() { 3766698Sjhb return "retry without subsuming loads"; 3866698Sjhb} 3966698Sjhbconst char* C2Compiler::retry_no_escape_analysis() { 4066698Sjhb return "retry without escape analysis"; 41130128Sbde} 4274914Sjhbconst char* C2Compiler::retry_class_loading_during_parsing() { 4326156Sse return "retry class loading during parsing"; 4467365Sjhb} 4566698Sjhbbool C2Compiler::init_c2_runtime() { 4672759Sjhb 4772237Sjhb // Check assumptions used while running ADLC 48139451Sjhb Compile::adlc_verification(); 4977582Stmm assert(REG_COUNT <= ConcreteRegisterImpl::number_of_registers, "incompatible register counts"); 5066698Sjhb 5166698Sjhb for (int i = 0; i < ConcreteRegisterImpl::number_of_registers ; i++ ) { 5266698Sjhb OptoReg::vm2opto[i] = OptoReg::Bad; 5366698Sjhb } 5467551Sjhb 5572237Sjhb for( OptoReg::Name i=OptoReg::Name(0); i<OptoReg::Name(REG_COUNT); i = OptoReg::add(i,1) ) { 56121482Sjhb VMReg r = OptoReg::as_VMReg(i); 57121482Sjhb if (r->is_valid()) { 58121482Sjhb OptoReg::vm2opto[r->value()] = i; 59121482Sjhb } 6026156Sse } 61151658Sjhb 62151658Sjhb // Check that runtime and architecture description agree on callee-saved-floats 63151658Sjhb bool callee_saved_floats = false; 64151658Sjhb for( OptoReg::Name i=OptoReg::Name(0); i<OptoReg::Name(_last_Mach_Reg); i = OptoReg::add(i,1) ) { 65151658Sjhb // Is there a callee-saved float or double? 66151658Sjhb if( register_save_policy[i] == 'E' /* callee-saved */ && 67151658Sjhb (register_save_type[i] == Op_RegF || register_save_type[i] == Op_RegD) ) { 68151658Sjhb callee_saved_floats = true; 6972759Sjhb } 7072759Sjhb } 71151658Sjhb 72151658Sjhb DEBUG_ONLY( Node::init_NodeProperty(); ) 73151658Sjhb 74151658Sjhb Compile::pd_compiler2_init(); 75151658Sjhb 76151658Sjhb CompilerThread* thread = CompilerThread::current(); 77151658Sjhb 78151658Sjhb HandleMark handle_mark(thread); 79151658Sjhb return OptoRuntime::generate(thread->env()); 80151658Sjhb} 81128339Sbde 82128339Sbdevoid C2Compiler::initialize() { 83173004Sjulian // The first compiler thread that gets here will initialize the 8438244Sbde // small amount of global state (and runtime stubs) that C2 needs. 8572237Sjhb 8672237Sjhb // There is a race possible once at startup and then we're fine 87168850Snjl 88128331Sjhb // Note that this is being called from a compiler thread not the 89128331Sjhb // main startup thread. 90128331Sjhb if (should_perform_init()) { 91128339Sbde bool successful = C2Compiler::init_c2_runtime(); 92151658Sjhb int new_state = (successful) ? initialized : failed; 93151658Sjhb set_state(new_state); 94128331Sjhb } 95151658Sjhb} 96169320Spiso 97169320Spisovoid C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) { 98169320Spiso assert(is_initialized(), "Compiler thread must be initialized"); 99169320Spiso 100151658Sjhb bool subsume_loads = SubsumeLoads; 101169320Spiso bool do_escape_analysis = DoEscapeAnalysis && !env->should_retain_local_variables(); 102151658Sjhb bool eliminate_boxing = EliminateAutoBox; 103169320Spiso while (!env->failing()) { 104169320Spiso // Attempt to compile while subsuming loads into machine instructions. 105169320Spiso Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing); 106169320Spiso 107169320Spiso // Check result and retry if appropriate. 108169320Spiso if (C.failure_reason() != NULL) { 109128339Sbde if (C.failure_reason_is(retry_class_loading_during_parsing())) { 110151658Sjhb env->report_failure(C.failure_reason()); 111128339Sbde continue; // retry 112128339Sbde } 113165124Sjhb if (C.failure_reason_is(retry_no_subsuming_loads())) { 11472237Sjhb assert(subsume_loads, "must make progress"); 115151658Sjhb subsume_loads = false; 11665822Sjhb env->report_failure(C.failure_reason()); 11772237Sjhb continue; // retry 11865822Sjhb } 11972237Sjhb if (C.failure_reason_is(retry_no_escape_analysis())) { 12078365Speter assert(do_escape_analysis, "must make progress"); 12165822Sjhb do_escape_analysis = false; 12272237Sjhb env->report_failure(C.failure_reason()); 12365822Sjhb continue; // retry 12465822Sjhb } 12565822Sjhb if (C.has_boxed_value()) { 12665822Sjhb // Recompile without boxing elimination regardless failure reason. 12765822Sjhb assert(eliminate_boxing, "must make progress"); 12865822Sjhb eliminate_boxing = false; 12965822Sjhb env->report_failure(C.failure_reason()); 13065822Sjhb continue; // retry 13165822Sjhb } 13265822Sjhb // Pass any other failure reason up to the ciEnv. 13365822Sjhb // Note that serious, irreversible failures are already logged 13465822Sjhb // on the ciEnv via env->record_method_not_compilable(). 13565822Sjhb env->record_failure(C.failure_reason()); 13665822Sjhb } 13765822Sjhb if (StressRecompilation) { 13878365Speter if (subsume_loads) { 13978365Speter subsume_loads = false; 14078365Speter continue; // retry 14172237Sjhb } 14272237Sjhb if (do_escape_analysis) { 14372237Sjhb do_escape_analysis = false; 14465822Sjhb continue; // retry 14565822Sjhb } 14665822Sjhb } 14765822Sjhb 14872237Sjhb // print inlining for last compilation only 149151658Sjhb C.dump_print_inlining(); 15065822Sjhb 15165822Sjhb // No retry; just break the loop. 15265822Sjhb break; 15365822Sjhb } 15465822Sjhb} 15572237Sjhb 156151658Sjhbvoid C2Compiler::print_timers() { 15772237Sjhb Compile::print_timers(); 15872237Sjhb} 159151658Sjhb 16072237Sjhbbool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virtual) { 161151658Sjhb vmIntrinsics::ID id = method->intrinsic_id(); 16283366Sjulian assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 163151658Sjhb 16467551Sjhb if (id < vmIntrinsics::FIRST_ID || id > vmIntrinsics::LAST_COMPILER_INLINE) { 165151658Sjhb return false; 166151658Sjhb } 16772237Sjhb 168151658Sjhb // Only Object.hashCode and Object.clone intrinsics implement also a virtual 169151658Sjhb // dispatch because calling both methods is expensive but both methods are 170151658Sjhb // frequently overridden. All other intrinsics implement only a non-virtual 171151658Sjhb // dispatch. 172151658Sjhb if (is_virtual) { 173105354Srobert switch (id) { 174151658Sjhb case vmIntrinsics::_hashCode: 175173004Sjulian case vmIntrinsics::_clone: 176170307Sjeff break; 177151658Sjhb default: 178170307Sjeff return false; 179151658Sjhb } 180151658Sjhb } 181151658Sjhb 182151658Sjhb switch (id) { 183151658Sjhb case vmIntrinsics::_compareTo: 184151658Sjhb if (!Matcher::match_rule_supported(Op_StrComp)) return false; 185151658Sjhb break; 186151658Sjhb case vmIntrinsics::_equals: 187151658Sjhb if (!Matcher::match_rule_supported(Op_StrEquals)) return false; 188151658Sjhb break; 189151658Sjhb case vmIntrinsics::_equalsC: 190151658Sjhb if (!Matcher::match_rule_supported(Op_AryEq)) return false; 191151658Sjhb break; 192151658Sjhb case vmIntrinsics::_copyMemory: 193151658Sjhb if (StubRoutines::unsafe_arraycopy() == NULL) return false; 194151658Sjhb break; 195137267Sjhb case vmIntrinsics::_encodeISOArray: 196151658Sjhb if (!Matcher::match_rule_supported(Op_EncodeISOArray)) return false; 197151658Sjhb break; 198151658Sjhb case vmIntrinsics::_bitCount_i: 199151658Sjhb if (!Matcher::match_rule_supported(Op_PopCountI)) return false; 200151658Sjhb break; 201151658Sjhb case vmIntrinsics::_bitCount_l: 202151658Sjhb if (!Matcher::match_rule_supported(Op_PopCountL)) return false; 203151658Sjhb break; 204151658Sjhb case vmIntrinsics::_numberOfLeadingZeros_i: 205137267Sjhb if (!Matcher::match_rule_supported(Op_CountLeadingZerosI)) return false; 206137267Sjhb break; 207137267Sjhb case vmIntrinsics::_numberOfLeadingZeros_l: 208151658Sjhb if (!Matcher::match_rule_supported(Op_CountLeadingZerosL)) return false; 209137267Sjhb break; 210151658Sjhb case vmIntrinsics::_numberOfTrailingZeros_i: 211151658Sjhb if (!Matcher::match_rule_supported(Op_CountTrailingZerosI)) return false; 212151658Sjhb break; 213151658Sjhb case vmIntrinsics::_numberOfTrailingZeros_l: 214151658Sjhb if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) return false; 215151658Sjhb break; 216151658Sjhb case vmIntrinsics::_reverseBytes_c: 217137267Sjhb if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) return false; 218151658Sjhb break; 219151658Sjhb case vmIntrinsics::_reverseBytes_s: 220151658Sjhb if (!Matcher::match_rule_supported(Op_ReverseBytesS)) return false; 221151658Sjhb break; 222151658Sjhb case vmIntrinsics::_reverseBytes_i: 223151658Sjhb if (!Matcher::match_rule_supported(Op_ReverseBytesI)) return false; 224151658Sjhb break; 225151658Sjhb case vmIntrinsics::_reverseBytes_l: 226151658Sjhb if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false; 22772237Sjhb break; 228151658Sjhb case vmIntrinsics::_compareAndSwapObject: 22972237Sjhb#ifdef _LP64 230151658Sjhb if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) return false; 231151658Sjhb#endif 232151658Sjhb break; 233151658Sjhb case vmIntrinsics::_compareAndSwapLong: 234151658Sjhb if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false; 235151658Sjhb break; 236151658Sjhb case vmIntrinsics::_getAndAddInt: 237151658Sjhb if (!Matcher::match_rule_supported(Op_GetAndAddI)) return false; 23872237Sjhb break; 23972237Sjhb case vmIntrinsics::_getAndAddLong: 240169320Spiso if (!Matcher::match_rule_supported(Op_GetAndAddL)) return false; 24172237Sjhb break; 242151658Sjhb case vmIntrinsics::_getAndSetInt: 243151658Sjhb if (!Matcher::match_rule_supported(Op_GetAndSetI)) return false; 24466698Sjhb break; 245151658Sjhb case vmIntrinsics::_getAndSetLong: 24672237Sjhb if (!Matcher::match_rule_supported(Op_GetAndSetL)) return false; 24772237Sjhb break; 248151658Sjhb case vmIntrinsics::_getAndSetObject: 249151658Sjhb#ifdef _LP64 25072759Sjhb if (!UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetP)) return false; 251151658Sjhb if (UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetN)) return false; 252151658Sjhb break; 253151658Sjhb#else 254151658Sjhb if (!Matcher::match_rule_supported(Op_GetAndSetP)) return false; 255151658Sjhb break; 256151658Sjhb#endif 25772759Sjhb case vmIntrinsics::_incrementExactI: 25872237Sjhb case vmIntrinsics::_addExactI: 259151658Sjhb if (!Matcher::match_rule_supported(Op_OverflowAddI)) return false; 26072237Sjhb break; 261151658Sjhb case vmIntrinsics::_incrementExactL: 262151658Sjhb case vmIntrinsics::_addExactL: 263151658Sjhb if (!Matcher::match_rule_supported(Op_OverflowAddL)) return false; 264151658Sjhb break; 265151658Sjhb case vmIntrinsics::_decrementExactI: 266151658Sjhb case vmIntrinsics::_subtractExactI: 267151658Sjhb if (!Matcher::match_rule_supported(Op_OverflowSubI)) return false; 268151658Sjhb break; 269151658Sjhb case vmIntrinsics::_decrementExactL: 270169320Spiso case vmIntrinsics::_subtractExactL: 271169320Spiso if (!Matcher::match_rule_supported(Op_OverflowSubL)) return false; 272169320Spiso break; 273169320Spiso case vmIntrinsics::_negateExactI: 274169320Spiso if (!Matcher::match_rule_supported(Op_OverflowSubI)) return false; 275169320Spiso break; 276169320Spiso case vmIntrinsics::_negateExactL: 277169320Spiso if (!Matcher::match_rule_supported(Op_OverflowSubL)) return false; 27872237Sjhb break; 279169320Spiso case vmIntrinsics::_multiplyExactI: 280169320Spiso if (!Matcher::match_rule_supported(Op_OverflowMulI)) return false; 281169320Spiso break; 282169320Spiso case vmIntrinsics::_multiplyExactL: 283169320Spiso if (!Matcher::match_rule_supported(Op_OverflowMulL)) return false; 284169320Spiso break; 285169320Spiso case vmIntrinsics::_getCallerClass: 286169320Spiso if (SystemDictionary::reflect_CallerSensitive_klass() == NULL) return false; 287169320Spiso break; 288169320Spiso case vmIntrinsics::_hashCode: 289169320Spiso case vmIntrinsics::_identityHashCode: 290169320Spiso case vmIntrinsics::_getClass: 291169320Spiso case vmIntrinsics::_dsin: 292169320Spiso case vmIntrinsics::_dcos: 293169320Spiso case vmIntrinsics::_dtan: 294169320Spiso case vmIntrinsics::_dabs: 295169320Spiso case vmIntrinsics::_datan2: 296169320Spiso case vmIntrinsics::_dsqrt: 297169320Spiso case vmIntrinsics::_dexp: 298169320Spiso case vmIntrinsics::_dlog: 299169320Spiso case vmIntrinsics::_dlog10: 300169320Spiso case vmIntrinsics::_dpow: 301169320Spiso case vmIntrinsics::_min: 302169320Spiso case vmIntrinsics::_max: 303169320Spiso case vmIntrinsics::_arraycopy: 304169320Spiso case vmIntrinsics::_indexOf: 305151658Sjhb case vmIntrinsics::_getObject: 306151658Sjhb case vmIntrinsics::_getBoolean: 307151658Sjhb case vmIntrinsics::_getByte: 308151658Sjhb case vmIntrinsics::_getShort: 309151658Sjhb case vmIntrinsics::_getChar: 310151658Sjhb case vmIntrinsics::_getInt: 311151658Sjhb case vmIntrinsics::_getLong: 312151658Sjhb case vmIntrinsics::_getFloat: 313151658Sjhb case vmIntrinsics::_getDouble: 314151658Sjhb case vmIntrinsics::_putObject: 315151658Sjhb case vmIntrinsics::_putBoolean: 316151658Sjhb case vmIntrinsics::_putByte: 317157728Sjhb case vmIntrinsics::_putShort: 318157728Sjhb case vmIntrinsics::_putChar: 319157728Sjhb case vmIntrinsics::_putInt: 320157728Sjhb case vmIntrinsics::_putLong: 321157728Sjhb case vmIntrinsics::_putFloat: 322157728Sjhb case vmIntrinsics::_putDouble: 323151658Sjhb case vmIntrinsics::_getByte_raw: 324151658Sjhb case vmIntrinsics::_getShort_raw: 325151658Sjhb case vmIntrinsics::_getChar_raw: 326151658Sjhb case vmIntrinsics::_getInt_raw: 327151658Sjhb case vmIntrinsics::_getLong_raw: 328151658Sjhb case vmIntrinsics::_getFloat_raw: 329169320Spiso case vmIntrinsics::_getDouble_raw: 330151658Sjhb case vmIntrinsics::_getAddress_raw: 331151658Sjhb case vmIntrinsics::_putByte_raw: 332151658Sjhb case vmIntrinsics::_putShort_raw: 333151658Sjhb case vmIntrinsics::_putChar_raw: 334151658Sjhb case vmIntrinsics::_putInt_raw: 335151658Sjhb case vmIntrinsics::_putLong_raw: 336151658Sjhb case vmIntrinsics::_putFloat_raw: 337151658Sjhb case vmIntrinsics::_putDouble_raw: 338151658Sjhb case vmIntrinsics::_putAddress_raw: 339173004Sjulian case vmIntrinsics::_getObjectVolatile: 340173004Sjulian case vmIntrinsics::_getBooleanVolatile: 341173051Sjulian case vmIntrinsics::_getByteVolatile: 342151658Sjhb case vmIntrinsics::_getShortVolatile: 343172836Sjulian case vmIntrinsics::_getCharVolatile: 344170307Sjeff case vmIntrinsics::_getIntVolatile: 345164936Sjulian case vmIntrinsics::_getLongVolatile: 346103216Sjulian case vmIntrinsics::_getFloatVolatile: 347170307Sjeff case vmIntrinsics::_getDoubleVolatile: 348151658Sjhb case vmIntrinsics::_putObjectVolatile: 349151658Sjhb case vmIntrinsics::_putBooleanVolatile: 350151658Sjhb case vmIntrinsics::_putByteVolatile: 351151658Sjhb case vmIntrinsics::_putShortVolatile: 35272237Sjhb case vmIntrinsics::_putCharVolatile: 353169320Spiso case vmIntrinsics::_putIntVolatile: 354169320Spiso case vmIntrinsics::_putLongVolatile: 355169320Spiso case vmIntrinsics::_putFloatVolatile: 356169320Spiso case vmIntrinsics::_putDoubleVolatile: 357169320Spiso case vmIntrinsics::_getShortUnaligned: 358169320Spiso case vmIntrinsics::_getCharUnaligned: 359169320Spiso case vmIntrinsics::_getIntUnaligned: 36072237Sjhb case vmIntrinsics::_getLongUnaligned: 361169320Spiso case vmIntrinsics::_putShortUnaligned: 362169320Spiso case vmIntrinsics::_putCharUnaligned: 363173004Sjulian case vmIntrinsics::_putIntUnaligned: 364173004Sjulian case vmIntrinsics::_putLongUnaligned: 365173051Sjulian case vmIntrinsics::_compareAndSwapInt: 366169320Spiso case vmIntrinsics::_putOrderedObject: 367172836Sjulian case vmIntrinsics::_putOrderedInt: 368170307Sjeff case vmIntrinsics::_putOrderedLong: 369169320Spiso case vmIntrinsics::_loadFence: 370169320Spiso case vmIntrinsics::_storeFence: 371170307Sjeff case vmIntrinsics::_fullFence: 372169320Spiso case vmIntrinsics::_currentThread: 373169320Spiso case vmIntrinsics::_isInterrupted: 374169320Spiso#ifdef TRACE_HAVE_INTRINSICS 375169320Spiso case vmIntrinsics::_classID: 376169320Spiso case vmIntrinsics::_threadID: 377169320Spiso case vmIntrinsics::_counterTime: 378169320Spiso#endif 379151658Sjhb case vmIntrinsics::_currentTimeMillis: 380151658Sjhb case vmIntrinsics::_nanoTime: 38172237Sjhb case vmIntrinsics::_allocateInstance: 38283366Sjulian case vmIntrinsics::_newArray: 38372237Sjhb case vmIntrinsics::_getLength: 384157784Sscottl case vmIntrinsics::_copyOf: 385151658Sjhb case vmIntrinsics::_copyOfRange: 386170307Sjeff case vmIntrinsics::_clone: 38776771Sjhb case vmIntrinsics::_isAssignableFrom: 388103216Sjulian case vmIntrinsics::_isInstance: 389103216Sjulian case vmIntrinsics::_getModifiers: 390166188Sjeff case vmIntrinsics::_isInterface: 39172237Sjhb case vmIntrinsics::_isArray: 392170307Sjeff case vmIntrinsics::_isPrimitive: 39372237Sjhb case vmIntrinsics::_getSuperclass: 39472237Sjhb case vmIntrinsics::_getClassAccessFlags: 395169320Spiso case vmIntrinsics::_floatToRawIntBits: 39672237Sjhb case vmIntrinsics::_floatToIntBits: 397151658Sjhb case vmIntrinsics::_intBitsToFloat: 398166901Spiso case vmIntrinsics::_doubleToRawLongBits: 399166901Spiso case vmIntrinsics::_doubleToLongBits: 40072237Sjhb case vmIntrinsics::_longBitsToDouble: 401151658Sjhb case vmIntrinsics::_Reference_get: 402151658Sjhb case vmIntrinsics::_Class_cast: 40372237Sjhb case vmIntrinsics::_aescrypt_encryptBlock: 404166901Spiso case vmIntrinsics::_aescrypt_decryptBlock: 40572237Sjhb case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: 40672237Sjhb case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: 407151658Sjhb case vmIntrinsics::_sha_implCompress: 408151658Sjhb case vmIntrinsics::_sha2_implCompress: 409166901Spiso case vmIntrinsics::_sha5_implCompress: 41072237Sjhb case vmIntrinsics::_digestBase_implCompressMB: 41172237Sjhb case vmIntrinsics::_multiplyToLen: 41272237Sjhb case vmIntrinsics::_squareToLen: 413151658Sjhb case vmIntrinsics::_mulAdd: 41472237Sjhb case vmIntrinsics::_montgomeryMultiply: 415166901Spiso case vmIntrinsics::_montgomerySquare: 41672237Sjhb case vmIntrinsics::_ghash_processBlocks: 41772237Sjhb case vmIntrinsics::_updateCRC32: 41872237Sjhb case vmIntrinsics::_updateBytesCRC32: 41972237Sjhb case vmIntrinsics::_updateByteBufferCRC32: 42072237Sjhb case vmIntrinsics::_updateBytesCRC32C: 42172237Sjhb case vmIntrinsics::_updateDirectByteBufferCRC32C: 422151658Sjhb case vmIntrinsics::_updateBytesAdler32: 423151658Sjhb case vmIntrinsics::_updateByteBufferAdler32: 424151658Sjhb case vmIntrinsics::_profileBoolean: 425151658Sjhb case vmIntrinsics::_isCompileConstant: 426151658Sjhb break; 427151658Sjhb default: 428151658Sjhb return false; 429151658Sjhb } 430151658Sjhb return true; 431122002Sjhb} 43272237Sjhb 433151658Sjhbint C2Compiler::initial_code_buffer_size() { 434151658Sjhb assert(SegmentedCodeCache, "Should be only used with a segmented code cache"); 435151658Sjhb return Compile::MAX_inst_size + Compile::MAX_locs_size + initial_const_capacity; 436151658Sjhb} 437151658Sjhb