Crash in complier2 : --- called from signal handler with signal -14283264 (SIG Unknown) --- fed9ac7c int IdealLoopTree::policy_do_remove_empty_loop(PhaseIdealLoop*) (1301724, 94cfebcc, 1301724, 1, 11b568, 13035f1) + 8c fed9b1c8 void IdealLoopTree::iteration_split_impl(PhaseIdealLoop*,Node_List&) (1301724, 94cfebcc, 94cfeb10, ff1cd c7c, ff1bee2c, 117e51) + c fedda768 void IdealLoopTree::iteration_split(PhaseIdealLoop*,Node_List&) (13016ac, 94cfebcc, 94cfeb10, ffffffff, fffffff8, 1303890) + 2d8 fedbf448 PhaseIdealLoop::PhaseIdealLoop #Nvariant 1(PhaseIterGVN&,const PhaseIdealLoop*,int) (ff1cdc7c, 0, 94cfec 14, 1, 1, 1) + dac fee012f8 void Compile::Optimize() (94cff500, ff135b44, 94cff414, ff182000, 0, 0) + 600 fedff70c Compile::Compile(ciEnv*,ciScope*,ciMethod*,int,int,int) (ff135979, 1ce3af4, 3acc8cc, bb9900, ffffffff, 1 ) + bac fedfbee4 void C2Compiler::compile_method(ciEnv*,ciScope*,ciMethod*,int,int) (35898, 94cffd1c, 0, 1d1ba08, fffffff f, 0) + 64 fedfb6a8 void CompileBroker::invoke_compiler_on_method(CompileTask*) (e8c, 0, ffffffff, ff1c0e70, ff1cdc7c, 1247b 8) + 61c feeab0f0 void CompileBroker::compiler_thread_loop() (ff136181, ff1c1238, 1247b8, 124d68, 319e24, fee68140) + 428 fee68168 void JavaThread::run() (1247b8, 8, 40, 0, 40, 0) + 284 fee64648 _start (1247b8, ff260e00, 0, 0, 0, 0) + 134 ff374b90 _lwp_start (0, 0, 0, 0, 0, 0) the code section that is failing is The method source: From AnnuityConstants class file final public static char [] VAR_ANNUITIZED_STATUS = {'O','P','0'}; final public static char [] FIX_ANNUITIZED_STATUS = {'0'}; /** *Return true if it is a Annutized Contract. */ public boolean isAnnuitized() { char [] annuitized = null; char contractStatus = ' '; if(mAnnuityContract.isVariable()) { annuitized = AnnuityConstants.VAR_ANNUITIZED_STATUS; } else { annuitized = AnnuityConstants.FIX_ANNUITIZED_STATUS; } try { contractStatus = mAnnuityContract.getContractStatus(); } catch(AnnuityException ae) { AnnuityLogger.error(this.getClass().getName(),"isAnnuitized(), Error occurred while attempting "+ "to check Annuitized status or not" + ae, Layer.LAYER_BUSINESS_LOGIC, AnnuityErrors.GENERIC_EXCEPTION_CODE); } if(annuitized != null) { for(int i = 0; i < annuitized.length; ++i) { if(contractStatus == annuitized[i]) { return true; } } return false; } else return false; } We can see that the optimizer might be interested in removing the if because annuitized can never be null. Also, since one of the two constant arrays is 1 byte in length, it could remove the loop for one of the branches of isVariable().. The core implied that an empty loop was being removed. ###@###.### 2005-04-06 17:48:39 GMT
|