diff --git a/src/foreign/foreign.c b/src/foreign/foreign.c
index a432f21a12..ed5ae66de3 100644
--- a/src/foreign/foreign.c
+++ b/src/foreign/foreign.c
@@ -418,9 +418,9 @@ static Scheme_Object *foreign_ffi_obj_name(int argc, Scheme_Object *argv[])
/* longs and ints are really the same */
#define scheme_get_realint_val(x,y) \
- scheme_get_int_val(x,(long*)(y))
+ scheme_get_int_val(x,(intptr_t*)(y))
#define scheme_get_unsigned_realint_val(x,y) \
- scheme_get_unsigned_int_val(x,(unsigned long*)(y))
+ scheme_get_unsigned_int_val(x,(uintptr_t*)(y))
#define scheme_make_realinteger_value \
scheme_make_integer_value
#define scheme_make_realinteger_value_from_unsigned \
@@ -1049,13 +1049,13 @@ ffi_abi sym_to_abi(char *who, Scheme_Object *sym)
if (SCHEME_FALSEP(sym) || SAME_OBJ(sym, default_sym))
return FFI_DEFAULT_ABI;
else if (SAME_OBJ(sym, sysv_sym)) {
-#ifdef WINDOWS_DYNAMIC_LOAD
+#if defined(WINDOWS_DYNAMIC_LOAD) && !defined(_WIN64)
return FFI_SYSV;
#else
scheme_signal_error("%s: ABI not implemented: %V", who, sym);
#endif
} else if (SAME_OBJ(sym, stdcall_sym)) {
-#ifdef WINDOWS_DYNAMIC_LOAD
+#if defined(WINDOWS_DYNAMIC_LOAD) && !defined(_WIN64)
return FFI_STDCALL;
#else
scheme_signal_error("%s: ABI not implemented: %V", who, sym);
diff --git a/src/foreign/foreign.rktc b/src/foreign/foreign.rktc
index e1698c1f21..35f2936f14 100755
--- a/src/foreign/foreign.rktc
+++ b/src/foreign/foreign.rktc
@@ -332,9 +332,9 @@ THREAD_LOCAL_DECL(static Scheme_Hash_Table *opened_libs);
/* longs and ints are really the same */
#define scheme_get_realint_val(x,y) \
- scheme_get_int_val(x,(long*)(y))
+ scheme_get_int_val(x,(intptr_t*)(y))
#define scheme_get_unsigned_realint_val(x,y) \
- scheme_get_unsigned_int_val(x,(unsigned long*)(y))
+ scheme_get_unsigned_int_val(x,(uintptr_t*)(y))
#define scheme_make_realinteger_value \
scheme_make_integer_value
#define scheme_make_realinteger_value_from_unsigned \
diff --git a/src/racket/include/schthread.h b/src/racket/include/schthread.h
index 42850fd25a..6110226377 100644
--- a/src/racket/include/schthread.h
+++ b/src/racket/include/schthread.h
@@ -28,8 +28,14 @@ extern "C" {
#if defined(MZ_USE_PLACES) || defined(MZ_USE_FUTURES)
# define USE_THREAD_LOCAL
# if _MSC_VER
-# define THREAD_LOCAL /* empty */
-# define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS
+# ifdef _WIN64
+# define THREAD_LOCAL __declspec(thread)
+# define MZ_THREAD_EXTERN extern
+# define IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC
+# else
+# define THREAD_LOCAL /* empty */
+# define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS
+# endif
# elif (defined(__APPLE__) && defined(__MACH__)) || defined(GC2_PLACES_TESTING)
# define IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS
# if defined(__x86_64__) || defined(__i386__)
@@ -61,6 +67,10 @@ extern "C" {
#define MZ_EXTERN extern MZ_DLLSPEC
+#ifndef MZ_THREAD_EXTERN
+# define MZ_THREAD_EXTERN MZ_EXTERN
+#endif
+
MZ_EXTERN void scheme_init_os_thread();
/* **************************************************************** */
@@ -385,10 +395,23 @@ XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION;
# endif
#else
/* Using `THREAD_LOCAL' variable: */
-MZ_EXTERN THREAD_LOCAL Thread_Local_Variables scheme_thread_locals;
-# define scheme_get_thread_local_variables() (&scheme_thread_locals)
-# ifdef MZ_XFORM
+# if defined(IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC) && !defined(__mzscheme_private__)
+# ifdef MZ_XFORM
+START_XFORM_SKIP;
+# endif
+static __inline Thread_Local_Variables *scheme_get_thread_local_variables() {
+ return scheme_external_get_thread_local_variables();
+}
+# ifdef MZ_XFORM
+END_XFORM_SKIP;
+XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION;
+# endif
+# else
+MZ_THREAD_EXTERN THREAD_LOCAL Thread_Local_Variables scheme_thread_locals;
+# define scheme_get_thread_local_variables() (&scheme_thread_locals)
+# ifdef MZ_XFORM
XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL;
+# endif
# endif
#endif
diff --git a/src/racket/sconfig.h b/src/racket/sconfig.h
index b398f69755..f5408f37cc 100644
--- a/src/racket/sconfig.h
+++ b/src/racket/sconfig.h
@@ -492,7 +492,11 @@
|| (defined(_MSC_VER) \
&& (defined(__WIN32__) || defined(WIN32) || defined(_WIN32))))
-# define SCHEME_PLATFORM_LIBRARY_SUBPATH "win32\\i386"
+# ifdef _WIN64
+# define SCHEME_PLATFORM_LIBRARY_SUBPATH "win32\\x86_64"
+# else
+# define SCHEME_PLATFORM_LIBRARY_SUBPATH "win32\\i386"
+# endif
# define SYSTEM_TYPE_NAME "windows"
# define DOS_FILE_SYSTEM
@@ -521,7 +525,9 @@
# define DO_STACK_CHECK
# define WINDOWS_FIND_STACK_BOUNDS
-# define USE_MZ_SETJMP
+# ifndef _WIN64
+# define USE_MZ_SETJMP
+# endif
# define WINDOWS_DYNAMIC_LOAD
@@ -584,7 +590,11 @@
# define USE_ICONV_DLL
# define NO_MBTOWC_FUNCTIONS
-# define MZ_USE_JIT_I386
+# ifdef _WIN64
+# define MZ_USE_JIT_X86_64
+# else
+# define MZ_USE_JIT_I386
+# endif
# define MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC
# define FLAGS_ALREADY_SET
diff --git a/src/racket/src/bgnfloat.inc b/src/racket/src/bgnfloat.inc
index 75f1fab115..9a1d02c852 100644
--- a/src/racket/src/bgnfloat.inc
+++ b/src/racket/src/bgnfloat.inc
@@ -13,9 +13,9 @@ int IS_FLOAT_INF(FP_TYPE d)
}
/* Must not trigger GC! (Required by xform in number.c) */
-FP_TYPE SCHEME_BIGNUM_TO_FLOAT_INFO(const Scheme_Object *n, int skip, int *_skipped)
+FP_TYPE SCHEME_BIGNUM_TO_FLOAT_INFO(const Scheme_Object *n, intptr_t skip, intptr_t *_skipped)
{
- int nl, skipped;
+ intptr_t nl, skipped;
bigdig *na;
FP_TYPE d;
diff --git a/src/racket/src/bignum.c b/src/racket/src/bignum.c
index be2a228332..7ef81df2bc 100644
--- a/src/racket/src/bignum.c
+++ b/src/racket/src/bignum.c
@@ -512,7 +512,7 @@ static Scheme_Object *make_single_bigdig_result(int pos, bigdig d)
static Scheme_Object *bignum_copy(const Scheme_Object *a, intptr_t msd)
{
Scheme_Object* o;
- int c;
+ intptr_t c;
bigdig* o_digs;
c = SCHEME_BIGLEN(a);
@@ -607,7 +607,7 @@ int scheme_bignum_ge(const Scheme_Object *a, const Scheme_Object *b)
Scheme_Object *scheme_bignum_negate(const Scheme_Object *n)
{
Scheme_Object *o;
- int len;
+ intptr_t len;
len = SCHEME_BIGLEN(n);
@@ -631,9 +631,9 @@ Scheme_Object *scheme_bignum_negate(const Scheme_Object *n)
return o;
}
-static bigdig* allocate_bigdig_array(int length)
+static bigdig* allocate_bigdig_array(intptr_t length)
{
- int i;
+ intptr_t i;
bigdig* res;
if (length > 4096) {
res = (bigdig *)scheme_malloc_fail_ok(scheme_malloc_atomic, length * sizeof(bigdig));
@@ -647,7 +647,7 @@ static bigdig* allocate_bigdig_array(int length)
}
/* We don't want to count leading digits of 0 in the bignum's length */
-XFORM_NONGCING static int bigdig_length(bigdig* array, int alloced)
+XFORM_NONGCING static intptr_t bigdig_length(bigdig* array, intptr_t alloced)
{
alloced--;
while (alloced >= 0 && array[alloced] == 0) {
@@ -690,7 +690,7 @@ static Scheme_Object *bignum_add_sub(const Scheme_Object *a, const Scheme_Object
if (a_pos == b_pos) /* addition */
{
- int carry;
+ intptr_t carry;
o_digs = allocate_bigdig_array(max_size);
@@ -884,7 +884,7 @@ Scheme_Object *scheme_generic_integer_power(const Scheme_Object *a, const Scheme
|| (SCHEME_INT_VAL(b) > 10000))
scheme_signal_error(too_big);
else if (SCHEME_BIGNUMP(a)) {
- int len = SCHEME_BIGLEN(a);
+ intptr_t len = SCHEME_BIGLEN(a);
if ((len > 10000)
|| (len * SCHEME_INT_VAL(b)) > 10000)
scheme_signal_error(too_big);
@@ -1184,7 +1184,7 @@ char *scheme_bignum_to_allocated_string(const Scheme_Object *b, int radix, int a
{
Scheme_Object *c;
unsigned char* str, *str2;
- int i, slen, start, clen;
+ intptr_t i, slen, start, clen;
bigdig *c_digs;
SAFE_SPACE(csd)
@@ -1277,7 +1277,7 @@ char *scheme_bignum_to_string(const Scheme_Object *b, int radix)
Scheme_Object *scheme_read_bignum(const mzchar *str, int offset, int radix)
{
- int len, negate, stri, alloc, i, test;
+ intptr_t len, negate, stri, alloc, i, test;
Scheme_Object* o;
bigdig* digs;
unsigned char* istring;
@@ -1363,7 +1363,7 @@ Scheme_Object *scheme_read_bignum_bytes(const char *str, int offset, int radix)
static void bignum_double_inplace(Scheme_Object **_stk_o)
{
- int carry, len;
+ intptr_t carry, len;
len = SCHEME_BIGLEN(*_stk_o);
@@ -1379,7 +1379,7 @@ static void bignum_double_inplace(Scheme_Object **_stk_o)
static void bignum_add1_inplace(Scheme_Object **_stk_o)
{
- int carry, len;
+ intptr_t carry, len;
len = SCHEME_BIGLEN(*_stk_o);
@@ -1518,7 +1518,7 @@ static uintptr_t fixnum_sqrt(uintptr_t n, uintptr_t *rem)
for (i = SQRT_BIT_MAX; i >= 0; i--)
{
- try_root = root | (0x1 << i);
+ try_root = root | ((intptr_t)0x1 << i);
try_square = try_root * try_root;
if (try_square <= n)
{
@@ -1539,7 +1539,7 @@ Scheme_Object *scheme_integer_sqrt(const Scheme_Object *n)
Scheme_Object *scheme_integer_sqrt_rem(const Scheme_Object *n, Scheme_Object **remainder)
{
Scheme_Object *o;
- int rem_size;
+ intptr_t rem_size;
SAFE_SPACE(qsd)
diff --git a/src/racket/src/bool.c b/src/racket/src/bool.c
index b12aa3b1b6..cfbd223296 100644
--- a/src/racket/src/bool.c
+++ b/src/racket/src/bool.c
@@ -448,7 +448,7 @@ int is_equal (Scheme_Object *obj1, Scheme_Object *obj2, Equal_Info *eql)
return 0;
} else if (SCHEME_BYTE_STRINGP(obj1)
|| SCHEME_GENERAL_PATHP(obj1)) {
- int l1, l2;
+ intptr_t l1, l2;
if ((eql->for_chaperone == 1) && (!SCHEME_IMMUTABLEP(obj1)
|| !SCHEME_IMMUTABLEP(obj2)))
return 0;
@@ -457,7 +457,7 @@ int is_equal (Scheme_Object *obj1, Scheme_Object *obj2, Equal_Info *eql)
return ((l1 == l2)
&& !memcmp(SCHEME_BYTE_STR_VAL(obj1), SCHEME_BYTE_STR_VAL(obj2), l1));
} else if (SCHEME_CHAR_STRINGP(obj1)) {
- int l1, l2;
+ intptr_t l1, l2;
if ((eql->for_chaperone == 1) && (!SCHEME_IMMUTABLEP(obj1)
|| !SCHEME_IMMUTABLEP(obj2)))
return 0;
@@ -615,7 +615,7 @@ int is_equal (Scheme_Object *obj1, Scheme_Object *obj2, Equal_Info *eql)
static int vector_equal(Scheme_Object *vec1, Scheme_Object *vec2, Equal_Info *eql)
{
- int i, len;
+ intptr_t i, len;
len = SCHEME_VEC_SIZE(vec1);
if (len != SCHEME_VEC_SIZE(vec2))
diff --git a/src/racket/src/char.c b/src/racket/src/char.c
index 8ba7d03e71..a840cff0f7 100644
--- a/src/racket/src/char.c
+++ b/src/racket/src/char.c
@@ -245,14 +245,14 @@ integer_to_char (int argc, Scheme_Object *argv[])
if ((v >= 0)
&& (v <= 0x10FFFF)
&& ((v < 0xD800) || (v > 0xDFFF)))
- return _scheme_make_char(v);
+ return _scheme_make_char((int)v);
} else if (SCHEME_BIGNUMP(argv[0])
&& SCHEME_BIGPOS(argv[0])) {
/* On 32-bit machines, there's still a chance... */
intptr_t y;
if (scheme_get_int_val(argv[0], &y)) {
if (y <= 0x10FFFF)
- return _scheme_make_char(y);
+ return _scheme_make_char((int)y);
}
}
diff --git a/src/racket/src/dynext.c b/src/racket/src/dynext.c
index 9bf09326e4..bb594584ff 100644
--- a/src/racket/src/dynext.c
+++ b/src/racket/src/dynext.c
@@ -179,7 +179,7 @@ typedef struct {
static char *copy_vers(char *vers)
{
if (vers) {
- int len = strlen(vers);
+ intptr_t len = strlen(vers);
char *vcopy;
vcopy = (char *)scheme_malloc_atomic(len + 1);
memcpy(vcopy, vers, len + 1);
diff --git a/src/racket/src/env.c b/src/racket/src/env.c
index c312bfb113..b1103ff190 100644
--- a/src/racket/src/env.c
+++ b/src/racket/src/env.c
@@ -1177,7 +1177,7 @@ Scheme_Bucket_Table *scheme_clone_toplevel(Scheme_Bucket_Table *ht, Scheme_Env *
{
Scheme_Bucket_Table *r;
Scheme_Bucket **bs;
- int i;
+ intptr_t i;
r = scheme_make_bucket_table(ht->size, SCHEME_hash_ptr);
if (home)
@@ -2050,7 +2050,7 @@ static Scheme_Local *get_frame_loc(Scheme_Comp_Env *frame,
Scheme_Object *scheme_hash_module_variable(Scheme_Env *env, Scheme_Object *modidx,
Scheme_Object *stxsym, Scheme_Object *insp,
- int pos, int mod_phase)
+ int pos, intptr_t mod_phase)
{
Scheme_Object *val;
Scheme_Hash_Table *ht;
@@ -2084,7 +2084,7 @@ Scheme_Object *scheme_hash_module_variable(Scheme_Env *env, Scheme_Object *modid
mv->sym = stxsym;
mv->insp = insp;
mv->pos = pos;
- mv->mod_phase = mod_phase;
+ mv->mod_phase = (int)mod_phase;
val = (Scheme_Object *)mv;
@@ -2296,7 +2296,7 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec
too bad). */
if (!best_match) {
char onstack[50], *buf;
- int len;
+ intptr_t len;
while (1) {
env->id_counter++;
@@ -2358,7 +2358,7 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec
int scheme_tl_id_is_sym_used(Scheme_Hash_Table *marked_names, Scheme_Object *sym)
{
- int i;
+ intptr_t i;
Scheme_Object *l, *a;
Scheme_Hash_Table *rev_ht;
@@ -2814,9 +2814,9 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
if (!scheme_hash_get(frame->skip_table, SCHEME_STX_VAL(find_id))) {
/* Skip ahead. 0 maps to frame, 1 maps to j delta, and 2 maps to p delta */
val = scheme_hash_get(frame->skip_table, scheme_make_integer(1));
- j += SCHEME_INT_VAL(val);
+ j += (int)SCHEME_INT_VAL(val);
val = scheme_hash_get(frame->skip_table, scheme_make_integer(2));
- p += SCHEME_INT_VAL(val);
+ p += (int)SCHEME_INT_VAL(val);
frame = (Scheme_Comp_Env *)scheme_hash_get(frame->skip_table, scheme_make_integer(0));
} else
break;
@@ -3059,7 +3059,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
pos = scheme_check_accessible_in_module(genv, env->insp, in_modidx,
find_id, src_find_id, certs, NULL, rename_insp, -1, 1,
_protected, NULL, env->genv, NULL);
- modpos = SCHEME_INT_VAL(pos);
+ modpos = (int)SCHEME_INT_VAL(pos);
} else
modpos = -1;
@@ -3365,7 +3365,7 @@ static Scheme_Object *transitive_k(void)
p->ku.k.p1 = NULL;
- register_transitive_use(info, p->ku.k.i1, p->ku.k.i2);
+ register_transitive_use(info, (int)p->ku.k.i1, (int)p->ku.k.i2);
return scheme_false;
}
@@ -3688,7 +3688,7 @@ static Scheme_Object *do_optimize_info_lookup(Optimize_Info *info, int pos, int
if (SCHEME_BOXP(n)) {
/* A potential-size record: */
if (potential_size)
- *potential_size = SCHEME_INT_VAL(SCHEME_BOX_VAL(n));
+ *potential_size = (int)SCHEME_INT_VAL(SCHEME_BOX_VAL(n));
break;
}
if (single_use)
@@ -3910,7 +3910,7 @@ Resolve_Prefix *scheme_remap_prefix(Resolve_Prefix *rp, Resolve_Info *ri)
if (rp->num_lifts)
cnt = rp->num_stxes;
else
- cnt = ri->stx_map->count;
+ cnt = (int)ri->stx_map->count;
new_stxes = MALLOC_N(Scheme_Object *, cnt);
@@ -4071,7 +4071,7 @@ static int resolve_info_lookup(Resolve_Info *info, int pos, int *flags, Scheme_O
tl = SCHEME_CAR(lifted);
ca = (Scheme_Object **)SCHEME_CDR(lifted);
if (convert_shift)
- shifted = SCHEME_INT_VAL(ca[0]) + convert_shift - 1;
+ shifted = (int)SCHEME_INT_VAL(ca[0]) + convert_shift - 1;
else
shifted = 0;
} else {
@@ -4092,7 +4092,7 @@ static int resolve_info_lookup(Resolve_Info *info, int pos, int *flags, Scheme_O
int sz, i;
mzshort *posmap, *boxmap;
Scheme_Object *vec, *loc;
- sz = SCHEME_INT_VAL(ca[0]);
+ sz = (int)SCHEME_INT_VAL(ca[0]);
posmap = (mzshort *)ca[1];
boxmap = (mzshort *)ca[3];
vec = scheme_make_vector(sz + 1, NULL);
@@ -4217,7 +4217,7 @@ int scheme_resolve_quote_syntax_offset(int i, Resolve_Info *info)
scheme_hash_set(ht, scheme_make_integer(i), v);
}
- return SCHEME_INT_VAL(v);
+ return (int)SCHEME_INT_VAL(v);
}
int scheme_resolve_quote_syntax_pos(Resolve_Info *info)
@@ -4256,7 +4256,7 @@ Scheme_Object *scheme_resolve_invent_toplevel(Resolve_Info *info)
skip = scheme_resolve_toplevel_pos(info);
count = SCHEME_VEC_ELS(info->lifts)[1];
- pos = (SCHEME_INT_VAL(count)
+ pos = (int)(SCHEME_INT_VAL(count)
+ info->prefix->num_toplevels
+ info->prefix->num_stxes
+ (info->prefix->num_stxes ? 1 : 0));
@@ -4508,7 +4508,7 @@ namespace_mapped_symbols(int argc, Scheme_Object *argv[])
Scheme_Hash_Table *mapped;
Scheme_Bucket_Table *ht;
Scheme_Bucket **bs;
- int i, j;
+ intptr_t i, j;
if ((argc > 0) && !SCHEME_NAMESPACEP(argv[0]))
scheme_wrong_type("namespace-mapped-symbols", "namespace", 0, argc, argv);
@@ -4559,7 +4559,7 @@ static Scheme_Object *do_variable_namespace(const char *who, int tl, int argc, S
{
Scheme_Object *v;
Scheme_Env *env;
- int ph;
+ intptr_t ph;
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_global_ref_type))
env = NULL;
@@ -4841,7 +4841,7 @@ static Scheme_Object *
local_phase_level(int argc, Scheme_Object *argv[])
{
Scheme_Thread *p = scheme_current_thread;
- int phase;
+ intptr_t phase;
phase = (p->current_local_env
? p->current_local_env->genv->phase
@@ -5382,7 +5382,7 @@ do_local_lift_expr(const char *who, int stx_pos, int argc, Scheme_Object *argv[]
if (stx_pos) {
if (SCHEME_INTP(argv[0])) {
- count = SCHEME_INT_VAL(argv[0]);
+ count = (int)SCHEME_INT_VAL(argv[0]);
} else if (SCHEME_BIGNUMP(argv[0])) {
if (SCHEME_BIGPOS(argv[0]))
scheme_raise_out_of_memory(NULL, NULL);
@@ -5744,14 +5744,14 @@ static Scheme_Object *read_toplevel(Scheme_Object *obj)
if (!SCHEME_PAIRP(obj)) return NULL;
- depth = SCHEME_INT_VAL(SCHEME_CAR(obj));
+ depth = (int)SCHEME_INT_VAL(SCHEME_CAR(obj));
obj = SCHEME_CDR(obj);
if (SCHEME_PAIRP(obj)) {
- pos = SCHEME_INT_VAL(SCHEME_CAR(obj));
+ pos = (int)SCHEME_INT_VAL(SCHEME_CAR(obj));
flags = SCHEME_INT_VAL(SCHEME_CDR(obj)) & SCHEME_TOPLEVEL_FLAGS_MASK;
} else {
- pos = SCHEME_INT_VAL(obj);
+ pos = (int)SCHEME_INT_VAL(obj);
flags = 0;
}
@@ -5817,12 +5817,12 @@ static Scheme_Object *do_read_local(Scheme_Type t, Scheme_Object *obj)
int n, flags;
if (SCHEME_PAIRP(obj)) {
- flags = SCHEME_INT_VAL(SCHEME_CAR(obj));
+ flags = (int)SCHEME_INT_VAL(SCHEME_CAR(obj));
obj = SCHEME_CDR(obj);
} else
flags = 0;
- n = SCHEME_INT_VAL(obj);
+ n = (int)SCHEME_INT_VAL(obj);
return scheme_make_local(t, n, flags);
}
@@ -5881,7 +5881,8 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj, Scheme_Object *ins
{
Resolve_Prefix *rp;
Scheme_Object *tv, *sv, **a, *stx;
- int i, uses_unsafe = 0;
+ intptr_t i;
+ int uses_unsafe = 0;
if (!SCHEME_PAIRP(obj)) return NULL;
@@ -5906,9 +5907,9 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj, Scheme_Object *ins
rp = MALLOC_ONE_TAGGED(Resolve_Prefix);
rp->so.type = scheme_resolve_prefix_type;
- rp->num_toplevels = SCHEME_VEC_SIZE(tv);
- rp->num_stxes = SCHEME_VEC_SIZE(sv);
- rp->num_lifts = i;
+ rp->num_toplevels = (int)SCHEME_VEC_SIZE(tv);
+ rp->num_stxes = (int)SCHEME_VEC_SIZE(sv);
+ rp->num_lifts = (int)i;
if (uses_unsafe)
rp->uses_unsafe = insp;
diff --git a/src/racket/src/gmp/gmp.h b/src/racket/src/gmp/gmp.h
index 79aacf8c8d..e6819012c8 100644
--- a/src/racket/src/gmp/gmp.h
+++ b/src/racket/src/gmp/gmp.h
@@ -85,8 +85,8 @@ typedef int mp_limb_signed_t;
typedef unsigned long long int mp_limb_t;
typedef long long int mp_limb_signed_t;
#else
-typedef unsigned long int mp_limb_t;
-typedef long int mp_limb_signed_t;
+typedef uintptr_t mp_limb_t;
+typedef intptr_t mp_limb_signed_t;
#endif
#endif
@@ -97,8 +97,8 @@ typedef __gmp_const mp_limb_t * mp_srcptr;
typedef int mp_size_t;
typedef int mp_exp_t;
#else
-typedef long int mp_size_t;
-typedef long int mp_exp_t;
+typedef intptr_t mp_size_t;
+typedef intptr_t mp_exp_t;
#endif
typedef struct
diff --git a/src/racket/src/hash.c b/src/racket/src/hash.c
index 463fe1e540..29ec9d98d2 100644
--- a/src/racket/src/hash.c
+++ b/src/racket/src/hash.c
@@ -518,7 +518,7 @@ void scheme_reset_hash_table(Scheme_Hash_Table *table, int *history)
/*========================================================================*/
Scheme_Bucket_Table *
-scheme_make_bucket_table (int size, int type)
+scheme_make_bucket_table (intptr_t size, int type)
{
Scheme_Bucket_Table *table;
size_t asize;
diff --git a/src/racket/src/jit.c b/src/racket/src/jit.c
index 8fc89deb9f..6d91743c88 100644
--- a/src/racket/src/jit.c
+++ b/src/racket/src/jit.c
@@ -1500,7 +1500,7 @@ static void _jit_prolog_again(mz_jit_state *jitter, int n, int ret_addr_reg)
# define mz_pop_locals() ADDQir((LOCAL_FRAME_SIZE << JIT_LOG_WORD_SIZE), JIT_SP)
# define JIT_FRAME_FLONUM_OFFSET (-(JIT_WORD_SIZE * (LOCAL_FRAME_SIZE + 3)))
# define _jit_prolog_again(jitter, n, ret_addr_reg) (PUSHQr(ret_addr_reg), jit_base_prolog())
-# ifdef MZ_USE_JIT_X86_64
+# if defined(MZ_USE_JIT_X86_64) && !defined(_WIN64)
# define jit_shuffle_saved_regs() (MOVQrr(_ESI, _R12), MOVQrr(_EDI, _R13))
# define jit_unshuffle_saved_regs() (MOVQrr(_R12, _ESI), MOVQrr(_R13, _EDI))
# else
@@ -3572,8 +3572,9 @@ static int generate_non_tail_call(mz_jit_state *jitter, int num_rands, int direc
if (need_set_rs) {
JIT_UPDATE_THREAD_RSPTR();
}
- mz_prepare_direct_prim(3);
+ mz_prepare_direct_prim(3);
jit_pusharg_p(JIT_V1);
+ CHECK_LIMIT();
if (num_rands < 0) { jit_movr_p(JIT_V1, JIT_R0); } /* save argc to manually pop runstack */
{
__END_SHORT_JUMPS__(1);
diff --git a/src/racket/src/lightning/i386/core.h b/src/racket/src/lightning/i386/core.h
index 0c46b14562..836c820cc9 100644
--- a/src/racket/src/lightning/i386/core.h
+++ b/src/racket/src/lightning/i386/core.h
@@ -364,7 +364,24 @@ struct jit_local_state {
#endif
#ifdef JIT_X86_64
-# define jit_base_prolog() (PUSHQr(_EBP), MOVQrr(_ESP, _EBP), PUSHQr(_EBX), PUSHQr(_R12), PUSHQr(_R13))
+# ifdef _WIN64
+# define jit_preserve_locals() (ADDQir(-32, JIT_SP))
+# define jit_restore_locals() (ADDQir(32, JIT_SP))
+# define _RCS1 _ESI
+# define _RCS2 _EDI
+# define jit_reg_is_arg(reg) (((reg) ==_ECX) || ((reg) == _EDX))
+# else
+/* For AMD64 ABI, R12 and R13 are callee-save, instead of EDI and ESI */
+# define jit_preserve_locals() (MOVQrr(_ESI, _R12), MOVQrr(_EDI, _R13))
+# define jit_restore_locals() (MOVQrr(_R12, _ESI), MOVQrr(_R13, _EDI))
+# define _RCS1 _R12
+# define _RCS2 _R13
+# define jit_reg_is_arg(reg) (((reg) == _EDI) || ((reg) ==_ESI) || ((reg) == _EDX))
+# endif
+#endif
+
+#ifdef JIT_X86_64
+# define jit_base_prolog() (PUSHQr(_EBP), MOVQrr(_ESP, _EBP), PUSHQr(_EBX), PUSHQr(_RCS1), PUSHQr(_RCS2))
# define jit_prolog(n) (_jitl.nextarg_geti = 0, jit_base_prolog())
#else
# define jit_base_prolog() (PUSHLr(_EBP), MOVLrr(_ESP, _EBP), PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI))
@@ -392,20 +409,18 @@ struct jit_local_state {
#define jit_prepare_d(nd) (_jitl.argssize += 2 * (nd))
#ifdef JIT_X86_64
# define jit_pusharg_i(rs) (_jitl.argpushes--, MOVQrr(rs, JIT_CALLTMPSTART + _jitl.argpushes))
-# define jit_normal_pushonlyarg_i(rs) (_jitl.argpushes--, MOVQrr(rs, _EDI))
+# define jit_normal_pushonlyarg_i(rs) (_jitl.argpushes--, MOVQrr(rs, jit_arg_reg_order[0]))
# define jit_save_argstate(curstate) curstate = _jitl.argpushes;
# define jit_restore_argstate(curstate) _jitl.argpushes = curstate;
# define jit_finish(sub) (jit_shift_args(), (void)jit_calli((sub)), jit_restore_locals())
# define jit_normal_finish(sub) jit_calli((sub))
# define jit_return_pop_insn_len() 0
-# define jit_reg_is_arg(reg) ((reg == _EDI) || (reg ==_ESI) || (reg == _EDX))
# define jit_finishr(reg) ((jit_reg_is_arg((reg)) ? MOVQrr(reg, JIT_REXTMP) : (void)0), \
jit_shift_args(), \
jit_reg_is_arg((reg)) ? CALQsr((JIT_REXTMP)) : jit_callr((reg)), \
jit_restore_locals())
-/* R12 and R13 are callee-save, instead of EDI and ESI */
# define jit_shift_args() \
- (MOVQrr(_ESI, _R12), MOVQrr(_EDI, _R13), \
+ (jit_preserve_locals(), \
(_jitl.argssize \
? (MOVQrr(JIT_CALLTMPSTART, jit_arg_reg_order[0]), \
((_jitl.argssize > 1) \
@@ -415,8 +430,6 @@ struct jit_local_state {
: (void)0)) \
: (void)0)) \
: (void)0))
-# define jit_restore_locals() \
- (MOVQrr(_R12, _ESI), MOVQrr(_R13, _EDI))
#else
# define jit_pusharg_i(rs) PUSHLr(rs)
# define jit_normal_pushonlyarg_i(rs) jit_pusharg_i(rs)
@@ -436,7 +449,11 @@ struct jit_local_state {
#define jit_arg_l() (_jitl.nextarg_geti++)
#define jit_arg_p() (_jitl.nextarg_geti++)
#define jit_arg_reg(p) (jit_arg_reg_order[p])
+# ifdef _WIN64
+static const int const jit_arg_reg_order[] = { _ECX, _EDX, JIT_R(8), JIT_R(9) };
+# else
static const int const jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX };
+# endif
#else
#define jit_arg_c() ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_uc() ((_jitl.framesize += sizeof(int)) - sizeof(int))
@@ -589,7 +606,7 @@ static intptr_t _CHECK_TINY(intptr_t diff) { if ((diff < -128) || (diff > 127))
# define jit_patch_short_at(jump_pc,v) jit_patch_normal_at(jump_pc, v)
# define jit_patch_branch_at(jump_pc,v) (_jitl.long_jumps ? jit_patch_long_at((jump_pc)-3, v) : jit_patch_short_at(jump_pc, v))
# define jit_patch_ucbranch_at(jump_pc,v) (_jitl.long_jumps ? jit_patch_long_at((jump_pc)-3, v) : jit_patch_short_at(jump_pc, v))
-# define jit_ret() (POPQr(_R13), POPQr(_R12), POPQr(_EBX), POPQr(_EBP), RET_())
+# define jit_ret() (POPQr(_RCS2), POPQr(_RCS1), POPQr(_EBX), POPQr(_EBP), RET_())
#else
# define jit_patch_branch_at(jump_pc,v) jit_patch_normal_at(jump_pc, v)
# define jit_patch_ucbranch_at(jump_pc,v) jit_patch_normal_at(jump_pc, v)
diff --git a/src/racket/src/module.c b/src/racket/src/module.c
index 2fa3a03525..34b6028bd6 100644
--- a/src/racket/src/module.c
+++ b/src/racket/src/module.c
@@ -3430,7 +3430,7 @@ static void setup_accessible_table(Scheme_Module *m)
}
}
-Scheme_Env *scheme_module_access(Scheme_Object *name, Scheme_Env *env, int rev_mod_phase)
+Scheme_Env *scheme_module_access(Scheme_Object *name, Scheme_Env *env, intptr_t rev_mod_phase)
{
Scheme_Env *menv;
diff --git a/src/racket/src/mzrt.c b/src/racket/src/mzrt.c
index 26531ca63e..887a923037 100644
--- a/src/racket/src/mzrt.c
+++ b/src/racket/src/mzrt.c
@@ -589,7 +589,7 @@ int mzrt_sema_destroy(mzrt_sema *s)
typedef struct mzrt_rwlock {
HANDLE readEvent;
HANDLE writeMutex;
- uintptr_t readers;
+ LONG readers;
} mzrt_rwlock;
int mzrt_rwlock_create(mzrt_rwlock **lock) {
diff --git a/src/racket/src/mzrt.h b/src/racket/src/mzrt.h
index 6c12839752..eaa7588928 100644
--- a/src/racket/src/mzrt.h
+++ b/src/racket/src/mzrt.h
@@ -171,7 +171,7 @@ static MZ_INLINE int mzrt_cas(volatile size_t *addr, size_t old, size_t new_val)
# endif
#elif defined(_MSC_VER)
# if defined(_AMD64_)
- return _InterlockedCompareExchange64((LONGLONG volatile *)addr, (LONGLONG)new_val, (LONGLONG)old) == (LONGLONG)old
+ return _InterlockedCompareExchange64((LONGLONG volatile *)addr, (LONGLONG)new_val, (LONGLONG)old) == (LONGLONG)old;
# elif _M_IX86 >= 400
return _InterlockedCompareExchange((LONG volatile *)addr, (LONG)new_val, (LONG)old) == (LONG)old;
# endif
diff --git a/src/racket/src/mzsj86.c b/src/racket/src/mzsj86.c
index 32ca7c9ec4..1706e81448 100644
--- a/src/racket/src/mzsj86.c
+++ b/src/racket/src/mzsj86.c
@@ -24,6 +24,8 @@
#include "schpriv.h"
+#ifndef _WIN64
+
int __declspec(naked) scheme_mz_setjmp(mz_jmp_buf b)
{
__asm {
@@ -55,3 +57,5 @@ void __declspec(naked) scheme_mz_longjmp(mz_jmp_buf b, int v)
ret
}
}
+
+#endif
diff --git a/src/racket/src/schemef.h b/src/racket/src/schemef.h
index ce032ce4ea..4c749a0ee6 100644
--- a/src/racket/src/schemef.h
+++ b/src/racket/src/schemef.h
@@ -447,7 +447,7 @@ MZ_EXTERN void scheme_remove_gc_callback(Scheme_Object *key);
/* hash tables */
/*========================================================================*/
-MZ_EXTERN Scheme_Bucket_Table *scheme_make_bucket_table(int size_hint, int type);
+MZ_EXTERN Scheme_Bucket_Table *scheme_make_bucket_table(intptr_t size_hint, int type);
MZ_EXTERN void scheme_add_to_table(Scheme_Bucket_Table *table, const char *key, void *val, int);
MZ_EXTERN void scheme_change_in_table(Scheme_Bucket_Table *table, const char *key, void *new_val);
MZ_EXTERN void *scheme_lookup_in_table(Scheme_Bucket_Table *table, const char *key);
@@ -609,39 +609,39 @@ MZ_EXTERN const char *scheme_get_proc_name(Scheme_Object *p, int *len, int for_e
/* strings */
/*========================================================================*/
-MZ_EXTERN int scheme_utf8_decode(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
- intptr_t *ipos, char utf16, int permissive);
-MZ_EXTERN int scheme_utf8_decode_as_prefix(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
- intptr_t *ipos, char utf16, int permissive);
-MZ_EXTERN int scheme_utf8_decode_all(const unsigned char *s, int len, unsigned int *us,
- int permissive);
-MZ_EXTERN int scheme_utf8_decode_prefix(const unsigned char *s, int len, unsigned int *us,
- int permissive);
-MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer(const unsigned char *s, int len,
- mzchar *buf, int blen);
-MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, int len,
- mzchar *buf, int blen, intptr_t *rlen);
-XFORM_NONGCING MZ_EXTERN int scheme_utf8_decode_count(const unsigned char *s, int start, int end,
- int *_state, int might_continue, int permissive);
+MZ_EXTERN intptr_t scheme_utf8_decode(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
+ intptr_t *ipos, char utf16, int permissive);
+MZ_EXTERN intptr_t scheme_utf8_decode_as_prefix(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
+ intptr_t *ipos, char utf16, int permissive);
+MZ_EXTERN intptr_t scheme_utf8_decode_all(const unsigned char *s, intptr_t len, unsigned int *us,
+ int permissive);
+MZ_EXTERN intptr_t scheme_utf8_decode_prefix(const unsigned char *s, intptr_t len, unsigned int *us,
+ int permissive);
+MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer(const unsigned char *s, intptr_t len,
+ mzchar *buf, intptr_t blen);
+MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, intptr_t len,
+ mzchar *buf, intptr_t blen, intptr_t *rlen);
+XFORM_NONGCING MZ_EXTERN intptr_t scheme_utf8_decode_count(const unsigned char *s, intptr_t start, intptr_t end,
+ int *_state, int might_continue, int permissive);
-MZ_EXTERN int scheme_utf8_encode(const unsigned int *us, int start, int end,
- unsigned char *s, int dstart,
- char utf16);
-MZ_EXTERN int scheme_utf8_encode_all(const unsigned int *us, int len, unsigned char *s);
+MZ_EXTERN intptr_t scheme_utf8_encode(const unsigned int *us, intptr_t start, intptr_t end,
+ unsigned char *s, intptr_t dstart,
+ char utf16);
+MZ_EXTERN intptr_t scheme_utf8_encode_all(const unsigned int *us, intptr_t len, unsigned char *s);
-MZ_EXTERN char *scheme_utf8_encode_to_buffer(const mzchar *s, int len,
- char *buf, int blen);
-MZ_EXTERN char *scheme_utf8_encode_to_buffer_len(const mzchar *s, int len,
- char *buf, int blen, intptr_t *rlen);
+MZ_EXTERN char *scheme_utf8_encode_to_buffer(const mzchar *s, intptr_t len,
+ char *buf, intptr_t blen);
+MZ_EXTERN char *scheme_utf8_encode_to_buffer_len(const mzchar *s, intptr_t len,
+ char *buf, intptr_t blen, intptr_t *rlen);
-MZ_EXTERN unsigned short *scheme_ucs4_to_utf16(const mzchar *text, int start, int end,
- unsigned short *buf, int bufsize,
- intptr_t *ulen, int term_size);
-MZ_EXTERN mzchar *scheme_utf16_to_ucs4(const unsigned short *text, int start, int end,
- mzchar *buf, int bufsize,
- intptr_t *ulen, int term_size);
+MZ_EXTERN unsigned short *scheme_ucs4_to_utf16(const mzchar *text, intptr_t start, intptr_t end,
+ unsigned short *buf, intptr_t bufsize,
+ intptr_t *ulen, intptr_t term_size);
+MZ_EXTERN mzchar *scheme_utf16_to_ucs4(const unsigned short *text, intptr_t start, intptr_t end,
+ mzchar *buf, intptr_t bufsize,
+ intptr_t *ulen, intptr_t term_size);
MZ_EXTERN Scheme_Object *scheme_open_converter(const char *from_e, const char *to_e);
MZ_EXTERN void scheme_close_converter(Scheme_Object *conv);
@@ -982,17 +982,17 @@ MZ_EXTERN Scheme_Object *scheme_datum_to_kernel_stx(Scheme_Object *e);
/*========================================================================*/
MZ_EXTERN Scheme_Object *scheme_intern_symbol(const char *name);
-MZ_EXTERN Scheme_Object *scheme_intern_exact_symbol(const char *name, unsigned int len);
-MZ_EXTERN Scheme_Object *scheme_intern_exact_char_symbol(const mzchar *name, unsigned int len);
+MZ_EXTERN Scheme_Object *scheme_intern_exact_symbol(const char *name, uintptr_t len);
+MZ_EXTERN Scheme_Object *scheme_intern_exact_char_symbol(const mzchar *name, uintptr_t len);
MZ_EXTERN Scheme_Object *scheme_make_symbol(const char *name); /* Make uninterned */
-MZ_EXTERN Scheme_Object *scheme_make_exact_symbol(const char *name, unsigned int len); /* Exact case */
-MZ_EXTERN Scheme_Object *scheme_make_exact_char_symbol(const mzchar *name, unsigned int len); /* Exact case */
+MZ_EXTERN Scheme_Object *scheme_make_exact_symbol(const char *name, uintptr_t len); /* Exact case */
+MZ_EXTERN Scheme_Object *scheme_make_exact_char_symbol(const mzchar *name, uintptr_t len); /* Exact case */
MZ_EXTERN const char *scheme_symbol_name(Scheme_Object *sym);
-MZ_EXTERN const char *scheme_symbol_name_and_size(Scheme_Object *sym, unsigned int *l, int flags);
+MZ_EXTERN const char *scheme_symbol_name_and_size(Scheme_Object *sym, uintptr_t *l, int flags);
MZ_EXTERN char *scheme_symbol_val(Scheme_Object *sym);
-MZ_EXTERN Scheme_Object *scheme_intern_exact_keyword(const char *name, unsigned int len);
-MZ_EXTERN Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, unsigned int len);
+MZ_EXTERN Scheme_Object *scheme_intern_exact_keyword(const char *name, uintptr_t len);
+MZ_EXTERN Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, uintptr_t len);
/*========================================================================*/
/* structs */
@@ -1132,7 +1132,7 @@ MZ_EXTERN void scheme_signal_received(void);
MZ_EXTERN void scheme_signal_received_at(void *);
MZ_EXTERN void *scheme_get_signal_handle();
-MZ_EXTERN int scheme_char_strlen(const mzchar *s);
+MZ_EXTERN intptr_t scheme_char_strlen(const mzchar *s);
MZ_EXTERN Scheme_Object *scheme_stx_extract_marks(Scheme_Object *stx);
diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h
index 1a801fec9b..c46fa1bca4 100644
--- a/src/racket/src/schpriv.h
+++ b/src/racket/src/schpriv.h
@@ -924,7 +924,7 @@ Scheme_Object *scheme_make_module_rename(Scheme_Object *phase, int kind, Scheme_
Scheme_Object* scheme_extend_module_rename(Scheme_Object *rn, Scheme_Object *modname,
Scheme_Object *locname, Scheme_Object *exname,
Scheme_Object *nominal_src, Scheme_Object *nominal_ex,
- int mod_phase, Scheme_Object *src_phase_index,
+ intptr_t mod_phase, Scheme_Object *src_phase_index,
Scheme_Object *nom_export_phase, Scheme_Object *insp,
int mode);
void scheme_extend_module_rename_with_shared(Scheme_Object *rn, Scheme_Object *modidx,
@@ -1627,7 +1627,7 @@ typedef uintptr_t bigdig;
typedef struct {
Scheme_Inclhash_Object iso;
- int len;
+ intptr_t len;
bigdig *digits;
} Scheme_Bignum;
@@ -1682,9 +1682,9 @@ Scheme_Object *scheme_bignum_xor(const Scheme_Object *a, const Scheme_Object *b)
Scheme_Object *scheme_bignum_not(const Scheme_Object *a);
Scheme_Object *scheme_bignum_shift(const Scheme_Object *a, intptr_t shift);
-XFORM_NONGCING double scheme_bignum_to_double_inf_info(const Scheme_Object *n, int just_use, int *only_need);
+XFORM_NONGCING double scheme_bignum_to_double_inf_info(const Scheme_Object *n, intptr_t just_use, intptr_t *only_need);
#ifdef MZ_USE_SINGLE_FLOATS
-XFORM_NONGCING float scheme_bignum_to_float_inf_info(const Scheme_Object *n, int just_use, int *only_need);
+XFORM_NONGCING float scheme_bignum_to_float_inf_info(const Scheme_Object *n, intptr_t just_use, intptr_t *only_need);
#else
# define scheme_bignum_to_float_inf_info scheme_bignum_to_double_inf_info
#endif
@@ -3093,7 +3093,7 @@ Scheme_Env *scheme_new_module_env(Scheme_Env *env, Scheme_Module *m, int new_exp
int scheme_is_module_env(Scheme_Comp_Env *env);
Scheme_Object *scheme_module_resolve(Scheme_Object *modidx, int load_it);
-Scheme_Env *scheme_module_access(Scheme_Object *modname, Scheme_Env *env, int rev_mod_phase);
+Scheme_Env *scheme_module_access(Scheme_Object *modname, Scheme_Env *env, intptr_t rev_mod_phase);
void scheme_module_force_lazy(Scheme_Env *env, int previous);
int scheme_module_export_position(Scheme_Object *modname, Scheme_Env *env, Scheme_Object *varname);
@@ -3118,7 +3118,7 @@ int scheme_resolved_module_path_value_matches(Scheme_Object *rmp, Scheme_Object
Scheme_Object *scheme_hash_module_variable(Scheme_Env *env, Scheme_Object *modidx,
Scheme_Object *stxsym, Scheme_Object *insp,
- int pos, int mod_phase);
+ int pos, intptr_t mod_phase);
Scheme_Env *scheme_get_kernel_env();
@@ -3534,7 +3534,7 @@ int scheme_hash_tree_equal_rec(Scheme_Hash_Tree *t1, Scheme_Hash_Tree *t2, void
void scheme_set_root_param(int p, Scheme_Object *v);
-Scheme_Object *scheme_intern_exact_parallel_symbol(const char *name, unsigned int len);
+Scheme_Object *scheme_intern_exact_parallel_symbol(const char *name, uintptr_t len);
Scheme_Object *scheme_symbol_append(Scheme_Object *s1, Scheme_Object *s2);
Scheme_Object *scheme_copy_list(Scheme_Object *l);
@@ -3545,9 +3545,6 @@ int scheme_regexp_is_byte(Scheme_Object *re);
Scheme_Object *scheme_make_regexp(Scheme_Object *str, int byte, int pcre, int * volatile result_is_err_string);
int scheme_is_pregexp(Scheme_Object *o);
void scheme_clear_rx_buffers(void);
-unsigned short * scheme_ucs4_to_utf16(const mzchar *text, int start, int end,
- unsigned short *buf, int bufsize,
- intptr_t *ulen, int term_size);
#ifdef SCHEME_BIG_ENDIAN
# define MZ_UCS4_NAME "UCS-4BE"
diff --git a/src/racket/src/string.c b/src/racket/src/string.c
index 21b04c4325..c7c57de7ae 100644
--- a/src/racket/src/string.c
+++ b/src/racket/src/string.c
@@ -321,21 +321,21 @@ static Scheme_Object *byte_converter_p(int argc, Scheme_Object *argv[]);
static void register_traversers(void);
#endif
-static int mz_char_strcmp(const char *who, const mzchar *str1, int l1, const mzchar *str2, int l2, int locale, int size_shortcut);
-static int mz_char_strcmp_ci(const char *who, const mzchar *str1, int l1, const mzchar *str2, int l2, int locale, int size_shortcut);
-static int mz_strcmp(const char *who, unsigned char *str1, int l1, unsigned char *str2, int l2);
+static int mz_char_strcmp(const char *who, const mzchar *str1, intptr_t l1, const mzchar *str2, intptr_t l2, int locale, int size_shortcut);
+static int mz_char_strcmp_ci(const char *who, const mzchar *str1, intptr_t l1, const mzchar *str2, intptr_t l2, int locale, int size_shortcut);
+static int mz_strcmp(const char *who, unsigned char *str1, intptr_t l1, unsigned char *str2, intptr_t l2);
-XFORM_NONGCING static int utf8_decode_x(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
+XFORM_NONGCING static intptr_t utf8_decode_x(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
intptr_t *ipos, intptr_t *jpos,
char compact, char utf16,
int *state, int might_continue, int permissive);
-XFORM_NONGCING static int utf8_encode_x(const unsigned int *us, int start, int end,
- unsigned char *s, int dstart, int dend,
+XFORM_NONGCING static intptr_t utf8_encode_x(const unsigned int *us, intptr_t start, intptr_t end,
+ unsigned char *s, intptr_t dstart, intptr_t dend,
intptr_t *_ipos, intptr_t *_opos, char utf16);
static char *string_to_from_locale(int to_bytes,
- char *in, int delta, int len,
+ char *in, intptr_t delta, intptr_t len,
intptr_t *olen, int perm,
int *no_cvt);
@@ -2803,7 +2803,7 @@ static char *do_convert(iconv_t cd,
#define MZ_SC_BUF_SIZE 32
static char *string_to_from_locale(int to_bytes,
- char *in, int delta, int len,
+ char *in, intptr_t delta, intptr_t len,
intptr_t *olen, int perm,
int *no_cvt)
/* Call this function only when iconv is available, and only when
@@ -4160,18 +4160,18 @@ static Scheme_Object *string_normalize_kd (int argc, Scheme_Object *argv[])
/* strcmps */
/**********************************************************************/
-int scheme_char_strlen(const mzchar *s)
+intptr_t scheme_char_strlen(const mzchar *s)
{
- int i;
+ intptr_t i;
for (i = 0; s[i]; i++) {
}
return i;
}
-static int mz_char_strcmp(const char *who, const mzchar *str1, int l1, const mzchar *str2, int l2,
+static int mz_char_strcmp(const char *who, const mzchar *str1, intptr_t l1, const mzchar *str2, intptr_t l2,
int use_locale, int size_shortcut)
{
- int endres;
+ intptr_t endres;
if (size_shortcut && (l1 != l2))
return 1;
@@ -4209,10 +4209,10 @@ static int mz_char_strcmp(const char *who, const mzchar *str1, int l1, const mzc
return endres;
}
-static int mz_char_strcmp_ci(const char *who, const mzchar *str1, int l1, const mzchar *str2, int l2,
+static int mz_char_strcmp_ci(const char *who, const mzchar *str1, intptr_t l1, const mzchar *str2, intptr_t l2,
int use_locale, int size_shortcut)
{
- int p1, p2, sp1, sp2, a, b;
+ intptr_t p1, p2, sp1, sp2, a, b;
mzchar spec1[SPECIAL_CASE_FOLD_MAX], spec2[SPECIAL_CASE_FOLD_MAX];
if (size_shortcut && (l1 != l2))
@@ -4277,9 +4277,9 @@ static int mz_char_strcmp_ci(const char *who, const mzchar *str1, int l1, const
return ((p1 < l1) || sp1) - ((p2 < l2) || sp2);
}
-static int mz_strcmp(const char *who, unsigned char *str1, int l1, unsigned char *str2, int l2)
+static int mz_strcmp(const char *who, unsigned char *str1, intptr_t l1, unsigned char *str2, intptr_t l2)
{
- int endres;
+ intptr_t endres;
if (l1 > l2) {
l1 = l2;
@@ -4705,8 +4705,8 @@ byte_converter_p(int argc, Scheme_Object *argv[])
/* utf8 converter */
/**********************************************************************/
-static int utf8_decode_x(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
+static intptr_t utf8_decode_x(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
intptr_t *ipos, intptr_t *jpos,
char compact, char utf16, int *_state,
int might_continue, int permissive)
@@ -4732,7 +4732,8 @@ static int utf8_decode_x(const unsigned char *s, int start, int end,
or U+FFFD. */
{
- int i, j, oki, failmode = -3, state;
+ intptr_t i, j, oki;
+ int failmode = -3, state;
int init_doki;
int nextbits, v;
unsigned int sc;
@@ -4970,7 +4971,7 @@ static int utf8_decode_x(const unsigned char *s, int start, int end,
# endif
}
} else {
- int delta;
+ intptr_t delta;
delta = (i - oki);
if (delta) {
if (j + delta + 1 < dend) {
@@ -5060,16 +5061,16 @@ static int utf8_decode_x(const unsigned char *s, int start, int end,
return j - dstart;
}
-int scheme_utf8_decode(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
+intptr_t scheme_utf8_decode(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
intptr_t *ipos, char utf16, int permissive)
{
return utf8_decode_x(s, start, end, us, dstart, dend,
ipos, NULL, utf16, utf16, NULL, 0, permissive);
}
-int scheme_utf8_decode_as_prefix(const unsigned char *s, int start, int end,
- unsigned int *us, int dstart, int dend,
+intptr_t scheme_utf8_decode_as_prefix(const unsigned char *s, intptr_t start, intptr_t end,
+ unsigned int *us, intptr_t dstart, intptr_t dend,
intptr_t *ipos, char utf16, int permissive)
/* Always returns number of read characters, not error codes. */
{
@@ -5079,17 +5080,17 @@ int scheme_utf8_decode_as_prefix(const unsigned char *s, int start, int end,
return opos - dstart;
}
-int scheme_utf8_decode_all(const unsigned char *s, int len, unsigned int *us, int permissive)
+intptr_t scheme_utf8_decode_all(const unsigned char *s, intptr_t len, unsigned int *us, int permissive)
{
return utf8_decode_x(s, 0, len, us, 0, -1, NULL, NULL, 0, 0, NULL, 0, permissive);
}
-int scheme_utf8_decode_prefix(const unsigned char *s, int len, unsigned int *us, int permissive)
+intptr_t scheme_utf8_decode_prefix(const unsigned char *s, intptr_t len, unsigned int *us, int permissive)
/* us != NULL */
{
{
/* Try fast path (all ASCII) */
- int i;
+ intptr_t i;
for (i = 0; i < len; i++) {
if (s[i] < 128)
us[i] = s[i];
@@ -5103,10 +5104,10 @@ int scheme_utf8_decode_prefix(const unsigned char *s, int len, unsigned int *us,
return utf8_decode_x(s, 0, len, us, 0, -1, NULL, NULL, 0, 0, NULL, 1, permissive);
}
-mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, int len,
- mzchar *buf, int blen, intptr_t *_ulen)
+mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, intptr_t len,
+ mzchar *buf, intptr_t blen, intptr_t *_ulen)
{
- int ulen;
+ intptr_t ulen;
ulen = utf8_decode_x(s, 0, len, NULL, 0, -1,
NULL, NULL, 0, 0,
@@ -5124,21 +5125,21 @@ mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, int len,
return buf;
}
-mzchar *scheme_utf8_decode_to_buffer(const unsigned char *s, int len,
- mzchar *buf, int blen)
+mzchar *scheme_utf8_decode_to_buffer(const unsigned char *s, intptr_t len,
+ mzchar *buf, intptr_t blen)
{
intptr_t ulen;
return scheme_utf8_decode_to_buffer_len(s, len, buf, blen, &ulen);
}
-int scheme_utf8_decode_count(const unsigned char *s, int start, int end,
+intptr_t scheme_utf8_decode_count(const unsigned char *s, intptr_t start, intptr_t end,
int *_state, int might_continue, int permissive)
{
intptr_t pos = 0;
if (!_state || !*_state) {
/* Try fast path (all ASCII): */
- int i;
+ intptr_t i;
for (i = start; i < end; i++) {
if (s[i] > 127)
break;
@@ -5156,14 +5157,14 @@ int scheme_utf8_decode_count(const unsigned char *s, int start, int end,
return pos;
}
-static int utf8_encode_x(const unsigned int *us, int start, int end,
- unsigned char *s, int dstart, int dend,
+static intptr_t utf8_encode_x(const unsigned int *us, intptr_t start, intptr_t end,
+ unsigned char *s, intptr_t dstart, intptr_t dend,
intptr_t *_ipos, intptr_t *_opos, char utf16)
/* Results:
-1 => input ended in the middle of an encoding - only when utf16 and _opos
non-negative => reports number of bytes/code-units produced */
{
- int i, j, done = start;
+ intptr_t i, j, done = start;
if (dend < 0)
dend = 0x7FFFFFFF;
@@ -5310,8 +5311,8 @@ static int utf8_encode_x(const unsigned int *us, int start, int end,
}
}
-int scheme_utf8_encode(const unsigned int *us, int start, int end,
- unsigned char *s, int dstart,
+intptr_t scheme_utf8_encode(const unsigned int *us, intptr_t start, intptr_t end,
+ unsigned char *s, intptr_t dstart,
char utf16)
{
return utf8_encode_x(us, start, end,
@@ -5319,16 +5320,16 @@ int scheme_utf8_encode(const unsigned int *us, int start, int end,
NULL, NULL, utf16);
}
-int scheme_utf8_encode_all(const unsigned int *us, int len, unsigned char *s)
+intptr_t scheme_utf8_encode_all(const unsigned int *us, intptr_t len, unsigned char *s)
{
return utf8_encode_x(us, 0, len, s, 0, -1, NULL, NULL, 0 /* utf16 */);
}
-char *scheme_utf8_encode_to_buffer_len(const mzchar *s, int len,
- char *buf, int blen,
+char *scheme_utf8_encode_to_buffer_len(const mzchar *s, intptr_t len,
+ char *buf, intptr_t blen,
intptr_t *_slen)
{
- int slen;
+ intptr_t slen;
/* ASCII with len < blen is a common case: */
if (len < blen) {
@@ -5355,19 +5356,19 @@ char *scheme_utf8_encode_to_buffer_len(const mzchar *s, int len,
return buf;
}
-char *scheme_utf8_encode_to_buffer(const mzchar *s, int len,
- char *buf, int blen)
+char *scheme_utf8_encode_to_buffer(const mzchar *s, intptr_t len,
+ char *buf, intptr_t blen)
{
intptr_t slen;
return scheme_utf8_encode_to_buffer_len(s, len, buf, blen, &slen);
}
-unsigned short *scheme_ucs4_to_utf16(const mzchar *text, int start, int end,
- unsigned short *buf, int bufsize,
- intptr_t *ulen, int term_size)
+unsigned short *scheme_ucs4_to_utf16(const mzchar *text, intptr_t start, intptr_t end,
+ unsigned short *buf, intptr_t bufsize,
+ intptr_t *ulen, intptr_t term_size)
{
mzchar v;
- int extra, i, j;
+ intptr_t extra, i, j;
unsigned short *utf16;
/* Count characters that fall outside UCS-2: */
@@ -5395,12 +5396,12 @@ unsigned short *scheme_ucs4_to_utf16(const mzchar *text, int start, int end,
return utf16;
}
-mzchar *scheme_utf16_to_ucs4(const unsigned short *text, int start, int end,
- mzchar *buf, int bufsize,
- intptr_t *ulen, int term_size)
+mzchar *scheme_utf16_to_ucs4(const unsigned short *text, intptr_t start, intptr_t end,
+ mzchar *buf, intptr_t bufsize,
+ intptr_t *ulen, intptr_t term_size)
{
int wc;
- int i, j;
+ intptr_t i, j;
for (i = start, j = 0; i < end; i++) {
wc = text[i];
diff --git a/src/racket/src/strops.inc b/src/racket/src/strops.inc
index 598923ba46..fce37b914f 100644
--- a/src/racket/src/strops.inc
+++ b/src/racket/src/strops.inc
@@ -336,7 +336,7 @@ X__(string_append) (int argc, Scheme_Object *argv[])
Scheme_Object *
X(scheme_append, _string)(Scheme_Object *str1, Scheme_Object *str2)
{
- int len1, len2;
+ intptr_t len1, len2;
Xchar *r;
Scheme_Object *naya;
diff --git a/src/racket/src/stxobj.c b/src/racket/src/stxobj.c
index 1ce4e7ee88..2dc7f4c627 100644
--- a/src/racket/src/stxobj.c
+++ b/src/racket/src/stxobj.c
@@ -1476,7 +1476,7 @@ Scheme_Object *scheme_extend_module_rename(Scheme_Object *mrn,
Scheme_Object *exname, /* name in definition context */
Scheme_Object *nominal_mod, /* nominal source module */
Scheme_Object *nominal_ex, /* nominal import before local renaming */
- int mod_phase, /* phase of source defn */
+ intptr_t mod_phase, /* phase of source defn */
Scheme_Object *src_phase_index, /* nominal import phase */
Scheme_Object *nom_phase, /* nominal export phase */
Scheme_Object *insp, /* inspector for re-export */
@@ -1675,7 +1675,7 @@ static void do_append_module_rename(Scheme_Object *src, Scheme_Object *dest,
if (SCHEME_PAIRP(SCHEME_CDR(v))) {
/* (list* modidx [mod-phase] exportname nominal_modidx+index nominal_exportname) */
Scheme_Object *midx1, *midx2;
- int mod_phase;
+ intptr_t mod_phase;
midx1 = SCHEME_CAR(v);
v = SCHEME_CDR(v);
if (SCHEME_INTP(SCHEME_CAR(v))) {
diff --git a/src/racket/src/symbol.c b/src/racket/src/symbol.c
index 6178ac8106..f8ab24c974 100644
--- a/src/racket/src/symbol.c
+++ b/src/racket/src/symbol.c
@@ -95,12 +95,12 @@ typedef uintptr_t hash_v_t;
#endif
static Scheme_Object *rehash_symbol_bucket(Scheme_Hash_Table *table,
- GC_CAN_IGNORE const char *key, unsigned int length,
+ GC_CAN_IGNORE const char *key, uintptr_t length,
Scheme_Object *naya);
/* Special hashing for symbols: */
static Scheme_Object *symbol_bucket(Scheme_Hash_Table *table,
- GC_CAN_IGNORE const char *key, unsigned int length,
+ GC_CAN_IGNORE const char *key, uintptr_t length,
Scheme_Object *naya)
{
hash_v_t h, h2;
@@ -114,7 +114,7 @@ static Scheme_Object *symbol_bucket(Scheme_Hash_Table *table,
mask = table->size - 1;
{
- unsigned int i;
+ uintptr_t i;
i = 0;
h = HASH_SEED;
h2 = 0;
@@ -166,7 +166,7 @@ static Scheme_Object *symbol_bucket(Scheme_Hash_Table *table,
}
static Scheme_Object *rehash_symbol_bucket(Scheme_Hash_Table *table,
- GC_CAN_IGNORE const char *key, unsigned int length,
+ GC_CAN_IGNORE const char *key, uintptr_t length,
Scheme_Object *naya)
{
int i, oldsize = table->size, newsize, lostc;
@@ -353,7 +353,7 @@ uintptr_t scheme_get_max_symbol_length() {
static Scheme_Object *
-make_a_symbol(const char *name, unsigned int len, int kind)
+make_a_symbol(const char *name, uintptr_t len, int kind)
{
Scheme_Symbol *sym;
@@ -383,13 +383,13 @@ scheme_make_symbol(const char *name)
}
Scheme_Object *
-scheme_make_exact_symbol(const char *name, unsigned int len)
+scheme_make_exact_symbol(const char *name, uintptr_t len)
{
return make_a_symbol(name, len, 0x1);
}
Scheme_Object *
-scheme_make_exact_char_symbol(const mzchar *name, unsigned int len)
+scheme_make_exact_char_symbol(const mzchar *name, uintptr_t len)
{
char buf[64], *bs;
intptr_t blen;
@@ -404,7 +404,7 @@ typedef enum {
} enum_symbol_table_type;
static Scheme_Object *
-intern_exact_symbol_in_table_worker(enum_symbol_table_type type, int kind, const char *name, unsigned int len)
+intern_exact_symbol_in_table_worker(enum_symbol_table_type type, int kind, const char *name, uintptr_t len)
{
Scheme_Object *sym;
Scheme_Hash_Table *table;
@@ -470,25 +470,25 @@ intern_exact_symbol_in_table_worker(enum_symbol_table_type type, int kind, const
}
static Scheme_Object *
-intern_exact_symbol_in_table(enum_symbol_table_type type, int kind, const char *name, unsigned int len)
+intern_exact_symbol_in_table(enum_symbol_table_type type, int kind, const char *name, uintptr_t len)
{
return intern_exact_symbol_in_table_worker(type, kind, name, len);
}
Scheme_Object *
-scheme_intern_exact_symbol(const char *name, unsigned int len)
+scheme_intern_exact_symbol(const char *name, uintptr_t len)
{
return intern_exact_symbol_in_table(enum_symbol, 0, name, len);
}
Scheme_Object *
-scheme_intern_exact_parallel_symbol(const char *name, unsigned int len)
+scheme_intern_exact_parallel_symbol(const char *name, uintptr_t len)
{
return intern_exact_symbol_in_table(enum_parallel_symbol, 0x2, name, len);
}
Scheme_Object *
-scheme_intern_exact_char_symbol(const mzchar *name, unsigned int len)
+scheme_intern_exact_char_symbol(const mzchar *name, uintptr_t len)
{
char buf[64], *bs;
intptr_t blen;
@@ -497,7 +497,7 @@ scheme_intern_exact_char_symbol(const mzchar *name, unsigned int len)
}
Scheme_Object *
-scheme_intern_exact_keyword(const char *name, unsigned int len)
+scheme_intern_exact_keyword(const char *name, uintptr_t len)
{
Scheme_Object *s;
s = intern_exact_symbol_in_table(enum_keyword, 0, name, len);
@@ -506,7 +506,7 @@ scheme_intern_exact_keyword(const char *name, unsigned int len)
return s;
}
-Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, unsigned int len)
+Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, uintptr_t len)
{
char buf[64], *bs;
intptr_t blen;
@@ -553,11 +553,11 @@ scheme_intern_symbol(const char *name)
return scheme_intern_exact_symbol(name, strlen(name));
}
-const char *scheme_symbol_name_and_size(Scheme_Object *sym, unsigned int *length, int flags)
+const char *scheme_symbol_name_and_size(Scheme_Object *sym, uintptr_t *length, int flags)
{
int has_space = 0, has_special = 0, has_pipe = 0, has_upper = 0, digit_start;
int dz;
- unsigned int i, len = SCHEME_SYM_LEN(sym), total_length;
+ uintptr_t i, len = SCHEME_SYM_LEN(sym), total_length;
int pipe_quote;
char buf[100];
char *s, *result;
@@ -682,7 +682,7 @@ const char *scheme_symbol_name_and_size(Scheme_Object *sym, unsigned int *length
result[len + 2] = 0;
} else {
int p = 0;
- unsigned int i = 0;
+ uintptr_t i = 0;
result = (char *)scheme_malloc_atomic((2 * len) + 1);
diff --git a/src/worksp/.gitignore b/src/worksp/.gitignore
index c8fccf16f3..bed63a0c70 100644
--- a/src/worksp/.gitignore
+++ b/src/worksp/.gitignore
@@ -1,4 +1,5 @@
# MSVC build directory:
*/Release
*/Debug
+*/x64
*/*.user
diff --git a/src/worksp/libffi/ffi.h b/src/worksp/libffi/ffi.h
index c2c0220a8e..7c52e2b2be 100644
--- a/src/worksp/libffi/ffi.h
+++ b/src/worksp/libffi/ffi.h
@@ -59,10 +59,11 @@ extern "C" {
/* Specify which architecture libffi is configured for. */
#ifdef _WIN64
# define __x86_64__
+# define X86_WIN64
#else
# define __i386__
+# define X86_WIN32
#endif
-#define X86_WIN32
/* ---- System configuration information --------------------------------- */
diff --git a/src/worksp/libffi/libffi.vcproj b/src/worksp/libffi/libffi.vcproj
index 89ce1d248c..51f00ecfc6 100644
--- a/src/worksp/libffi/libffi.vcproj
+++ b/src/worksp/libffi/libffi.vcproj
@@ -12,6 +12,9 @@
+
@@ -140,6 +143,132 @@
Name="VCPostBuildEventTool"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -177,10 +306,19 @@
>
+
+
+
+
@@ -96,6 +99,90 @@
Name="VCPostBuildEventTool"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/worksp/libracket/libracket.vcproj b/src/worksp/libracket/libracket.vcproj
index f09e1544d1..9d182cf4fe 100644
--- a/src/worksp/libracket/libracket.vcproj
+++ b/src/worksp/libracket/libracket.vcproj
@@ -10,6 +10,9 @@
+
@@ -98,6 +101,92 @@
Name="VCPostBuildEventTool"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/worksp/racket/racket.sln b/src/worksp/racket/racket.sln
index 2816f3c739..34863b6866 100644
--- a/src/worksp/racket/racket.sln
+++ b/src/worksp/racket/racket.sln
@@ -19,25 +19,43 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Debug|Win32.ActiveCfg = Debug|Win32
{EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Debug|Win32.Build.0 = Debug|Win32
+ {EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Debug|x64.ActiveCfg = Debug|x64
+ {EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Debug|x64.Build.0 = Debug|x64
{EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Release|Win32.ActiveCfg = Release|Win32
{EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Release|Win32.Build.0 = Release|Win32
+ {EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Release|x64.ActiveCfg = Release|x64
+ {EB7023C8-6D72-4DE4-ADFC-3913C4C70991}.Release|x64.Build.0 = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.ActiveCfg = Debug|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.Build.0 = Debug|Win32
+ {A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.ActiveCfg = Debug|x64
+ {A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.Build.0 = Debug|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.ActiveCfg = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.Build.0 = Release|Win32
+ {A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.ActiveCfg = Release|x64
+ {A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.Build.0 = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.ActiveCfg = Debug|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.Build.0 = Debug|Win32
+ {66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.ActiveCfg = Debug|x64
+ {66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.Build.0 = Debug|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.ActiveCfg = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.Build.0 = Release|Win32
+ {66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.ActiveCfg = Release|x64
+ {66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.Build.0 = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.ActiveCfg = Debug|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.Build.0 = Debug|Win32
+ {7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.ActiveCfg = Debug|x64
+ {7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.Build.0 = Debug|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.ActiveCfg = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.Build.0 = Release|Win32
+ {7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.ActiveCfg = Release|x64
+ {7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/worksp/racket/racket.vcproj b/src/worksp/racket/racket.vcproj
index 816f2479be..43eaba6832 100644
--- a/src/worksp/racket/racket.vcproj
+++ b/src/worksp/racket/racket.vcproj
@@ -10,6 +10,9 @@
+
@@ -98,6 +101,92 @@
CommandLine="
if exist "$(TargetPath)" goto :MzOK
echo Error: did not find $(TargetPath)
exit 1
:MzOK
"$(TargetPath)" -cu ..\..\racket\mkincludes.rkt "$(TargetDir)/include/" ..\..\racket ..
if errorlevel 1 exit 1
cd ..\..\racket\dynsrc
mkmzdynd.bat
cd ..\..\worksp\racket
"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+