-INFO_TABLE_RET( stg_marked_upd_frame,
- UPD_FRAME_WORDS, UPD_FRAME_BITMAP, UPDATE_FRAME,
- stg_upd_frame_0_ret,
- stg_upd_frame_1_ret,
- stg_upd_frame_2_ret,
- stg_upd_frame_3_ret,
- stg_upd_frame_4_ret,
- stg_upd_frame_5_ret,
- stg_upd_frame_6_ret,
- stg_upd_frame_7_ret
- )
-UPD_FRAME_ENTRY_TEMPLATE(,stg_IND_direct_info,%ENTRY_CODE(Sp(0)))
-
-/*-----------------------------------------------------------------------------
- Seq frames
-
- We don't have a primitive seq# operator: it is just a 'case'
- expression whose scrutinee has either a polymorphic or function type
- (constructor types can be handled by normal 'case' expressions).
-
- To handle a polymorphic/function typed seq, we push a SEQ frame on
- the stack. This is a polymorphic activation record that just pops
- itself and returns (in a non-vectored way) when entered. The
- purpose of the SEQ frame is to avoid having to make a polymorphic return
- point for each polymorphic case expression.
-
- Another way of looking at it: the SEQ frame turns a vectored return
- into a direct one.
- -------------------------------------------------------------------------- */
-
-#if MAX_VECTORED_RTN > 8
-#error MAX_VECTORED_RTN has changed: please modify stg_seq_frame too.
-#endif
-
-INFO_TABLE_RET( stg_seq_frame, 0/* words */, 0/* bitmap */, RET_SMALL,
- RET_LBL(stg_seq_frame), /* 0 */
- RET_LBL(stg_seq_frame), /* 1 */
- RET_LBL(stg_seq_frame), /* 2 */
- RET_LBL(stg_seq_frame), /* 3 */
- RET_LBL(stg_seq_frame), /* 4 */
- RET_LBL(stg_seq_frame), /* 5 */
- RET_LBL(stg_seq_frame), /* 6 */
- RET_LBL(stg_seq_frame) /* 7 */
- )
-{
- Sp_adj(1);
- jump %ENTRY_CODE(Sp(0));
-}