< prev index next >

src/hotspot/share/adlc/formssel.cpp

Print this page

        

*** 639,664 **** } return (USE_of_memory && !DEF_of_memory); } - bool InstructForm::is_wide_memory_kill(FormDict &globals) const { - if( _matrule == NULL ) return false; - if( !_matrule->_opType ) return false; - - if( strcmp(_matrule->_opType,"MemBarRelease") == 0 ) return true; - if( strcmp(_matrule->_opType,"MemBarAcquire") == 0 ) return true; - if( strcmp(_matrule->_opType,"MemBarReleaseLock") == 0 ) return true; - if( strcmp(_matrule->_opType,"MemBarAcquireLock") == 0 ) return true; - if( strcmp(_matrule->_opType,"MemBarStoreStore") == 0 ) return true; - if( strcmp(_matrule->_opType,"MemBarVolatile") == 0 ) return true; - if( strcmp(_matrule->_opType,"StoreFence") == 0 ) return true; - if( strcmp(_matrule->_opType,"LoadFence") == 0 ) return true; - - return false; - } - int InstructForm::memory_operand(FormDict &globals) const { // Machine independent loads must be checked for anti-dependences // Check if instruction has a USE of a memory operand class, or a def. int USE_of_memory = 0; int DEF_of_memory = 0; --- 639,648 ----
*** 788,799 **** !strcmp(_matrule->_rChild->_opType,"LoadNKlass") || !strcmp(_matrule->_rChild->_opType,"CreateEx") || // type of exception !strcmp(_matrule->_rChild->_opType,"CheckCastPP") || !strcmp(_matrule->_rChild->_opType,"GetAndSetP") || !strcmp(_matrule->_rChild->_opType,"GetAndSetN") || !strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") || ! !strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true; else if ( is_ideal_load() == Form::idealP ) return true; else if ( is_ideal_store() != Form::none ) return true; if (needs_base_oop_edge(globals)) return true; --- 772,788 ---- !strcmp(_matrule->_rChild->_opType,"LoadNKlass") || !strcmp(_matrule->_rChild->_opType,"CreateEx") || // type of exception !strcmp(_matrule->_rChild->_opType,"CheckCastPP") || !strcmp(_matrule->_rChild->_opType,"GetAndSetP") || !strcmp(_matrule->_rChild->_opType,"GetAndSetN") || + #if INCLUDE_SHENANDOAHGC + !strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeP") || + !strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeN") || + !strcmp(_matrule->_rChild->_opType,"ShenandoahReadBarrier") || + #endif !strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") || ! !strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true; else if ( is_ideal_load() == Form::idealP ) return true; else if ( is_ideal_store() != Form::none ) return true; if (needs_base_oop_edge(globals)) return true;
*** 1171,1180 **** --- 1160,1172 ---- return "MachFastLockNode"; } else if (is_ideal_nop()) { return "MachNopNode"; } + else if (is_ideal_membar()) { + return "MachMemBarNode"; + } else if (is_ideal_jump()) { return "MachJumpNode"; } else if (is_mach_constant()) { return "MachConstantNode";
*** 3513,3522 **** --- 3505,3515 ---- "CompareAndExchangeB", "CompareAndExchangeS", "CompareAndExchangeI", "CompareAndExchangeL", "CompareAndExchangeP", "CompareAndExchangeN", "StoreCM", "ClearArray", "GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP", "GetAndAddB", "GetAndAddS", "GetAndAddL", "GetAndSetL", "GetAndSetN", + "ShenandoahReadBarrier", "LoadBarrierSlowReg", "LoadBarrierWeakSlowReg" }; int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*); if( strcmp(_opType,"PrefetchAllocation")==0 ) return 1;
*** 4117,4127 **** !strcmp(_opType,"MemBarReleaseLock") || !strcmp(_opType,"LoadFence" ) || !strcmp(_opType,"StoreFence") || !strcmp(_opType,"MemBarVolatile") || !strcmp(_opType,"MemBarCPUOrder") || ! !strcmp(_opType,"MemBarStoreStore"); } bool MatchRule::is_ideal_loadPC() const { if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) { return (strcmp(_rChild->_opType,"LoadPC") == 0); --- 4110,4121 ---- !strcmp(_opType,"MemBarReleaseLock") || !strcmp(_opType,"LoadFence" ) || !strcmp(_opType,"StoreFence") || !strcmp(_opType,"MemBarVolatile") || !strcmp(_opType,"MemBarCPUOrder") || ! !strcmp(_opType,"MemBarStoreStore") || ! !strcmp(_opType,"OnSpinWait"); } bool MatchRule::is_ideal_loadPC() const { if ( _opType && (strcmp(_opType,"Set") == 0) && _rChild ) { return (strcmp(_rChild->_opType,"LoadPC") == 0);
< prev index next >