| 
									
										
										
										
											2015-01-18 03:00:19 +00:00
										 |  |  | /*****************************************************************
 | 
					
						
							|  |  |  |  *                         INSTRUCTIONS                           * | 
					
						
							|  |  |  |  *****************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef INDENT_CODE
 | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | #endif /* INDENT_CODE */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  | BOp(Ystop, l); | 
					
						
							|  |  |  |       SET_ASP(YREG, E_CB*sizeof(CELL)); | 
					
						
							|  |  |  |       /* make sure ASP is initialised */ | 
					
						
							|  |  |  |       saveregs(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if PUSH_REGS
 | 
					
						
							|  |  |  |       restore_absmi_regs(old_regs); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #if BP_FREE
 | 
					
						
							|  |  |  |       P1REG = PCBACKUP; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  |       return 1; | 
					
						
							|  |  |  |       ENDBOp(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       BOp(Nstop, e); | 
					
						
							|  |  |  |       SET_ASP(YREG, E_CB*sizeof(CELL)); | 
					
						
							|  |  |  |       saveregs(); | 
					
						
							|  |  |  | #if PUSH_REGS
 | 
					
						
							|  |  |  |       restore_absmi_regs(old_regs); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #if BP_FREE
 | 
					
						
							|  |  |  |       P1REG = PCBACKUP; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  |       return 0; | 
					
						
							|  |  |  |       ENDBOp(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /************************************************************************\
 | 
					
						
							|  |  |  |          *      Native Code Execution                                            * | 
					
						
							|  |  |  | \************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if YAP_JIT
 | 
					
						
							| 
									
										
										
										
											2015-09-21 17:05:36 -05:00
										 |  |  |       static void *OpAddress_JIT[] = | 
					
						
							| 
									
										
										
										
											2015-08-07 16:57:53 -05:00
										 |  |  |       { | 
					
						
							|  |  |  | #define OPCODE(OP,TYPE) && _##OP
 | 
					
						
							|  |  |  | #include "YapOpcodes.h"
 | 
					
						
							|  |  |  | #undef  OPCODE
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2015-01-18 03:00:19 +00:00
										 |  |  |         /* native_me  */ | 
					
						
							|  |  |  |         BOp(jit_handler, J); | 
					
						
							|  |  |  |         if (!PREG->y_u.J.jh->fi.bcst.c) PREG->y_u.J.jh->mf.isground = IsGround(PREG); | 
					
						
							|  |  |  |         PREG->y_u.J.jh->fi.bcst.c++; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* Did PREG reach threshold value to become critical? */ | 
					
						
							|  |  |  |         if (PREG->y_u.J.jh->fi.bcst.c == (COUNT)(ExpEnv.config_struc.frequency_bound*(ExpEnv.config_struc.profiling_startp)) && !PREG->y_u.J.jh->mf.isground) { | 
					
						
							|  |  |  | #if YAP_DBG_PREDS
 | 
					
						
							|  |  |  |           if (ExpEnv.debug_struc.pprint_me.criticals != 0 && ExpEnv.debug_struc.pprint_me.criticals != 0x1) { | 
					
						
							|  |  |  |             fprintf(stderr, "%s:%d\n", __FILE__, __LINE__); | 
					
						
							|  |  |  |             fprintf(stderr, "%s", (char*)ExpEnv.debug_struc.pprint_me.criticals); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2015-02-06 18:11:52 +00:00
										 |  |  | 	  traced_absmi(); | 
					
						
							|  |  |  | 	   | 
					
						
							| 
									
										
										
										
											2015-01-18 03:00:19 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | #if YAP_DBG_PREDS
 | 
					
						
							|  |  |  |         print_main_when_head(PREG, ON_INTERPRETER); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  |         PREG = NEXTOP(PREG, J); | 
					
						
							|  |  |  |         JMPNext(); | 
					
						
							|  |  |  |         ENDBOp(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 03:00:42 +00:00
										 |  |  | #include "cp_absmi_insts.h"
 | 
					
						
							|  |  |  | #include "lu_absmi_insts.h"     
 | 
					
						
							|  |  |  | #include "fail_absmi_insts.h"
 | 
					
						
							|  |  |  | #include "control_absmi_insts.h"
 | 
					
						
							|  |  |  | #include "unify_absmi_insts.h"
 | 
					
						
							|  |  |  | #include "fli_absmi_insts.h"
 | 
					
						
							|  |  |  | #include "or_absmi_insts.h"     
 | 
					
						
							|  |  |  | #include "index_absmi_insts.h"     
 | 
					
						
							|  |  |  | #include "type_absmi_insts.h"           
 | 
					
						
							|  |  |  | #include "prim_absmi_insts.h"           
 | 
					
						
							|  |  |  | #include "meta_absmi_insts.h"     
 |