Browse Source

Stack is now correctly cleaned up when a non native function is executed.

Marco Bambini 8 years ago
parent
commit
8c7159e1d8
3 changed files with 6 additions and 6 deletions
  1. 3 3
      src/runtime/gravity_vm.c
  2. 1 1
      src/runtime/gravity_vmmacros.h
  3. 2 2
      src/shared/gravity_value.h

+ 3 - 3
src/runtime/gravity_vm.c

@@ -395,7 +395,7 @@ static bool gravity_vm_exec (gravity_vm *vm) {
 					} break;
 				}
 				LOAD_FRAME();
-				SYNC_STACKTOP(closure, _rneed);
+				SYNC_STACKTOP(closure, MAXNUM(_rneed, rwin));
 				
 				// continue execution
 				DISPATCH();
@@ -524,7 +524,7 @@ static bool gravity_vm_exec (gravity_vm *vm) {
 					} break;
 				}
 				LOAD_FRAME();
-				SYNC_STACKTOP(closure, _rneed);
+				SYNC_STACKTOP(closure, MAXNUM(_rneed, rwin));
 				
 				// continue execution
 				DISPATCH();
@@ -1086,7 +1086,7 @@ static bool gravity_vm_exec (gravity_vm *vm) {
 						break;
 				}
 				LOAD_FRAME();
-				SYNC_STACKTOP(closure, _rneed);
+				SYNC_STACKTOP(closure, MAXNUM(_rneed, rwin));
 				
 				DISPATCH();
 			}

+ 1 - 1
src/runtime/gravity_vmmacros.h

@@ -262,6 +262,6 @@
 														break;																				\
 													}																						\
 													LOAD_FRAME();																			\
-													SYNC_STACKTOP(_c, _rneed)
+													SYNC_STACKTOP(_c, MAXNUM(_rneed, rwin))
 
 #endif

+ 2 - 2
src/shared/gravity_value.h

@@ -66,8 +66,8 @@
 extern "C" {
 #endif
 
-#define GRAVITY_VERSION						"0.2.7"
-#define GRAVITY_VERSION_NUMBER				0x000207
+#define GRAVITY_VERSION						"0.2.8"
+#define GRAVITY_VERSION_NUMBER				0x000208
 #define GRAVITY_BUILD_DATE					__DATE__
 
 #define GRAVITY_ENABLE_DOUBLE				1			// if 1 enable gravity_float_t to be a double (instead of a float)