From 0fc8ee82501d4ca2a5ab4d83e691cfb244ad28d6 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 9 Oct 2010 16:03:46 -0500 Subject: [PATCH 1/4] Fix win64 compile error --- vm/gc.cpp | 4 ++-- vm/gc_info.hpp | 2 +- vm/slot_visitor.hpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vm/gc.cpp b/vm/gc.cpp index 0de3dac91f..1bb339a70a 100755 --- a/vm/gc.cpp +++ b/vm/gc.cpp @@ -230,8 +230,8 @@ struct call_frame_scrubber { gc_info *info = compiled->block_gc_info(); assert(return_address < compiled->size()); - int index = info->return_address_index(return_address); - if(index != -1) + cell index = info->return_address_index(return_address); + if(index != (cell)-1) ctx->scrub_stacks(info,index); } }; diff --git a/vm/gc_info.hpp b/vm/gc_info.hpp index eee7b1a8e8..d6bb79f4bd 100644 --- a/vm/gc_info.hpp +++ b/vm/gc_info.hpp @@ -1,7 +1,7 @@ namespace factor { -const u32 gc_info_missing_value = (u32)-1; +const cell gc_info_missing_value = (cell)-1; struct gc_info { u32 scrub_d_count; diff --git a/vm/slot_visitor.hpp b/vm/slot_visitor.hpp index 303fc37544..b97f988e65 100755 --- a/vm/slot_visitor.hpp +++ b/vm/slot_visitor.hpp @@ -292,7 +292,7 @@ struct call_frame_slot_visitor { gc_info *info = compiled->block_gc_info(); assert(return_address < compiled->size()); - u32 callsite = info->return_address_index(return_address); + cell callsite = info->return_address_index(return_address); if(callsite == gc_info_missing_value) return; From a84d7af2c5cc1adeb43f4f586017e05c252c9c21 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 9 Oct 2010 15:03:35 -0700 Subject: [PATCH 2/4] unix.ffi.bsd: fix AF_INET6 constants on FreeBSD and OpenBSD --- basis/unix/ffi/bsd/bsd.factor | 1 - basis/unix/ffi/bsd/freebsd/freebsd.factor | 2 ++ basis/unix/ffi/bsd/openbsd/openbsd.factor | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/basis/unix/ffi/bsd/bsd.factor b/basis/unix/ffi/bsd/bsd.factor index 3b3052af23..43e2d4e215 100644 --- a/basis/unix/ffi/bsd/bsd.factor +++ b/basis/unix/ffi/bsd/bsd.factor @@ -69,7 +69,6 @@ CONSTANT: SOCK_RAW 3 CONSTANT: AF_UNSPEC 0 CONSTANT: AF_UNIX 1 CONSTANT: AF_INET 2 -CONSTANT: AF_INET6 30 ALIAS: PF_UNSPEC AF_UNSPEC ALIAS: PF_UNIX AF_UNIX diff --git a/basis/unix/ffi/bsd/freebsd/freebsd.factor b/basis/unix/ffi/bsd/freebsd/freebsd.factor index 112758a3e8..04e03e0f81 100644 --- a/basis/unix/ffi/bsd/freebsd/freebsd.factor +++ b/basis/unix/ffi/bsd/freebsd/freebsd.factor @@ -1,6 +1,8 @@ USING: alien.c-types alien.syntax classes.struct unix.types ; IN: unix.ffi +CONSTANT: AF_INET6 28 + CONSTANT: FD_SETSIZE 1024 STRUCT: addrinfo diff --git a/basis/unix/ffi/bsd/openbsd/openbsd.factor b/basis/unix/ffi/bsd/openbsd/openbsd.factor index 1f4eddef66..0a590ae27e 100644 --- a/basis/unix/ffi/bsd/openbsd/openbsd.factor +++ b/basis/unix/ffi/bsd/openbsd/openbsd.factor @@ -1,6 +1,8 @@ USING: alien.c-types alien.syntax classes.struct unix.types ; IN: unix.ffi +CONSTANT: AF_INET6 24 + CONSTANT: FD_SETSIZE 1024 STRUCT: addrinfo From 813e13140aea95323439b15970a501b842eafdfa Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 9 Oct 2010 15:14:14 -0700 Subject: [PATCH 3/4] vm: fix 64-bit regression --- vm/gc_info.cpp | 2 +- vm/gc_info.hpp | 4 +--- vm/slot_visitor.hpp | 10 +++++----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/vm/gc_info.cpp b/vm/gc_info.cpp index 7c727aac0d..a693fc5455 100644 --- a/vm/gc_info.cpp +++ b/vm/gc_info.cpp @@ -13,7 +13,7 @@ cell gc_info::return_address_index(cell return_address) return i; } - return gc_info_missing_value; + return (cell)-1; } } diff --git a/vm/gc_info.hpp b/vm/gc_info.hpp index d6bb79f4bd..9bff88b9b2 100644 --- a/vm/gc_info.hpp +++ b/vm/gc_info.hpp @@ -1,8 +1,6 @@ namespace factor { -const cell gc_info_missing_value = (cell)-1; - struct gc_info { u32 scrub_d_count; u32 scrub_r_count; @@ -58,7 +56,7 @@ struct gc_info { + index * gc_root_count; } - cell lookup_base_pointer(cell index, cell derived_root) + u32 lookup_base_pointer(cell index, cell derived_root) { return base_pointer_map()[index * derived_root_count + derived_root]; } diff --git a/vm/slot_visitor.hpp b/vm/slot_visitor.hpp index b97f988e65..b2dd40e582 100755 --- a/vm/slot_visitor.hpp +++ b/vm/slot_visitor.hpp @@ -293,7 +293,7 @@ struct call_frame_slot_visitor { assert(return_address < compiled->size()); cell callsite = info->return_address_index(return_address); - if(callsite == gc_info_missing_value) + if(callsite == (cell)-1) return; #ifdef DEBUG_GC_MAPS @@ -305,8 +305,8 @@ struct call_frame_slot_visitor { /* Subtract old value of base pointer from every derived pointer. */ for(cell spill_slot = 0; spill_slot < info->derived_root_count; spill_slot++) { - cell base_pointer = info->lookup_base_pointer(callsite, spill_slot); - if(base_pointer != gc_info_missing_value) + u32 base_pointer = info->lookup_base_pointer(callsite, spill_slot); + if(base_pointer != (u32)-1) { #ifdef DEBUG_GC_MAPS std::cout << "visiting derived root " << spill_slot @@ -334,8 +334,8 @@ struct call_frame_slot_visitor { /* Add the base pointers to obtain new derived pointer values. */ for(cell spill_slot = 0; spill_slot < info->derived_root_count; spill_slot++) { - cell base_pointer = info->lookup_base_pointer(callsite, spill_slot); - if(base_pointer != gc_info_missing_value) + u32 base_pointer = info->lookup_base_pointer(callsite, spill_slot); + if(base_pointer != (u32)-1) stack_pointer[spill_slot] += stack_pointer[base_pointer]; } } From daae54a88a8fb96769653d98d2e5c1adbf16e9be Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 9 Oct 2010 15:16:14 -0700 Subject: [PATCH 4/4] unix.ffi.bsd: fix load errors --- basis/unix/ffi/bsd/bsd.factor | 1 - basis/unix/ffi/bsd/freebsd/freebsd.factor | 1 + basis/unix/ffi/bsd/openbsd/openbsd.factor | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/basis/unix/ffi/bsd/bsd.factor b/basis/unix/ffi/bsd/bsd.factor index 43e2d4e215..388fd5a692 100644 --- a/basis/unix/ffi/bsd/bsd.factor +++ b/basis/unix/ffi/bsd/bsd.factor @@ -73,7 +73,6 @@ CONSTANT: AF_INET 2 ALIAS: PF_UNSPEC AF_UNSPEC ALIAS: PF_UNIX AF_UNIX ALIAS: PF_INET AF_INET -ALIAS: PF_INET6 AF_INET6 CONSTANT: IPPROTO_TCP 6 CONSTANT: IPPROTO_UDP 17 diff --git a/basis/unix/ffi/bsd/freebsd/freebsd.factor b/basis/unix/ffi/bsd/freebsd/freebsd.factor index 04e03e0f81..cb45cf2b20 100644 --- a/basis/unix/ffi/bsd/freebsd/freebsd.factor +++ b/basis/unix/ffi/bsd/freebsd/freebsd.factor @@ -2,6 +2,7 @@ USING: alien.c-types alien.syntax classes.struct unix.types ; IN: unix.ffi CONSTANT: AF_INET6 28 +ALIAS: PF_INET6 AF_INET6 CONSTANT: FD_SETSIZE 1024 diff --git a/basis/unix/ffi/bsd/openbsd/openbsd.factor b/basis/unix/ffi/bsd/openbsd/openbsd.factor index 0a590ae27e..dba7ddd3cd 100644 --- a/basis/unix/ffi/bsd/openbsd/openbsd.factor +++ b/basis/unix/ffi/bsd/openbsd/openbsd.factor @@ -2,6 +2,7 @@ USING: alien.c-types alien.syntax classes.struct unix.types ; IN: unix.ffi CONSTANT: AF_INET6 24 +ALIAS: PF_INET6 AF_INET6 CONSTANT: FD_SETSIZE 1024