Hmmm, I hadn't realised the limit was that small.
As you've probably figured out, the constant to tweak is NUM_FIXUPS
in prelude.h.

The new code generator won't have this limitation (the number of fixups will
 be limited by the C stack depth).

Alastair

> This file cracks hugs up with a 
> 
>   ERROR "Test.lhs": Compiled code too complex
> 
> > data RawByteCode 
> >   = RawNop
> >   | RawAconst_null
> >   | RawIconst_m1    
> >   | RawIconst_0     
> >   | RawIconst_1     
> >   | RawIconst_2     
> >   | RawIconst_3     
> >   | RawIconst_4     
> >   | RawIconst_5     
> >   | RawLconst_0     
> >   | RawLconst_1     
> >   | RawFconst_0     
> >   | RawFconst_1     
> >   | RawFconst_2     
> >   | RawDconst_0     
> >   | RawDconst_1     
> >   | RawBipush               
> >   | RawSipush               
> >   | RawLdc
> >   | RawLdc_w        
> >   | RawLdc2_w       
> >   | RawIload                
> >   | RawLload                
> >   | RawFload                
> >   | RawDload                
> >   | RawAload                
> >   | RawIload_0              
> >   | RawIload_1              
> >   | RawIload_2              
> >   | RawIload_3              
> >   | RawLload_0              
> >   | RawLload_1              
> >   | RawLload_2              
> >   | RawLload_3              
> >   | RawFload_0              
> >   | RawFload_1              
> >   | RawFload_2              
> >   | RawFload_3              
> >   | RawDload_0              
> >   | RawDload_1              
> >   | RawDload_2              
> >   | RawDload_3              
> >   | RawAload_0              
> >   | RawAload_1              
> >   | RawAload_2              
> >   | RawAload_3              
> >   | RawIaload               
> >   | RawLaload               
> >   | RawFaload               
> >   | RawDaload               
> >   | RawAaload               
> >   | RawBaload               
> >   | RawCaload               
> >   | RawSaload               
> >   | RawIstore               
> >   | RawLstore               
> >   | RawFstore               
> >   | RawDstore               
> >   | RawAstore               
> >   | RawIstore_0     
> >   | RawIstore_1     
> >   | RawIstore_2     
> >   | RawIstore_3     
> >   | RawLstore_0     
> >   | RawLstore_1     
> >   | RawLstore_2     
> >   | RawLstore_3     
> >   | RawFstore_0     
> >   | RawFstore_1     
> >   | RawFstore_2     
> >   | RawFstore_3     
> >   | RawDstore_0     
> >   | RawDstore_1     
> >   | RawDstore_2     
> >   | RawDstore_3     
> >   | RawAstore_0     
> >   | RawAstore_1     
> >   | RawAstore_2     
> >   | RawAstore_3     
> >   | RawIastore              
> >   | RawLastore              
> >   | RawFastore              
> >   | RawDastore              
> >   | RawAastore              
> >   | RawBastore              
> >   | RawCastore              
> >   | RawSastore              
> >   | RawPop          
> >   | RawPop2         
> >   | RawDup          
> >   | RawDup_x1               
> >   | RawDup_x2               
> >   | RawDup2         
> >   | RawDup2_x1              
> >   | RawDup2_x2              
> >   | RawSwap
> >   | RawIadd         
> >   | RawLadd         
> >   | RawFadd         
> >   | RawDadd         
> >   | RawIsub         
> >   | RawLsub         
> >   | RawFsub         
> >   | RawDsub         
> >   | RawImul         
> >   | RawLmul         
> >   | RawFmul         
> >   | RawDmul         
> >   | RawIdiv         
> >   | RawLdiv         
> >   | RawFdiv         
> >   | RawDdiv         
> >   | RawIrem         
> >   | RawLrem         
> >   | RawFrem         
> >   | RawDrem         
> >   | RawIneg         
> >   | RawLneg         
> >   | RawFneg         
> >   | RawDneg         
> >   | RawIshl         
> >   | RawLshl         
> >   | RawIshr         
> >   | RawLshr         
> >   | RawIushr                
> >   | RawLushr                
> >   | RawIand         
> >   | RawLand         
> >   | RawIor          
> >   | RawLor          
> >   | RawIxor         
> >   | RawLxor         
> >   | RawIinc         
> >   | RawI2l          
> >   | RawI2f          
> >   | RawI2d          
> >   | RawL2i          
> >   | RawL2f          
> >   | RawL2d          
> >   | RawF2i          
> >   | RawF2l          
> >   | RawF2d          
> >   | RawD2i          
> >   | RawD2l          
> >   | RawD2f          
> >   | RawInt2byte     
> >   | RawInt2char     
> >   | RawInt2short
> >   | RawLcmp         
> >   | RawFcmpl                
> >   | RawFcmpg                
> >   | RawDcmpl                
> >   | RawDcmpg                
> >   | RawIfeq         
> >   | RawIfne         
> >   | RawIflt         
> >   | RawIfge         
> >   | RawIfgt         
> >   | RawIfle         
> >   | RawIf_icmpeq    
> >   | RawIf_icmpne    
> >   | RawIf_icmplt    
> >   | RawIf_icmpge    
> >   | RawIf_icmpgt    
> >   | RawIf_icmple    
> >   | RawIf_acmpeq    
> >   | RawIf_acmpne    
> >   | RawGoto         
> >   | RawJsr          
> >   | RawRet          
> >   | RawTableswitch  
> >   | RawLookupswitch 
> >   | RawIreturn              
> >   | RawLreturn              
> >   | RawFreturn              
> >   | RawDreturn              
> >   | RawAreturn              
> >   | RawReturn               
> >   | RawGetstatic
> >   | RawPutstatic
> >   | RawGetfield
> >   | RawPutfield
> >   | RawInvokevirtual
> >   | RawInvokenonvirtual
> >   | RawInvokestatic
> >   | RawInvokeinterface
> >   | RawXxxunusedxxx
> >   | RawNew
> >   | RawNewarray
> >   | RawAnewarray
> >   | RawArraylength  
> >   | RawAthrow               
> >   | RawCheckcast
> >   | RawInstanceof
> >   | RawMonitorenter 
> >   | RawMonitorexit  
> >   | RawWide 
> >   | RawMultianewarray
> >   | RawIfnull               
> >   | RawIfnonnull    
> >   | RawGoto_w               
> >   | RawJsr_w                
> >   | RawBreakpoint   
> >   | RawLdc_quick
> >   | RawLdc_w_quick
> >   | RawLdc2_w_quick
> >   | RawGetfield_quick
> >   | RawPutfield_quick
> >   | RawGetfield2_quick
> >   | RawPutfield2_quick
> >   | RawGetstatic_quick
> >   | RawPutstatic_quick
> >   | RawGetstatic2_quick
> >   | RawPutstatic2_quick
> >   | RawInvokevirtual_quick
> >   | RawInvokenonvirtual_quick
> >   | RawInvokesuper_quick
> >   | RawInvokestatic_quick
> >   | RawInvokeinterface_quick
> >   | RawInvokevirtualobject_quick
> >   | RawInvokeignored_quick
> >   | RawNew_quick
> >   | RawAnewarray_quick
> >   | RawMultianewarray_quick
> >   | RawCheckcast_quick
> >   | RawInstanceof_quick
> >   | RawInvokevirtual_quick_w
> >   | RawGetfield_quick_w
> >   | RawPutfield_quick_w
> >   deriving (Enum, Show)


Reply via email to