register cell ds asm("esi");
register cell rs asm("edi");
-#define VM_ASM_API extern "C" __attribute__ ((regparm (2)))
+#define VM_ASM_API VM_C_API __attribute__ ((regparm (2)))
}
register cell ds asm("r14");
register cell rs asm("r15");
-#define VM_ASM_API extern "C"
+#define VM_ASM_API VM_C_API
}
the offset of the first object is set by the allocator. */
+VM_C_API factor::cell cards_offset;
+VM_C_API factor::cell decks_offset;
+
namespace factor
{
#define CARD_SIZE (1<<CARD_BITS)
#define ADDR_CARD_MASK (CARD_SIZE-1)
-VM_C_API cell cards_offset;
-
inline static card *addr_to_card(cell a)
{
return (card*)(((cell)(a) >> CARD_BITS) + cards_offset);
#define DECK_SIZE (1<<DECK_BITS)
#define ADDR_DECK_MASK (DECK_SIZE-1)
-VM_C_API cell decks_offset;
-
inline static card_deck *addr_to_deck(cell a)
{
return (card_deck *)(((cell)a >> DECK_BITS) + decks_offset);
#define INVALID_ALLOT_MARKER 0xff
-VM_C_API cell allot_markers_offset;
+cell allot_markers_offset;
inline static card *addr_to_allot_marker(object *a)
{