@@ -187,9 +187,9 @@ void bbStartup( int argc,char *argv[],void *dummy1,void *dummy2 ){
char *ebp;
OSVERSIONINFO os={ sizeof(os) };
- asm( "movl %%ebp,%0;":"=r"(ebp) );//::"%ebp" );
+ //asm( "movl %%ebp,%0;":"=r"(ebp) );//::"%ebp" );
- bbGCStackTop=ebp+28;
+ //bbGCStackTop=ebp+28;
// BaH bbThreadStartup();
bbGCStartup();
@@ -6,9 +6,14 @@
#endif
#ifdef _WIN32
+#ifdef __x86_64__
+extern void *__bss_end__;
+extern void *__data_start__;
+#else
extern void *_bss_end__;
extern void *_data_start__;
+#endif
#ifdef __linux
extern void *__data_start;
@@ -27,8 +32,12 @@ void bbGCStartup( void *spTop ){
GC_set_no_dls(1);
GC_clear_roots();
+ GC_add_roots(&__data_start__, &__bss_end__);
GC_add_roots(&_data_start__, &_bss_end__);
#ifdef __APPLE__
#ifndef __LP64__