Commit 3fa88f96 authored by simonmar's avatar simonmar

[project @ 2000-03-16 12:40:40 by simonmar]

Use Sp instead of the global init_stack for the stack pointer during
module initialisation.  This should cut down the code size for module
initialisation blocks.
parent 0f3bf354
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: StgMacros.h,v 1.22 2000/03/15 17:36:02 simonmar Exp $ * $Id: StgMacros.h,v 1.23 2000/03/16 12:40:40 simonmar Exp $
* *
* (c) The GHC Team, 1998-1999 * (c) The GHC Team, 1998-1999
* *
...@@ -729,13 +729,11 @@ LoadThreadState (void) ...@@ -729,13 +729,11 @@ LoadThreadState (void)
Module initialisation Module initialisation
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
extern F_ *init_stack;
#define PUSH_INIT_STACK(reg_function) \ #define PUSH_INIT_STACK(reg_function) \
*(init_stack++) = (F_)reg_function *(Sp++) = (W_)reg_function
#define POP_INIT_STACK() \ #define POP_INIT_STACK() \
*(--init_stack) *(--Sp)
#define START_MOD_INIT(reg_mod_name) \ #define START_MOD_INIT(reg_mod_name) \
static int _module_registered = 0; \ static int _module_registered = 0; \
......
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: StgStartup.hc,v 1.7 2000/03/09 11:49:34 simonmar Exp $ * $Id: StgStartup.hc,v 1.8 2000/03/16 12:40:40 simonmar Exp $
* *
* (c) The GHC Team, 1998-1999 * (c) The GHC Team, 1998-1999
* *
...@@ -137,6 +137,8 @@ STGFUN(stg_enterStackTop) ...@@ -137,6 +137,8 @@ STGFUN(stg_enterStackTop)
#ifndef INTERPRETER #ifndef INTERPRETER
extern F_ *init_stack;
STGFUN(stg_init_ret) STGFUN(stg_init_ret)
{ {
FB_ FB_
...@@ -149,6 +151,7 @@ STGFUN(stg_init) ...@@ -149,6 +151,7 @@ STGFUN(stg_init)
EF_(__init_Main); EF_(__init_Main);
EF_(__init_Prelude); EF_(__init_Prelude);
FB_ FB_
Sp = (P_)init_stack;
PUSH_INIT_STACK(stg_init_ret); PUSH_INIT_STACK(stg_init_ret);
PUSH_INIT_STACK(__init_Prelude); PUSH_INIT_STACK(__init_Prelude);
JMP_(__init_Main); JMP_(__init_Main);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment