@@ -77,13 +77,13 @@ sp is a local copy of the global variable caml_extern_sp. */
7777 sp[0] = accu; /* accu */ \
7878 sp [1 ] = Val_unit ; /* C_CALL frame: dummy environment */ \
7979 sp [2 ] = Val_unit ; /* RETURN frame: dummy local 0 */ \
80- sp [3 ] = ( value ) pc ; /* RETURN frame: saved return address */ \
80+ sp [3 ] = Val_pc ( pc ) ; /* RETURN frame: saved return address */ \
8181 sp [4 ] = env ; /* RETURN frame: saved environment */ \
8282 sp [5 ] = Val_long (extra_args ); /* RETURN frame: saved extra args */ \
8383 caml_extern_sp = sp ; }
8484#define Restore_after_event \
8585 { sp = caml_extern_sp; accu = sp[0]; \
86- pc = (code_t) sp[3]; env = sp[4]; extra_args = Long_val(sp[5]); \
86+ pc = Pc_val( sp[3]) ; env = sp[4]; extra_args = Long_val(sp[5]); \
8787 sp += 6; }
8888
8989/* Debugger interface */
@@ -379,7 +379,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
379379
380380 Instruct (PUSH_RETADDR ): {
381381 sp -= 3 ;
382- sp [0 ] = ( value ) (pc + * pc );
382+ sp [0 ] = Val_pc (pc + * pc );
383383 sp [1 ] = env ;
384384 sp [2 ] = Val_long (extra_args );
385385 pc ++ ;
@@ -395,7 +395,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
395395 value arg1 = sp [0 ];
396396 sp -= 3 ;
397397 sp [0 ] = arg1 ;
398- sp [1 ] = ( value ) pc ;
398+ sp [1 ] = Val_pc ( pc ) ;
399399 sp [2 ] = env ;
400400 sp [3 ] = Val_long (extra_args );
401401 pc = Code_val (accu );
@@ -409,7 +409,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
409409 sp -= 3 ;
410410 sp [0 ] = arg1 ;
411411 sp [1 ] = arg2 ;
412- sp [2 ] = ( value ) pc ;
412+ sp [2 ] = Val_pc ( pc ) ;
413413 sp [3 ] = env ;
414414 sp [4 ] = Val_long (extra_args );
415415 pc = Code_val (accu );
@@ -425,7 +425,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
425425 sp [0 ] = arg1 ;
426426 sp [1 ] = arg2 ;
427427 sp [2 ] = arg3 ;
428- sp [3 ] = ( value ) pc ;
428+ sp [3 ] = Val_pc ( pc ) ;
429429 sp [4 ] = env ;
430430 sp [5 ] = Val_long (extra_args );
431431 pc = Code_val (accu );
@@ -489,7 +489,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
489489 pc = Code_val (accu );
490490 env = accu ;
491491 } else {
492- pc = ( code_t ) (sp [0 ]);
492+ pc = Pc_val (sp [0 ]);
493493 env = sp [1 ];
494494 extra_args = Long_val (sp [2 ]);
495495 sp += 3 ;
@@ -517,9 +517,9 @@ value caml_interprete(code_t prog, asize_t prog_size)
517517 Alloc_small (accu , num_args + 2 , Closure_tag );
518518 Field (accu , 1 ) = env ;
519519 for (i = 0 ; i < num_args ; i ++ ) Field (accu , i + 2 ) = sp [i ];
520- Code_val (accu ) = pc - 3 ; /* Point to the preceding RESTART instr. */
520+ Field (accu , 0 ) = Val_bytecode ( pc - 3 ) ; /* Point to the preceding RESTART instr. */
521521 sp += num_args ;
522- pc = ( code_t ) (sp [0 ]);
522+ pc = Pc_val (sp [0 ]);
523523 env = sp [1 ];
524524 extra_args = Long_val (sp [2 ]);
525525 sp += 3 ;
@@ -532,7 +532,7 @@ value caml_interprete(code_t prog, asize_t prog_size)
532532 int i ;
533533 if (nvars > 0 ) * -- sp = accu ;
534534 Alloc_small (accu , 1 + nvars , Closure_tag );
535- Code_val (accu ) = pc + * pc ;
535+ Field (accu , 0 ) = Val_bytecode ( pc + * pc ) ;
536536 pc ++ ;
537537 for (i = 0 ; i < nvars ; i ++ ) Field (accu , i + 1 ) = sp [i ];
538538 sp += nvars ;
@@ -552,13 +552,13 @@ value caml_interprete(code_t prog, asize_t prog_size)
552552 }
553553 sp += nvars ;
554554 p = & Field (accu , 0 );
555- * p = ( value ) (pc + pc [0 ]);
555+ * p = Val_bytecode (pc + pc [0 ]);
556556 * -- sp = accu ;
557557 p ++ ;
558558 for (i = 1 ; i < nfuncs ; i ++ ) {
559559 * p = Make_header (i * 2 , Infix_tag , Caml_white ); /* color irrelevant. */
560560 p ++ ;
561- * p = ( value ) (pc + pc [i ]);
561+ * p = Val_bytecode (pc + pc [i ]);
562562 * -- sp = (value ) p ;
563563 p ++ ;
564564 }
@@ -800,11 +800,11 @@ value caml_interprete(code_t prog, asize_t prog_size)
800800
801801 Instruct (PUSHTRAP ):
802802 sp -= 4 ;
803- Trap_pc (sp ) = pc + * pc ;
804- Trap_link (sp ) = caml_trapsp ;
803+ Trap_pc (sp ) = Val_pc ( pc + * pc ) ;
804+ Trap_link (sp ) = Val_long ( caml_trap_sp_off ) ;
805805 sp [2 ] = env ;
806806 sp [3 ] = Val_long (extra_args );
807- caml_trapsp = sp ;
807+ caml_trap_sp_off = sp - caml_stack_high ;
808808 pc ++ ;
809809 Next ;
810810
@@ -816,35 +816,34 @@ value caml_interprete(code_t prog, asize_t prog_size)
816816 pc -- ; /* restart the POPTRAP after processing the signal */
817817 goto process_signal ;
818818 }
819- caml_trapsp = Trap_link (sp );
819+ caml_trap_sp_off = Long_val ( Trap_link (sp ) );
820820 sp += 4 ;
821821 Next ;
822822
823823 Instruct (RAISE_NOTRACE ):
824- if (caml_trapsp >= caml_trap_barrier ) caml_debugger (TRAP_BARRIER );
824+ if (caml_trap_sp_off >= caml_trap_barrier_off ) caml_debugger (TRAP_BARRIER );
825825 goto raise_notrace ;
826826
827827 Instruct (RERAISE ):
828- if (caml_trapsp >= caml_trap_barrier ) caml_debugger (TRAP_BARRIER );
828+ if (caml_trap_sp_off >= caml_trap_barrier_off ) caml_debugger (TRAP_BARRIER );
829829 if (caml_backtrace_active ) caml_stash_backtrace (accu , pc , sp , 1 );
830830 goto raise_notrace ;
831831
832832 Instruct (RAISE ):
833833 raise_exception :
834- if (caml_trapsp >= caml_trap_barrier ) caml_debugger (TRAP_BARRIER );
834+ if (caml_trap_sp_off >= caml_trap_barrier_off ) caml_debugger (TRAP_BARRIER );
835835 if (caml_backtrace_active ) caml_stash_backtrace (accu , pc , sp , 0 );
836836 raise_notrace :
837- if ((char * ) caml_trapsp
838- >= (char * ) caml_stack_high - initial_sp_offset ) {
837+ if (caml_trap_sp_off >= - initial_sp_offset ) {
839838 caml_external_raise = initial_external_raise ;
840839 caml_extern_sp = (value * ) ((char * ) caml_stack_high
841840 - initial_sp_offset );
842841 caml_callback_depth -- ;
843842 return Make_exception_result (accu );
844843 }
845- sp = caml_trapsp ;
846- pc = Trap_pc (sp );
847- caml_trapsp = Trap_link (sp );
844+ sp = caml_stack_high + caml_trap_sp_off ;
845+ pc = Pc_val ( Trap_pc (sp ) );
846+ caml_trap_sp_off = Long_val ( Trap_link (sp ) );
848847 env = sp [2 ];
849848 extra_args = Long_val (sp [3 ]);
850849 sp += 4 ;
0 commit comments