Add patch from Aleksej for 64 bit cells on 32 bit system.
[pforth] / csrc / pfcompil.c
index 3613b33..025eebf 100644 (file)
@@ -58,7 +58,7 @@ void CreateDicEntry( ExecToken XT, const ForthStringPtr FName, ucell_t Flags )
 {\r
        cfNameLinks *cfnl;\r
 \r
 {\r
        cfNameLinks *cfnl;\r
 \r
-       cfnl = (cfNameLinks *) gCurrentDictionary->dic_HeaderPtr.Byte;\r
+       cfnl = (cfNameLinks *) gCurrentDictionary->dic_HeaderPtr;\r
 \r
 /* Set link to previous header, if any. */\r
        if( gVarContext )\r
 \r
 /* Set link to previous header, if any. */\r
        if( gVarContext )\r
@@ -74,20 +74,20 @@ void CreateDicEntry( ExecToken XT, const ForthStringPtr FName, ucell_t Flags )
        WRITE_CELL_DIC( &cfnl->cfnl_ExecToken, XT );\r
 \r
 /* Advance Header Dictionary Pointer */\r
        WRITE_CELL_DIC( &cfnl->cfnl_ExecToken, XT );\r
 \r
 /* Advance Header Dictionary Pointer */\r
-       gCurrentDictionary->dic_HeaderPtr.Byte += sizeof(cfNameLinks);\r
+       gCurrentDictionary->dic_HeaderPtr += sizeof(cfNameLinks);\r
 \r
 /* Laydown name. */\r
 \r
 /* Laydown name. */\r
-       gVarContext = (char *) gCurrentDictionary->dic_HeaderPtr.Byte;\r
-       pfCopyMemory( gCurrentDictionary->dic_HeaderPtr.Byte, FName, (*FName)+1 );\r
-       gCurrentDictionary->dic_HeaderPtr.Byte += (*FName)+1;\r
+       gVarContext = (char *) gCurrentDictionary->dic_HeaderPtr;\r
+       pfCopyMemory( (char *)gCurrentDictionary->dic_HeaderPtr, FName, (*FName)+1 );\r
+       gCurrentDictionary->dic_HeaderPtr += (*FName)+1;\r
 \r
 /* Set flags. */\r
 \r
 /* Set flags. */\r
-       *gVarContext |= (char) Flags;\r
+       *(char*)gVarContext |= (char) Flags;\r
        \r
 /* Align to quad byte boundaries with zeroes. */\r
        \r
 /* Align to quad byte boundaries with zeroes. */\r
-       while( ((ucell_t) gCurrentDictionary->dic_HeaderPtr.Byte) & UINT32_MASK )\r
+       while( gCurrentDictionary->dic_HeaderPtr & UINT32_MASK )\r
        {\r
        {\r
-               *gCurrentDictionary->dic_HeaderPtr.Byte++ = 0;\r
+               *(char*)(gCurrentDictionary->dic_HeaderPtr++) = 0;\r
        }\r
 }\r
 \r
        }\r
 }\r
 \r
@@ -528,16 +528,16 @@ DBUG(("ffFindC: %s\n", WordName ));
 static cell_t ffCheckDicRoom( void )\r
 {\r
        cell_t RoomLeft;\r
 static cell_t ffCheckDicRoom( void )\r
 {\r
        cell_t RoomLeft;\r
-       RoomLeft = gCurrentDictionary->dic_HeaderLimit -\r
-                  gCurrentDictionary->dic_HeaderPtr.Byte;\r
+       RoomLeft = (char *)gCurrentDictionary->dic_HeaderLimit -\r
+                  (char *)gCurrentDictionary->dic_HeaderPtr;\r
        if( RoomLeft < DIC_SAFETY_MARGIN )\r
        {\r
                pfReportError("ffCheckDicRoom", PF_ERR_HEADER_ROOM);\r
                return PF_ERR_HEADER_ROOM;\r
        }\r
 \r
        if( RoomLeft < DIC_SAFETY_MARGIN )\r
        {\r
                pfReportError("ffCheckDicRoom", PF_ERR_HEADER_ROOM);\r
                return PF_ERR_HEADER_ROOM;\r
        }\r
 \r
-       RoomLeft = gCurrentDictionary->dic_CodeLimit -\r
-                  gCurrentDictionary->dic_CodePtr.Byte;\r
+       RoomLeft = (char *)gCurrentDictionary->dic_CodeLimit -\r
+                  (char *)gCurrentDictionary->dic_CodePtr.Byte;\r
        if( RoomLeft < DIC_SAFETY_MARGIN )\r
        {\r
                pfReportError("ffCheckDicRoom", PF_ERR_CODE_ROOM);\r
        if( RoomLeft < DIC_SAFETY_MARGIN )\r
        {\r
                pfReportError("ffCheckDicRoom", PF_ERR_CODE_ROOM);\r
@@ -662,7 +662,7 @@ void ffDefer( void )
 /* Unsmudge the word to make it visible. */\r
 void ffUnSmudge( void )\r
 {\r
 /* Unsmudge the word to make it visible. */\r
 void ffUnSmudge( void )\r
 {\r
-       *gVarContext &= ~FLAG_SMUDGE;\r
+       *(char*)gVarContext &= ~FLAG_SMUDGE;\r
 }\r
 \r
 /* Implement ; */\r
 }\r
 \r
 /* Implement ; */\r