Commit Graph

1550 Commits (4b64626e1041a3a5f0beb60a5b99076258b8c1d2)

Author SHA1 Message Date
Björn Lindqvist 48bf3a9ab4 VM: moves the code that clears the roots to the same function that
corrupts the stack
2014-07-23 07:12:28 -07:00
Doug Coleman fe548d9ed7 os-unix.hpp: Use the old strerror_r insetad of the newfangled one. 2014-07-16 17:08:02 -07:00
Björn Lindqvist 810031b02c VM: data_roots must be empty before unwind_native_frames is called because it doesn't return 2014-07-16 14:54:35 -07:00
Björn Lindqvist 655dcee2d8 VM: clear the local roots before garbage collection in general_error()
If we got here from memory_protection_error(), then the stack pointer
has been fiddled with and the elements of these vectors, which address
stack-allocated objects, are bogus and needs to be resetted.
2014-07-16 14:54:29 -07:00
Björn Lindqvist 60b7631e76 VM: fixing some implicit casts from cell to fixnum
The types are compatible, but it looks a little nicer if the variable
that receives a return value declared as cell also is a cell.
2014-07-10 07:54:07 -07:00
Doug Coleman 07aa2831a2 ffi_test: Export test 59 and 60 for Windows. 2014-07-07 20:53:33 -07:00
Doug Coleman beb2d1df3a ffi: Add some tests to ensure that 64bit integers are handled properly. 2014-07-07 17:02:36 -07:00
Doug Coleman 6244b925c7 vm: Simplify strerror code. 2014-07-05 18:58:24 -07:00
Doug Coleman ecbf48d1ef vm: Fix namespace brace. 2014-07-04 03:14:17 -07:00
Doug Coleman 69262be4d8 vm: Add threadsafe_sterror to the vm. 2014-07-04 03:00:08 -07:00
Doug Coleman bc54927859 vm/image.cpp: Better error for opening a file for writing. 2014-07-03 22:32:45 -07:00
Doug Coleman e558bd7d86 vm: Fix compilation on Windows. Fixes #1086. 2014-07-03 13:20:08 -05:00
Steven Stewart-Gallus e6dade3f94 Lower the stack usage of a few functions
In vm/compaction.cpp I rescoped some variables to lower the stack usage
from 592 to 560 bytes. I wasn't very successful with this. The stack
usage is larger than it looks because methods on the structures used
take an implicit this pointer and a reference to the data (so the data
has to live out it's full scope and can't be put in a register).

In vm/debug.cpp I made a large (1024 bytes) stack allocated buffer
simply dynamically allocated.

In vm/os-unix.cpp I rescoped signal handling structures to not coincide
with each other and reduced a very large (1024 bytes) amount of stack
usage to less than 500 bytes.
2014-06-19 14:55:57 -07:00
Doug Coleman 2834bc90f8 bignum.cpp: Fix regression in bignum conversion. Fixes #1072. 2014-06-16 20:52:51 -07:00
Björn Lindqvist a6e0867b22 VM: change type of bignum_roots and remove unnecessary not-null checks
Declaring bignum_roots to contain bignum** instead of cell avoids some
superfluous casts. Casting it to cell is wrong because the items in it
are never tagged. And due to a earlier commit, bignum_roots will never
contain NULL:s so checking for them is not needed.
2014-06-12 13:50:10 -07:00
Björn Lindqvist 8ac3b80173 VM: rename all variables named "bignum" in bignum.cpp to "bn"
The name can cause compiler errors because it's the same as the type
name. It only matters in some functions, but I like consistency so I
renamed it everywhere.
2014-06-12 13:50:10 -07:00
Björn Lindqvist 75129d34ad VM: refactor bignum.cpp so that GC_BIGNUM is never called on a NULL
pointer

The purpose of this fix is to ensure that no NULL checks are needed when
traversing the bignum_roots vector.
2014-06-12 13:50:10 -07:00
Björn Lindqvist 0c9e61ca99 VM: refactoring that removes data_root_ranges
instead of storing data_root_ranges in data_roots, you can just store
cell pointers directly. the advantage with doing it that way is that
registration and traversal code becomes simpler (and slightly faster).
2014-06-12 13:50:10 -07:00
John Benediktsson f0e878e3fa Revert "vm: fix bignum_to_fixnum_strict for BIGNUM_ZERO."
This reverts commit 0a66016c7db3c8c02af609d7c46411dc05a7b0dd.
2014-06-08 16:32:35 -07:00
John Benediktsson ad7ee60341 vm: fix bignum_to_fixnum_strict for BIGNUM_ZERO. 2014-06-08 16:05:36 -07:00
John Benediktsson 82f9f21a50 vm: change some push/pop to replace/peek. 2014-06-07 12:16:43 -07:00
John Benediktsson e9e1fd4e6a vm: generate a to_fixnum_strict to workaround an odd io.monitors issue. 2014-06-07 12:06:03 -07:00
John Benediktsson eeaa91d6c1 vm: using bignum>fixnum-strict in integer>fixnum-strict. 2014-06-07 09:46:05 -07:00
Björn Lindqvist d225bec128 VM: CELL_TO_FOO macro-magic in the same spirit as BIGNUM_TO_FOO
Now also factor_vm::to_cell doesn't piggyback on
factor_vm::to_fixnum's (strict) conversion.
2014-06-07 17:04:27 +02:00
Björn Lindqvist 1300a27dca VM: better version of bignum_to_fixnum_strict that doesn't allocate 2014-06-07 13:09:00 +02:00
Björn Lindqvist a9a52d9174 VM: bignum_to_fixnum_strict and an accompanying vm error in case the conversion fails 2014-06-07 12:13:59 +02:00
Björn Lindqvist 877e3a12e1 VM: allot_array_1, allot_array_2 are unused and primitive_array should use allot_array 2014-06-07 12:13:59 +02:00
Björn Lindqvist 03672ad938 VM: refactored factor_vm::unbox_array_size() 2014-06-07 12:13:59 +02:00
John Benediktsson 7ff81f620b vm: optionally set CC and CXX on macosx. 2014-06-06 15:13:48 -07:00
John Benediktsson 6c703bbd6c vm: adding a fast path for bignum sq. 2014-06-06 10:45:09 -07:00
Björn Lindqvist 6627a3327b kernel: symbolic constants for the various kernel errors 2014-06-04 23:16:40 +02:00
John Benediktsson fd1dc5ce01 vm: formatting of sign_mask. 2014-06-02 07:54:01 -07:00
John Benediktsson c2c6225955 vm: fix tabs-to-spaces. 2014-06-02 07:24:14 -07:00
John Benediktsson cf287f4144 vm: faster foo_to_bignum for common case of one bignum digit. 2014-06-02 07:16:43 -07:00
Doug Coleman c3210f9f4f Windows: Add two new targets, x86-32-vista and x86-64-vista for bjourne's
ctrl-c patch. We still support Windows XP by default for now. Closes
2014-05-10 18:13:20 -07:00
Björn Lindqvist 0226718a82 VM: attempt to cancel blocking system calls when ctrl-c is pressed
Windows runs ctrl-c in its own thread and doesn't by itself interrupt
blocking system calls when it is pressed. Therefore you have to manually
send an interrupt signal to the stuck thread.
2014-05-10 18:13:04 -07:00
Doug Coleman 57611f78d3 code_blocks: Same error message in two places, make it clear which is triggering. 2014-05-07 14:02:14 -07:00
Björn Lindqvist 9780012f55 dlopen using RTLD_GLOBAL 2014-04-21 23:45:45 -07:00
Doug Coleman 19685f4528 vm: jit::jit is a c++ constructor but it does not allocate objects to the Factor heaps.
Add annotations for gc allocating.
2014-02-14 20:29:26 -08:00
John Benediktsson 0dda4fc812 vm: speed up bignum log2. 2013-12-06 14:40:22 -08:00
Doug Coleman 1ad2e058d1 alien.cpp: Add comment about allocation. 2013-11-28 10:59:45 -06:00
Doug Coleman 268fa0225d os-windows: Remove FACTOR_DLL which is NULL and only used in one place. 2013-11-24 22:06:57 -06:00
Doug Coleman 0a5cdfa3e6 vm: init_parameters_from_args calls default_parameters already. 2013-11-24 22:06:57 -06:00
Erik Charlebois 40fcee3f16 VM: Fix Windows 64-bit build on Visual Studio 2012
The UNW_FLAG_EHANDLER #define is now visible in VS2012, causing
a conflict with the definition in os-windows-x86.64.cpp. Added
a #ifndef to only include the definition if it hasn't already
been defined.
2013-05-13 18:19:52 -04:00
Erik Charlebois 5027f75d79 VM: Fix Windows VM build following type renaming
Making cell be a typedef of uintptr_t broke a spot assigning
cell* was unsigned long*. Added an explicit cast.
2013-05-13 18:18:48 -04:00
Erik Charlebois ffe41b3d7f VM: Fixup cast formatting after clang-format
clang-format doesn't recognize casts to non-pointer/non-template types
so it winds up adding a space between the right paren and the expression
and then failing to recognize prefix operators in the process
(e.g. foo = (cell) & bar; should be foo = (cell)&bar;). This commit
manually fixes up the major cases (fixnum, cell, all types ending in _t).
2013-05-13 14:59:24 -04:00
Erik Charlebois 88d7c10d03 VM: Replace u8-64, s8-64, cell, fixnum with stdint.h equivalents 2013-05-13 00:28:25 -04:00
Erik Charlebois 7ea2150c39 VM: Remove WINCE #ifndef; fold wince? words 2013-05-13 00:01:46 -04:00
Erik Charlebois b918c3e646 VM: Remove redundant #ifdef FACTOR_DEBUGs
FACTOR_DEBUG checks around asserts aren't needed, since FACTOR_ASSERT is
already conditionally defined by FACTOR_DEBUG.
2013-05-12 23:44:32 -04:00
Erik Charlebois 7b1b1eef23 VM: Remove unnecessary _ suffix in constructors 2013-05-12 23:20:43 -04:00