Commit Graph

1799 Commits (e19df707da51887e1ec9dc70a9c9c336994d5b66)

Author SHA1 Message Date
Doug Coleman 875d2421df vm: We don't want ambiguity for which print triggered on a gc error. Differentiate the error messages. 2014-12-04 10:35:32 -08:00
Björn Lindqvist 378f208025 VM: always clear the data and retainstack in general_error because they might contain uninitialized values (#1187) 2014-12-04 10:26:23 -08:00
Björn Lindqvist 1cec8a7814 VM: modifying the uninitialized_blocks map in place instead of creating a new one is more efficient 2014-12-04 10:23:34 -08:00
Björn Lindqvist 451fc12411 VM: redundant if, trace_cards() doesnt do anything for empty generations anyway 2014-12-04 10:23:33 -08:00
Björn Lindqvist 93134b949f VM: the aging_collector and nursery_collector classes aren't needed because they are just simple instatiations of copying_collector 2014-12-04 10:23:33 -08:00
Björn Lindqvist 423e983514 VM: refactoring to get rid of the megamorphic_call_stub and check_code_pointer() words 2014-12-04 10:23:33 -08:00
Björn Lindqvist 885b5c7043 VM: no need for a nursery_space class, it's just a bump_allocator 2014-12-04 10:23:33 -08:00
John Benediktsson 4837ceebb4 vm: fix OS X issue with using symlinks from outside $factor. 2014-12-03 19:19:52 -08:00
Doug Coleman c675694619 vm: Annotate more places where we can gc.
Code formatting fix.
2014-11-29 19:25:46 -06:00
Björn Lindqvist 231f50039b VM: move next_object_after() and first_object() to aging_space (no iteration possible in nursery) 2014-11-21 02:16:04 -08:00
Björn Lindqvist 50c74fc496 VM: get rid of the duplicated nursery instance in vm->data->nursery
vm.nursery and vm->data->nursery are different objects. They get out
of sync when Factor code bumps vm.nursery but leaves vm->data->nursery
unchanged. The emptiness of vm->data->nursery meant that each_object()
never iterated it.
2014-11-21 02:16:03 -08:00
Björn Lindqvist 2a5e1e06f3 VM: each_object() can't iterate the nursery so instead we assume it's empty 2014-11-21 02:16:03 -08:00
Björn Lindqvist 2095fd57de VM: FACTOR_ASSERT so that data_root never wraps a null pointer, cause if it does, random crashes can happen 2014-11-17 17:27:36 -08:00
Björn Lindqvist 161eb0bb49 VM: fixed bignum_divide_unsigned_large_denominator so that it wont data_root-protect NULL-pointers 2014-11-17 17:27:36 -08:00
Björn Lindqvist f9869d8ad9 VM: remove bignum_roots.clear() (snuck in during rebase) 2014-11-17 17:27:36 -08:00
Björn Lindqvist 0e8e2af0a7 VM: adding a few forgotten .untagged() calls 2014-11-17 17:27:36 -08:00
Björn Lindqvist 8741dbefce VM: bignum_roots traversal code deleted! 2014-11-17 17:27:35 -08:00
Björn Lindqvist 981a02be27 VM: Erasing the last traces of GC_BIGNUM from bignum.cpp 2014-11-17 17:27:35 -08:00
Björn Lindqvist 1f6d6b9a5d VM: cell -> ret 2014-11-17 17:27:35 -08:00
Björn Lindqvist 7d6f282d91 VM: conversion of many more bignum.cpp methods to use data_roots instead
of gc_bignum
2014-11-17 17:27:35 -08:00
Björn Lindqvist 2fcea047d2 VM: bignum_new_sign, bignum_maybe_new_sign and bitnum_magnitude_ash
converted to using data_roots
2014-11-17 17:27:35 -08:00
Björn Lindqvist c6ab72effc VM: windows bignum_gcd variant fixed 2014-11-17 17:27:35 -08:00
Björn Lindqvist a4df09a34e VM: a lot of methods in bignum.cpp converted to use data_roots instead of gc_bignums 2014-11-17 17:27:35 -08:00
Björn Lindqvist 441a4595bb VM: the copy assignment operator is overloaded so you need a custom swap 2014-11-17 17:27:34 -08:00
Björn Lindqvist 8beb4e179d VM: change the BIGNUM_TO_POINTER macro so that it automatically sees through tagged pointers 2014-11-17 17:27:34 -08:00
Björn Lindqvist e862f70a16 VM: reallot_array already data_roots the array, so callers don't need to
do it too
2014-11-17 17:27:34 -08:00
Björn Lindqvist 8489dd9be6 Build: other hpp's use utilities.hpp so it must be included earlier 2014-11-12 19:41:32 -08:00
Doug Coleman 11be8734cb GNUmakefile: Remove LIBPATH from the build system since nothing needs it. Fixes #1192. 2014-11-11 00:05:52 -08:00
Björn Lindqvist 4e63ba8dc8 VM: debug code which memsets the resetted space 2014-11-10 23:23:43 -08:00
Björn Lindqvist d63a6a20ee ffi: test functions for bug #1021
Conflicts:
	vm/ffi_test.c
	vm/ffi_test.h

Note: Let's add tests in basis/compiler/tests/alien.factor for this.
2014-11-10 23:22:35 -08:00
Björn Lindqvist 990af22dc6 VM: renamed version and git-label to vm-version and vm-git-label. 2014-11-10 23:02:13 -08:00
Björn Lindqvist 090f4fddd5 VM: Three new special objects added to keep track of the builds version number, git label and compilation time respectively. The info is exposed in the system:version-info word and also shown in the banner during startup.
Conflicts:
	Nmakefile
	basis/ui/tools/listener/listener.factor
	core/alien/strings/strings.factor
2014-11-10 23:01:52 -08:00
Doug Coleman 53eac53626 vm: Fail with out_of_memory() if mprotect returns ENOMEM.
Add a message to out_of_memory(msg) calls so we know which call caused the OOM.
Fixes #664.
2014-11-11 06:26:55 +00:00
Doug Coleman 466fe4559d ffi_test: Can actually test 62 and 63 on windows. 2014-11-10 10:30:35 -08:00
Doug Coleman 1107edcc52 ffi_test: Fix compilation on Windows. 2014-11-09 10:39:50 -08:00
Doug Coleman 1b5711cc42 compiler.tests.alien: Add structs with uint and ulonglong pairs and return them from an FFI call. macosx32 seems to be working, hopefully this will break it or confirm that it's working. Linux32 is broken, hopefully this will show how. 2014-11-08 13:39:47 -08:00
Doug Coleman 0244a64d83 vm: Oops, test doesn't take a long long. 2014-11-07 15:42:25 -08:00
Doug Coleman e494e3965b compiler.tests.alien: Check in a failing unit test. Structure is getting returned improperly. 2014-11-07 15:34:10 -08:00
Björn Lindqvist e00798cd2a VM: new primitive free-callback which is able to free a callback
previously allocated using <callback>
2014-09-29 07:30:21 -07:00
Björn Lindqvist 4a96e6163b VM: new primitive (callback-room) for querying the VM about memory usage
The word works exactly like (code-room) except it looks at the memory
usage in the callback heap instead of the code heap.
2014-09-29 07:30:21 -07:00
Björn Lindqvist 85dade6914 VM: use a free_list_allocator for the callbacks, that way they can
individually be freed
2014-09-29 07:30:20 -07:00
Björn Lindqvist 4015565cf6 VM: "formalize" the callback_heaps object allocation using a
bump_allocator<code_block>

The advantage of doing it this way is that you can reuse the existing
each_object method to iterate all callbacks
2014-09-29 07:30:20 -07:00
Björn Lindqvist 4867e7bc96 VM: try and recover with a kernel error from the callback heap running out 2014-09-29 07:30:20 -07:00
Björn Lindqvist b90e52b527 VM: GC_BIGNUM must be called in the same scope as the variable declaration 2014-09-17 12:13:05 -07:00
Björn Lindqvist 237772daae VM: dont scrub and check when visiting a callstack object
callstack objects doesn't have stacks so it doesn't make sense to scrub
and check. also added the methods check_stack and scrub_stack to deal
with code duplication
2014-09-08 14:54:18 -07:00
Björn Lindqvist e3c2704986 VM: silly error: should be index * check_r_count, not index + check_r_count 2014-09-08 14:54:18 -07:00
Björn Lindqvist 9836d6a1d0 VM: move the stack scrubbing logic to call_frame_slot_visitor to avoid visiting the callstack twice
primitive_minor_gc() iterates the stack twice, first to scrub stack
locations, then to trace overinitialized ones and gc roots. By running
visit_callstack() before visit_stack_elements() you only need to do it
once.
2014-09-08 14:54:18 -07:00
Björn Lindqvist 8fb8313251 VM: use the check_d and check_r to trace the overinitialized stack locations 2014-09-08 14:54:18 -07:00
Björn Lindqvist 8c0f9698de compiler.codegen.gc-maps: check-d>> and check-r>> now used in the code generator
the approach looks sound and now the gc can be fixed to take advantage
of the extra info.
2014-09-08 14:54:17 -07:00
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
Erik Charlebois 26ff071205 VM: Remove unnecessary explicit keywords 2013-05-12 21:48:38 -04:00
Erik Charlebois d44127b543 VM: Refactor write_barrier.hpp to Factor style 2013-05-12 13:24:48 -04:00
Erik Charlebois 38c9db88e2 VM: Refactor words.cpp to Factor style 2013-05-12 13:24:48 -04:00
Erik Charlebois 5614985c3d VM: Refactor vm.cpp/hpp to Factor style 2013-05-12 13:24:48 -04:00
Erik Charlebois 8522265169 VM: Refactor utilities.cpp/hpp to Factor style 2013-05-12 13:24:48 -04:00
Erik Charlebois 5b1a9d753e VM: Refactor tuples.cpp/hpp to Factor style 2013-05-12 13:24:48 -04:00
Erik Charlebois 93b586da31 VM: Refactor to_tenured_collector.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois bd66094e1b VM: Refactor tenured_space.hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 238e9d9810 VM: Refactor tagged.hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 2e058e99c1 VM: Refactor strings.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 6d5197923c VM: Refactor slot_visitor.hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois b1ccfa2194 VM: Refactor segments.hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois b2929acff6 VM: Refactor sampling_profiler.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 2af4b6a7e6 VM: Refactor safepoints.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois debdb11538 VM: Refactor run.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 435ac636c6 VM: Refactor quotations.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Erik Charlebois 4dffb25fe6 VM: Refactor primitives.cpp/hpp to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois 5e7792e9b9 VM: Refactor platform.hpp to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois 37b15012e6 VM: Refactor os-* to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois 228d813a7d VM: Refactor objects* to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois 56ceeb582a VM: Refactor object_start_map* to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois bac6919705 VM: Refactor nursery_* to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois d57c1cc579 VM: Refactor mvm* to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois d9e225e1dc VM: Refactor math.hpp/cpp to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois 38802ce173 VM: Refactor master.hpp to Factor style 2013-05-12 13:24:46 -04:00
Erik Charlebois ce6ffe91dd VM: Refactor mark_bits.hpp to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois d20bf1e213 VM: Refactor main-* to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois 302826c7be VM: Refactor mach_signal to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois 0b5a12fdea VM: Refactor layouts/hpp to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois 1eaddb0068 VM: Refactor jit.cpp/hpp to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois 894e181f31 VM: Refactor io.cpp/hpp to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois d3d1d3bb7a VM: Refactor instruction_operands.cpp/hpp to Factor style 2013-05-12 13:24:45 -04:00
Erik Charlebois f6047832cb VM: Refactor inline_cache.cpp/hpp to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois cae6a5e855 VM: Refactor image.cpp/hpp to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 4ea2e9ed06 VM: Refactor generic_arrays.hpp to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 34d04b9306 VM: Refactor gc* to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 9e2d775095 VM: Refactor full_collector to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois f40718dfab VM: Refactor free_list_allocator to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois c0aa1c7b3e VM: Refactor free_list to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 83b69d45f8 VM: Refactor float_bits.hpp to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 95d34e8ee7 VM: Refactor fixup.hpp to Factor style 2013-05-12 13:24:44 -04:00
Erik Charlebois 04d655310f VM: Refactor ffi_test to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois d92617dda7 VM: Refactor factor.cpp/hpp to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois e9c0476f15 VM: Refactor errors to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois d6bc190f51 VM: Refactor entry_points to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois d5f66d9561 VM: Refactor dispatch to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois 6955dd8565 VM: Refactor debug.cpp to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois 7a05bf1993 VM: Refactor data_roots.hpp to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois 75e6c88534 VM: Refactor data_heap* to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois fb34be6fa7 VM: Refactor cpu-* to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois 0cf7feba0b VM: Refactor copying_collector.hpp to Factor style 2013-05-12 13:24:43 -04:00
Erik Charlebois 2a5126e49a VM: Refactor contexts to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 2bed6f6a25 VM: Refactor compaction.cpp to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 66976a12bf VM: Refactor collector.hpp to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois ef7c009d2a VM: Refactor code_roots to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 7f56458820 VM: Refactor code_heap to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois d2fe86eb7e VM: Refactor code_blocks to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 2e20733ade VM: Refactor callstack to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 7aae3c04ce VM: Refactor callbacks to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 22eed89484 VM: Refactor byte_arrays to Factor style 2013-05-12 13:24:42 -04:00
Erik Charlebois 1e618e16ee VM: Refactor bump_allocator.hpp to Factor style 2013-05-12 13:24:41 -04:00
Erik Charlebois 774326b2dc VM: Refactor booleans.hpp to Factor style 2013-05-12 13:24:41 -04:00
Erik Charlebois ad41d8773d VM: Refactor bitwise_hacks to Factor style 2013-05-12 13:24:41 -04:00
Erik Charlebois a80271c79c VM: Refactor bignum to Factor style 2013-05-12 13:24:41 -04:00
Erik Charlebois 6dacc44029 VM: Refactor atomic.hpp to Factor style 2013-05-12 13:24:41 -04:00
Erik Charlebois ca1276841d VM: Refactor atomic-* to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois 9ef732743d VM: Refactor assert.hpp to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois 76375afd1c VM: Refactor arrays.cpp/hpp to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois a437576dc9 VM: Refactor allot.hpp to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois 22014f092e VM: Refactor alien.cpp to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois 6c919e7d72 VM: Refactor aging_space to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois ee9fd64b69 VM: Refactor aging_collector to Factor style 2013-05-12 13:24:40 -04:00
Erik Charlebois a42ba561d2 VM: Remove empty source files 2013-05-12 13:24:40 -04:00
Erik Charlebois ca2ea548be VM: Remove exec bit from VM source files 2013-05-11 17:04:23 -04:00
Doug Coleman a1ef43a42f layours.hpp: Don't need RETAG here. Found by @mrjbq7. Fixes #637. 2013-03-29 17:20:08 -07:00
Doug Coleman 71558515cb Config.macosx: Try to support 10.5. 2013-03-29 14:36:11 -07:00
Doug Coleman 0d72e25365 Config.linux: Clean up warnings when compiling with clang on Linux. make CC=clang CPP=clang++ 2013-03-29 10:25:14 -07:00
John Benediktsson 411306c0b8 vm: adding bignum_gcd note. 2013-03-27 14:53:56 -07:00
Doug Coleman 08715bae04 os-macosx.mm: Use uname() instead of Gestalt for version check. Allow 10.5 and over still. Fixes #585. Fixes #815. Thanks @erikcharlebois and @jckarter for the motivation and the fix. 2013-03-26 16:53:09 -07:00
Doug Coleman 891f6fef36 Config.macosx: Unleash the hounds! Enable 10.6 compatibility as an experiment. Not sure the downside to always leaving it enabled... 2013-03-26 13:39:05 -07:00
Doug Coleman 2b33dde782 vm: Add more Allocates memory comments. 2013-03-25 17:52:30 -07:00
Doug Coleman 86649ce1c0 vm: More allocates comments. 2013-03-25 14:05:05 -07:00
Doug Coleman dbfa185eef vm: Standardize /* Allocates memory */ comments so you can grep -A1
and see if a function allocates for easier debugging of the gc.
A couple of the functions were not yet annotated.
2013-03-25 12:00:18 -07:00
Doug Coleman e68f41041f Config.macosx: Add commented-out compiler flag to use 10.6.
See http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2013-03-23 12:11:26 -07:00
Doug Coleman 6d19db3efd Configs: CFLAGS isn't used by the GNUMakefile, change it to SITE_CFLAGS. 2013-03-23 12:10:37 -07:00
John Benediktsson 17945addfe vm: use ctx->push since unbox_array_size needs to peek at the stack. 2013-03-22 09:19:36 -07:00
John Benediktsson 5be15d7e3f vm: more use of ctx->replace(). 2013-03-22 09:17:02 -07:00
John Benediktsson 49a7d37dcd vm: don't ctx-pop() in bignum_divmod. 2013-03-22 08:26:01 -07:00
John Benediktsson 9c025abc67 vm: use ctx->replace() with bignum and float operations. 2013-03-22 08:00:13 -07:00
Doug Coleman 1cdd080445 os-unix: Actually call pthread_join() to avoid an infinite loop and 100% cpu usage. It happens randomly. Fixes #738. Thanks to kkrev or frankfranks. 2012-10-26 10:36:01 -07:00
John Benediktsson afdaff3059 vm: make bignum-bitnot faster. 2012-08-31 15:22:07 -07:00
John Benediktsson 42f4193939 vm: simplify a bit the fixnum_divmod code. 2012-08-23 08:38:18 -07:00
John Benediktsson ed8496b583 vm: speed up primitive_fixnum_divmod by 10-12%. 2012-08-22 21:46:59 -07:00
John Benediktsson b541986b4e vm: use tabs instead of spaces in bignum_gcd. 2012-08-22 21:31:27 -07:00
Doug Coleman aad70160f0 vm: Add more comments about functions that allocate. 2012-08-15 22:00:08 -07:00
Doug Coleman 000efd9bbb vm: Add messages about things that can allocate. Fix a gc bug in the primitive for quotation-code. 2012-08-15 21:30:55 -07:00
Doug Coleman 66de3a85dd errors.cpp: Previous fix was correct, except we shouldn't clear the data_roots before gc'ing. Laugh out loud. Fixes #615. 2012-08-15 19:49:04 -07:00
Doug Coleman 7e39d7ef30 errors.cpp: Patch looked like it would work. It either exposes more gc bugs or is incorrect.
Revert "errors.cpp: general_error() throws away its args when it calls compact_gc() when compiled with DEBUG=1. Save the args as data_roots instead. Fixes #615. See #620."

This reverts commit dc46297050.
2012-08-15 17:25:14 -07:00
Doug Coleman beb202b3de errors.cpp: general_error() throws away its args when it calls compact_gc() when compiled with DEBUG=1. Save the args as data_roots instead. Fixes #615. See #620. 2012-08-15 16:36:36 -07:00
Doug Coleman 47b4ebc80d bignum.cpp: Fix calls to reallot_array() -- bignums can get new addresses if they are not in the nursery or are somehow larger. Fix a couple more correctness issues. 2012-08-15 01:51:58 -07:00
Doug Coleman 91d8326b77 math.cpp: Fix theoretical gc bug. 2012-08-15 01:51:58 -07:00
John Benediktsson 39c3f10138 bignum: incorporate some fixes from @slavapestov. 2012-08-10 14:28:44 -07:00
John Benediktsson c4f85efc9d vm: make sure we zero out the end of the bignums. 2012-08-04 18:02:27 -07:00
John Benediktsson 61a6b5692f vm: a bit faster not to trim on each iteration... 2012-08-04 09:13:05 -07:00
John Benediktsson f7bb7c6a32 vm: additional fix in bignum_gcd. 2012-08-03 21:50:48 -07:00
John Benediktsson 37001708cd vm: some fixes to fast bignum gcd. 2012-08-03 12:13:46 -07:00
John Benediktsson 5c8a2a4057 vm: fix updating size inside bignum_gcd loop. 2012-08-02 17:36:07 -07:00
Doug Coleman 30e34ca616 bignum: Fix bignum_gcd algorithm from overwriting the wrong bignum memory. Add GC_BIGNUM to prevent gc crashes. Fixes #599. 2012-08-02 17:16:03 -07:00
John Benediktsson 426c449ee1 vm: adding more GC_BIGNUM to WIN64 path. See #599. 2012-08-02 17:04:22 -07:00
Doug Coleman 106ecdb6dd compaction: Less than is the new greater than. Fixes #558. 2012-07-25 17:57:50 -07:00
Doug Coleman 1a9caec368 Config.macosx: first two digits of 'xcodebuild -version' number is enough; throw away rest of version number.
$ xcodebuild -version
Xcode 4.3.3
Build version 4E3002
Fixes #543.
2012-06-22 15:23:07 -07:00
Doug Coleman e9ec95ad4f compaction: Inifnite headaches--cured! Two compact functions, one was not like the other. 2012-05-27 18:26:03 -07:00
Doug Coleman c577a5468e vm: Typo for SITE_CFLAGS. Fixes #491. 2012-04-10 16:28:04 -07:00
John Benediktsson 5794ab46a0 vm: use euclid gcd on win64 until we find a better way to do the 128-bit math. 2012-04-06 11:42:59 -07:00
John Benediktsson eb556bfb06 vm: use twodigit type for all variables (fixes 32-bit warning). 2012-04-06 09:36:25 -07:00
Doug Coleman 4a29dafcdf vm/Config: GNUMakefile doesn't actually put the CFLAGS on the command, so use SITE_CFLAGS instead. Put -m32 in Config.x86.32, -m64 in Config.x86.64. Fixes #488. 2012-04-05 10:26:50 -07:00
John Benediktsson 22c26ff3f5 vm: adding bignum_gcd primitive. 2012-04-05 09:17:35 -07:00
Joe Groff 3f9b2ef47a use clang when building w/ xcode >4.3; it's faster 2012-02-18 23:40:38 -08:00
Joe Groff b094d4d0ec vm: actually code_block_pic is a fine frame type 2011-12-21 21:12:54 -08:00
Joe Groff 7121e0d598 vm: also smoke-check callstack after pic update 2011-12-21 18:31:37 -08:00
Joe Groff 0b72b811fc vm: flush after print_obj so it's usable from gdb 2011-12-21 13:25:28 -08:00
Joe Groff 9f137c66d4 vm: fashion brigade 2011-12-21 13:25:05 -08:00
Joe Groff 442923b561 vm: walk stack on inline_cache_miss if PIC_DEBUG=1
Reveals inline cache stack coherency bug behind #460
2011-12-21 13:24:35 -08:00
Joe Groff b6f323450f vm: load mega cache object before popping frame
Fixes #457 harder
2011-12-20 14:38:01 -08:00
Joe Groff f513894435 vm: unwind-native-frames is special
Fixes #457
2011-12-19 16:54:25 -08:00
Joe Groff 842eb27785 vm: cleanups 2011-12-14 09:56:50 -08:00
Joe Groff 1c7bd9a7b4 vm: don't scribble memory handling leaf signals 2011-12-14 09:56:50 -08:00
Joe Groff 7c9332e966 cpu.x86.*: clean up signal handler prolog code
Also bump the signal handler frame sizes up again since it looks like we shrank them too much.
2011-12-14 09:56:50 -08:00
Joe Groff 7844c66d6e vm: factor out word_stack_frame_size 2011-12-14 09:56:49 -08:00
Joe Groff a1ee881435 vm: get rid of now-trivial innermost_stack_frame 2011-12-14 09:56:49 -08:00
Joe Groff 079025559d simplify function prologs 2011-12-14 09:56:49 -08:00
Joe Groff 2f20ee6fb0 vm: fix types after rebase 2011-12-14 09:56:49 -08:00
Joe Groff 604ceb957c vm: replace remaining stack_frame-based logic 2011-12-14 09:56:49 -08:00
Joe Groff d74f194b07 vm: remove _reversed from callstack iterator names
Now that they're the only game in town we can give them the short names
2011-12-14 09:56:49 -08:00
Joe Groff f6a5f48da0 vm: remove iterate_callstack_object 2011-12-14 09:56:48 -08:00
Joe Groff a1958c67bd vm: callstack_reversed for callstack_to_array 2011-12-14 09:56:48 -08:00
Joe Groff 0af5fff27c remove iterate_callstack now that it's unused 2011-12-14 09:56:48 -08:00
Joe Groff 822a658cc3 vm: callstack_reversed in call_frame_scrubber 2011-12-14 09:56:48 -08:00
Joe Groff 9236c05e60 vm: stage code block map fixup properly for GC
Don't update the map until the very last thing, and pass untranslated addresses to the iterator functors. Somewhat complicated by the fact that, for startup_fixup, the map is initialized with fixed-up values, so the fixup functor needs a flag indicating whether it operates with a fixed or unfixed code heap map.
2011-12-14 09:56:48 -08:00
Joe Groff e6a80aa9aa vm: callstack_reversed in code_block_visitor 2011-12-14 09:56:48 -08:00
Joe Groff d12b6e375b vm: iterate_callstack_reversed in slot_visitor 2011-12-14 09:56:47 -08:00
Joe Groff e116bc497b vm: reversed callstack iteration 2011-12-14 09:56:47 -08:00
Joe Groff e2fafaed9c WIP verify_callstack function
dumps callstack in reverse order so i can visually inspect that it matches the old forward walking logic
2011-12-14 09:56:47 -08:00
Joe Groff ef38688e87 vm: method to calculate frame size for address
If we're before the prolog or or in a leaf procedure, the stack frame is really a leaf frame created by the signal handler, with a known fixed size, instead of the real stack frame (if any) with a different size.
2011-12-14 09:56:47 -08:00
Joe Groff 5b9aee2c91 vm: don't suffer null return addresses 2011-12-14 09:56:46 -08:00
Joe Groff 1911905c6b vm: frame size for signal handler code blocks 2011-12-14 09:56:46 -08:00
Joe Groff 0b94018d9f vm: initialize all_blocks set after initial fixup 2011-12-14 09:56:46 -08:00
Joe Groff 3868895b56 vm: make all_blocks a set of cells
gcc was doing bad things assuming the pointer given to upper_bound was aligned
2011-12-14 09:56:46 -08:00
Joe Groff 36d1e0a78c vm: verifier shouldn't check for leftovers
It doesn't work after things have been freed
2011-12-14 09:56:45 -08:00
Joe Groff d6227c182b vm: pack frame size into code block header bits 2011-12-14 09:56:45 -08:00
Joe Groff e21f316583 vm: store stack frame size in code blocks
Change modify-code-heap primitive so it takes a sixth element in each array for the frame size.
2011-12-14 09:56:45 -08:00