]> gitweb.factorcode.org Git - factor.git/log
factor.git
12 years agouse radix literals
Joe Groff [Thu, 24 Nov 2011 02:49:33 +0000 (18:49 -0800)]
use radix literals

12 years agomath.parser: natively support 0b 0o 0x syntax
Joe Groff [Thu, 24 Nov 2011 02:29:39 +0000 (18:29 -0800)]
math.parser: natively support 0b 0o 0x syntax
Closes #371

12 years agoui.backend.cocoa.views: clickthrough is bullshit
Joe Groff [Wed, 23 Nov 2011 19:29:03 +0000 (11:29 -0800)]
ui.backend.cocoa.views: clickthrough is bullshit
I don't care what Slava thinks

12 years agovm: don't die if foreign thread gets async signal
Joe Groff [Wed, 23 Nov 2011 19:26:42 +0000 (11:26 -0800)]
vm: don't die if foreign thread gets async signal
Fixes #425

12 years agovm: remove useless forward declare
Joe Groff [Wed, 23 Nov 2011 18:24:29 +0000 (10:24 -0800)]
vm: remove useless forward declare

12 years agovm: quell warnings from vars only used by asserts
Joe Groff [Wed, 23 Nov 2011 06:51:54 +0000 (22:51 -0800)]
vm: quell warnings from vars only used by asserts

12 years agovm: clean up baroque jit safepoint logic
Joe Groff [Wed, 23 Nov 2011 06:48:41 +0000 (22:48 -0800)]
vm: clean up baroque jit safepoint logic

12 years agovm: verify code heap's all_blocks set when DEBUG
Joe Groff [Wed, 23 Nov 2011 06:45:48 +0000 (22:45 -0800)]
vm: verify code heap's all_blocks set when DEBUG

12 years agovm: FACTOR_ASSERT only if FACTOR_DEBUG
Joe Groff [Wed, 23 Nov 2011 06:45:19 +0000 (22:45 -0800)]
vm: FACTOR_ASSERT only if FACTOR_DEBUG

12 years agocompiler.cfg.finalization: reenable scheduling
Joe Groff [Tue, 22 Nov 2011 02:58:30 +0000 (18:58 -0800)]
compiler.cfg.finalization: reenable scheduling
Prolog safepoint appears to work with it enabled

12 years agovm: replace assert with FACTOR_ASSERT
Joe Groff [Fri, 18 Nov 2011 04:42:30 +0000 (20:42 -0800)]
vm: replace assert with FACTOR_ASSERT
Factor is finally a real C++ project and has a custom assert macro. Assertion failures were still getting caught as exceptions and causing failure loops. Write our own macro that calls factor::abort on failure.

12 years agovm: charge samples collected in prolog to parent
Joe Groff [Fri, 18 Nov 2011 01:13:59 +0000 (17:13 -0800)]
vm: charge samples collected in prolog to parent
Fixes #379

12 years agovm: initialize all_blocks map from image
Joe Groff [Fri, 18 Nov 2011 01:13:18 +0000 (17:13 -0800)]
vm: initialize all_blocks map from image
um, code blocks from the image need to go in the set too

12 years agovm: keep a set of all code_blocks in the code_heap
Joe Groff [Thu, 17 Nov 2011 22:29:01 +0000 (14:29 -0800)]
vm: keep a set of all code_blocks in the code_heap
This way looking up code blocks by return address is an O(log n) set lookup rather than an O(n) linear scan.

12 years agocompiler: emit safepoints in optimized prologs
Joe Groff [Thu, 17 Nov 2011 00:50:16 +0000 (16:50 -0800)]
compiler: emit safepoints in optimized prologs

12 years agovm: emit safepoints before VM compiler prologs
Joe Groff [Wed, 16 Nov 2011 20:39:25 +0000 (12:39 -0800)]
vm: emit safepoints before VM compiler prologs
For #379

12 years agoclasses.maybe: Change the type of maybe's class slot. As a result, maybe: maybe:...
Doug Coleman [Wed, 23 Nov 2011 09:43:02 +0000 (01:43 -0800)]
classes.maybe: Change the type of maybe's class slot. As a result, maybe: maybe: integer is valid now, so fix the unit tests and its prettyprinting.

12 years agoclasses.maybe: make maybe's slot type a classoid so you can do maybe: union{ }. Fix...
Doug Coleman [Wed, 23 Nov 2011 09:19:09 +0000 (01:19 -0800)]
classes.maybe: make maybe's slot type a classoid so you can do maybe: union{ }. Fix prettyprinting of anonymous-union/intersection. Fixes #427, fixes #428.

12 years agocompiler tests: fix using, add tests to make sure instance? inlines
Doug Coleman [Wed, 23 Nov 2011 09:01:11 +0000 (01:01 -0800)]
compiler tests: fix using, add tests to make sure instance? inlines

12 years agocompiler.tree.propagation.transforms: fix infinite recursion that was breaking pretty...
Doug Coleman [Wed, 23 Nov 2011 08:48:05 +0000 (00:48 -0800)]
compiler.tree.propagation.transforms: fix infinite recursion that was breaking prettyprint

12 years agoclasses: optimize instance? for classoids
Doug Coleman [Wed, 23 Nov 2011 04:38:07 +0000 (20:38 -0800)]
classes: optimize instance? for classoids

12 years agodlists: use maybe: dlist-link.
Doug Coleman [Wed, 23 Nov 2011 03:38:46 +0000 (19:38 -0800)]
dlists: use maybe: dlist-link.

12 years agoclasses: add syntax for intersection{ and union{ anonymous classes. make classoid...
Doug Coleman [Wed, 23 Nov 2011 02:49:18 +0000 (18:49 -0800)]
classes: add syntax for intersection{ and union{ anonymous classes. make classoid a mixin.

12 years agoclasses: Make methods dispatch on maybes. Fix a couple bugs in the implementation...
Doug Coleman [Tue, 22 Nov 2011 22:47:52 +0000 (14:47 -0800)]
classes: Make methods dispatch on maybes. Fix a couple bugs in the implementation of maybe. classoid? is now a dumb test if an object could be a well-formed classoid; valid-classoid? tests for well-formedness. Move maybe tests. Make pprint* work better on methods.

12 years agoclasses.maybe: move maybe definition from classes.union to classes.maybe
Doug Coleman [Tue, 22 Nov 2011 10:44:58 +0000 (02:44 -0800)]
classes.maybe: move maybe definition from classes.union to classes.maybe

12 years agomulti-methods: predicate-quot -> predicate-def
Doug Coleman [Tue, 22 Nov 2011 10:12:01 +0000 (02:12 -0800)]
multi-methods: predicate-quot -> predicate-def

12 years agotyped: Teach typed about maybe: foo. Should maybe: foo satisfy unboxable-tuple-class? ?
Doug Coleman [Tue, 22 Nov 2011 10:08:37 +0000 (02:08 -0800)]
typed: Teach typed about maybe: foo. Should maybe: foo satisfy unboxable-tuple-class? ?

12 years agoclasses.union: Define a maybe: word that makes a tuple that acts as an anonymous...
Doug Coleman [Tue, 22 Nov 2011 07:00:52 +0000 (23:00 -0800)]
classes.union: Define a maybe: word that makes a tuple that acts as an anonymous union for a type and f. Updated all the places we define UNION: ?foo foo POSTPONE: f ;. Fixes #416 and lots of headaches.

12 years agobenchmark: remove debug code
Doug Coleman [Tue, 22 Nov 2011 05:54:09 +0000 (21:54 -0800)]
benchmark: remove debug code

12 years agococoa.messages: Apply mrjbq's patch to show the name of the cooca function in sender...
Doug Coleman [Tue, 22 Nov 2011 00:38:16 +0000 (16:38 -0800)]
cocoa.messages: Apply mrjbq's patch to show the name of the cooca function in sender stubs. rename 'method' in stack effects to 'signature' since we are passing an array with the return value and arguments, not the method.

12 years agobenchmark: Add a way to run a profile for each benchmark vocabulary.
Doug Coleman [Mon, 21 Nov 2011 21:42:49 +0000 (13:42 -0800)]
benchmark: Add a way to run a profile for each benchmark vocabulary.

12 years agoio.monitors: kill outdated doc about kqueue on BSD
Joe Groff [Fri, 18 Nov 2011 00:56:34 +0000 (16:56 -0800)]
io.monitors: kill outdated doc about kqueue on BSD

12 years agovocabs.refresh.monitor: use resolve-symlinks
Joe Groff [Thu, 17 Nov 2011 04:35:42 +0000 (20:35 -0800)]
vocabs.refresh.monitor: use resolve-symlinks
It already exists and actually works on windows

12 years agowebbrowser.windows: USING
Joe Groff [Thu, 17 Nov 2011 04:33:36 +0000 (20:33 -0800)]
webbrowser.windows: USING

12 years agorandom.unix: roll back type assertions
Joe Groff [Thu, 17 Nov 2011 01:29:46 +0000 (17:29 -0800)]
random.unix: roll back type assertions
Probably don't really make much difference and are invalid in apps that deploy with io level 2 or lower.

12 years agotools.deploy.macosx: fix path to MiniFactor.nib
Joe Groff [Thu, 17 Nov 2011 01:17:54 +0000 (17:17 -0800)]
tools.deploy.macosx: fix path to MiniFactor.nib
Fixes #414.

12 years agorandom: don't assume random-bytes is a byte-vector
Joe Groff [Wed, 16 Nov 2011 18:03:00 +0000 (10:03 -0800)]
random: don't assume random-bytes is a byte-vector
It's not anymore.

12 years agoeditors: fix editing of links. Fixes #411.
John Benediktsson [Wed, 16 Nov 2011 17:18:54 +0000 (09:18 -0800)]
editors: fix editing of links.  Fixes #411.

12 years agorandom: go faster
Joe Groff [Wed, 16 Nov 2011 04:45:16 +0000 (20:45 -0800)]
random: go faster
* Use int <ref> instead of 4 >le
* Inline sequences:push-all
* Types, hints, inlines
Re: #328

12 years agovocabs.refresh.monitor: remove debug traces
Joe Groff [Wed, 16 Nov 2011 04:15:11 +0000 (20:15 -0800)]
vocabs.refresh.monitor: remove debug traces

12 years agowebbrowser.windows: fix loading
Joe Groff [Wed, 16 Nov 2011 04:05:57 +0000 (20:05 -0800)]
webbrowser.windows: fix loading

12 years agovocabs.refresh.monitor: handle symlink paths
Joe Groff [Wed, 16 Nov 2011 04:04:44 +0000 (20:04 -0800)]
vocabs.refresh.monitor: handle symlink paths
On macosx, fsevents always provides the true path for changed files, even if the monitored path includes symlinks. This screws things up if a symlinked path is used as a vocab root. Fixes #404.

12 years agostrings: inline >string and 1string
Joe Groff [Wed, 16 Nov 2011 03:15:19 +0000 (19:15 -0800)]
strings: inline >string and 1string
Fixes #340

12 years agovm: disable SIGINT handler while in factorbug
Joe Groff [Wed, 16 Nov 2011 02:50:42 +0000 (18:50 -0800)]
vm: disable SIGINT handler while in factorbug
Fixes #410

12 years agoupdate USING:s
Joe Groff [Wed, 16 Nov 2011 02:37:30 +0000 (18:37 -0800)]
update USING:s

12 years agorearrange source-file-error error. to load earlier
Joe Groff [Wed, 16 Nov 2011 02:26:17 +0000 (18:26 -0800)]
rearrange source-file-error error. to load earlier
Fixes #359

12 years agodlists: make a dlist-link tuple so you can "be the node" by subclassing it. this...
Doug Coleman [Wed, 16 Nov 2011 00:30:20 +0000 (16:30 -0800)]
dlists: make a dlist-link tuple so you can "be the node" by subclassing it. this allows you go put a type on the obj>> slot. ensure that dlist nodes are returned with prev/next pointers set to f so they can be reused. dlist-filter used to work destructively on the dlist, make a new dlist instead because the combinator relied on using prev/next of deleted nodes.

12 years agoalien.endian: read 64bit numbers of the opposite endian as two 32bit numbers, then...
Doug Coleman [Tue, 15 Nov 2011 21:22:12 +0000 (13:22 -0800)]
alien.endian: read 64bit numbers of the opposite endian as two 32bit numbers, then bitor them together

12 years agocommand-line.startup: fix help message on windows
Joe Groff [Tue, 15 Nov 2011 21:09:32 +0000 (13:09 -0800)]
command-line.startup: fix help message on windows
Support /? while we're at it. Fixes #323

12 years agoui.tools.deploy: remove monkey traps from UI
Joe Groff [Tue, 15 Nov 2011 20:53:21 +0000 (12:53 -0800)]
ui.tools.deploy: remove monkey traps from UI

12 years agotools.deploy.config: set default io-level 3
Joe Groff [Tue, 15 Nov 2011 20:52:54 +0000 (12:52 -0800)]
tools.deploy.config: set default io-level 3

12 years agoRevert "ui.tools.listener: removing unnecessary spawn."
Joe Groff [Tue, 15 Nov 2011 20:35:25 +0000 (12:35 -0800)]
Revert "ui.tools.listener: removing unnecessary spawn."

This reverts commit f8aa8038d3de8fdb796c59f9fbda04e25edda1b3.
Breaks error handling: http://paste.factorcode.org/paste?id=2407

12 years agoopengl: fix small typo in fix-coordinates stack effect. Fixes #406.
John Benediktsson [Tue, 15 Nov 2011 16:18:22 +0000 (08:18 -0800)]
opengl: fix small typo in fix-coordinates stack effect.  Fixes #406.

12 years agoslots: fix initial value tests.
John Benediktsson [Mon, 14 Nov 2011 18:26:08 +0000 (10:26 -0800)]
slots: fix initial value tests.

12 years agovariables: fix for recent initial-value change.
John Benediktsson [Mon, 14 Nov 2011 18:25:28 +0000 (10:25 -0800)]
variables: fix for recent initial-value change.

12 years agoui.tools.listener: removing unnecessary spawn.
John Benediktsson [Mon, 14 Nov 2011 18:16:15 +0000 (10:16 -0800)]
ui.tools.listener: removing unnecessary spawn.

12 years agoimages.viewer.prettyprint: mark not loaded/tested
Joe Groff [Mon, 14 Nov 2011 07:09:18 +0000 (23:09 -0800)]
images.viewer.prettyprint: mark not loaded/tested
Prevent mason from loading it and complaining that it can't write gadgets to a text file.

12 years agowebbrowser.linux: switching to xdg-open.
John Benediktsson [Mon, 14 Nov 2011 00:49:25 +0000 (16:49 -0800)]
webbrowser.linux: switching to xdg-open.

12 years agowebbrowser: changing open-url to use open-file everywhere.
John Benediktsson [Mon, 14 Nov 2011 00:31:52 +0000 (16:31 -0800)]
webbrowser: changing open-url to use open-file everywhere.

12 years agomath.vectors.simd: don't try distance on int types
Joe Groff [Mon, 14 Nov 2011 00:09:30 +0000 (16:09 -0800)]
math.vectors.simd: don't try distance on int types
"v- norm" doesn't work right for uint-4s because of underflow, but who's going to call "distance" on a uint vector?

12 years agomath.vectors.simd: unencrypt check-optimizer
Joe Groff [Sun, 13 Nov 2011 23:55:05 +0000 (15:55 -0800)]
math.vectors.simd: unencrypt check-optimizer
And make it report real information about what values were tested and how they failed

12 years agocode beautification
Joe Groff [Sun, 13 Nov 2011 23:45:03 +0000 (15:45 -0800)]
code beautification

12 years agomath.vectors.simd: add vcount to the tests
Joe Groff [Sun, 13 Nov 2011 08:02:40 +0000 (00:02 -0800)]
math.vectors.simd: add vcount to the tests
Also add a base case to (approx=) for integer returns. vcount returns an integer even for float vector inputs, but the test machinery isn't smart enough to figure that out and uses (approx=) on the outputs anyway.

12 years agomath.vectors.simd.intrinsics: fix double-2 vcount
Joe Groff [Sun, 13 Nov 2011 07:19:49 +0000 (23:19 -0800)]
math.vectors.simd.intrinsics: fix double-2 vcount
Turns out we use MOVMSKPS for double vectors too. Gotta save that extra instruction byte!

12 years agocompiler.tree.propagation: missed using
Joe Groff [Sun, 13 Nov 2011 03:29:17 +0000 (19:29 -0800)]
compiler.tree.propagation: missed using

12 years agocompiler: more peephole tests for shl/sar
Joe Groff [Sun, 13 Nov 2011 03:29:01 +0000 (19:29 -0800)]
compiler: more peephole tests for shl/sar

12 years agocompiler: tighten (simd-select) output class
Joe Groff [Sun, 13 Nov 2011 01:00:39 +0000 (17:00 -0800)]
compiler: tighten (simd-select) output class
Ints and smaller (or shorts and smaller on 32-bit) can be assumed to be fixnums. Fixes #393

12 years agomath.vectors.simd: make vcount work for all ints
Joe Groff [Sun, 13 Nov 2011 00:53:07 +0000 (16:53 -0800)]
math.vectors.simd: make vcount work for all ints

12 years agomath.vectors.simd.intrinsics: better fake vgetmask
Joe Groff [Sat, 12 Nov 2011 23:37:25 +0000 (15:37 -0800)]
math.vectors.simd.intrinsics: better fake vgetmask
More accurate simulacrum of PMOVMSKB/MOVMSKPS/MOVMSKPD for non-intrinsic definition

12 years agomath.bitwise: don't count the same bits over&over
Joe Groff [Sat, 12 Nov 2011 07:36:21 +0000 (23:36 -0800)]
math.bitwise: don't count the same bits over&over

12 years agomath.bitwise: hotrod nonintrinsic fixnum-bit-count
Joe Groff [Sat, 12 Nov 2011 06:49:09 +0000 (22:49 -0800)]
math.bitwise: hotrod nonintrinsic fixnum-bit-count

12 years agocompiler: add intrinsic for PMOVMSKB/MOVMSKP[SD]
Joe Groff [Sat, 12 Nov 2011 06:47:54 +0000 (22:47 -0800)]
compiler: add intrinsic for PMOVMSKB/MOVMSKP[SD]
Combined with a fast bit-count this will let us rice byte-counting.

12 years agonew module images.viewer.prettyprint
Joe Groff [Sun, 13 Nov 2011 20:10:23 +0000 (12:10 -0800)]
new module images.viewer.prettyprint
Pretty-prints image objects as images.

12 years agovm: fashion police
Joe Groff [Sun, 13 Nov 2011 06:39:28 +0000 (22:39 -0800)]
vm: fashion police

12 years agovm: set stdin_loop cancellation state
Joe Groff [Sat, 12 Nov 2011 22:49:20 +0000 (14:49 -0800)]
vm: set stdin_loop cancellation state
Make it asynchronous so it doesn't wait till the next syscall to cancel.

12 years agovm: close_console before exiting anywhere
Joe Groff [Sat, 12 Nov 2011 22:47:32 +0000 (14:47 -0800)]
vm: close_console before exiting anywhere
Add a factor_vm::exit function that does close_console() before ::exit-ing

12 years agovm: close the console when exiting
Philipp Brüschweiler [Sat, 12 Nov 2011 21:06:47 +0000 (22:06 +0100)]
vm: close the console when exiting

This prevents an endless loop caused by the nvidia drivers on linux.
See http://www.nvnews.net/vbulletin/showthread.php?t=164619

12 years agoclasses.struct.vectored: update for recent slots change
Slava Pestov [Sun, 13 Nov 2011 06:41:08 +0000 (22:41 -0800)]
classes.struct.vectored: update for recent slots change

12 years agovariants: update for recent slots change
Slava Pestov [Sun, 13 Nov 2011 06:40:55 +0000 (22:40 -0800)]
variants: update for recent slots change

12 years agoNow that #foo and ##foo are symbols we can remove a bunch of \
Slava Pestov [Sun, 13 Nov 2011 06:04:26 +0000 (22:04 -0800)]
Now that #foo and ##foo are symbols we can remove a bunch of \

12 years agovm: typo in os-windows.hpp
Joe Groff [Sun, 13 Nov 2011 03:23:44 +0000 (19:23 -0800)]
vm: typo in os-windows.hpp

12 years agoui.operations: fix stack names.
John Benediktsson [Sun, 13 Nov 2011 02:48:03 +0000 (18:48 -0800)]
ui.operations: fix stack names.

12 years agoio.directories: fix delete-file on windows, add unit test
Doug Coleman [Sun, 13 Nov 2011 02:27:33 +0000 (18:27 -0800)]
io.directories: fix delete-file on windows, add unit test

12 years agoassocs: 5-8% performance improvement to assoc>map. Fixes #69.
John Benediktsson [Sun, 13 Nov 2011 00:56:22 +0000 (16:56 -0800)]
assocs: 5-8% performance improvement to assoc>map.  Fixes #69.

12 years agoFix bootstrap
Slava Pestov [Sun, 13 Nov 2011 00:43:16 +0000 (16:43 -0800)]
Fix bootstrap

12 years agowebbrowser: open url's in your webbrowser.
John Benediktsson [Sun, 13 Nov 2011 00:18:52 +0000 (16:18 -0800)]
webbrowser: open url's in your webbrowser.

12 years agoformatting: improve summary.txt.
John Benediktsson [Sun, 13 Nov 2011 00:18:39 +0000 (16:18 -0800)]
formatting: improve summary.txt.

12 years agohashtables: small cleanup
Slava Pestov [Sat, 12 Nov 2011 23:35:19 +0000 (15:35 -0800)]
hashtables: small cleanup

12 years agoPrevent predicate engine words from showing up in usage. results
Slava Pestov [Sat, 12 Nov 2011 22:50:52 +0000 (14:50 -0800)]
Prevent predicate engine words from showing up in usage. results

12 years agoFix ambiguity between 'initial: f' and no initial value in a slot spec. Fixes #382
Slava Pestov [Sat, 12 Nov 2011 22:48:00 +0000 (14:48 -0800)]
Fix ambiguity between 'initial: f' and no initial value in a slot spec. Fixes #382

12 years agoeditors: wait 300ms for the run-process to possibly fail so errors are reported if...
Doug Coleman [Sat, 12 Nov 2011 23:13:34 +0000 (15:13 -0800)]
editors: wait 300ms for the run-process to possibly fail so errors are reported if the editor is missing or broken

12 years agoeditors.jedit: return "jedit" when looking for jedit path
Doug Coleman [Sat, 12 Nov 2011 22:36:35 +0000 (14:36 -0800)]
editors.jedit: return "jedit" when looking for jedit path

12 years agofactor.sh: Remove the redundant list of commands
Doug Coleman [Sat, 12 Nov 2011 22:05:21 +0000 (14:05 -0800)]
factor.sh: Remove the redundant list of commands

12 years agocpu.*.bootstrap: clear faulting flag directly
Joe Groff [Sat, 12 Nov 2011 20:57:24 +0000 (12:57 -0800)]
cpu.*.bootstrap: clear faulting flag directly
No reason to go through a safepoint in unwind-native-frames really.

12 years agovm: more defense against multi-faulting
Joe Groff [Fri, 11 Nov 2011 21:29:46 +0000 (13:29 -0800)]
vm: more defense against multi-faulting
* Clear faulting_p from a safepoint rather than inside general_error, because jumping into unwind-native-frames could blow up.
* Handle multiple faults from fatal_error by breakpointing. Is there anything else we can safely do at that point?
* Verify memory protection faults in the top half of the signal handlers because signal dispatch could fault. Treat memory faults during gc or fep as fatal errors.
* Add a function factor_vm::abort() that restores the default SIGABRT handler and ::abort()s. Use it from fatal_error() so we get useful context from gdb and so the user gets feedback from the system crash reporter that Factor blew up and didn't just disappear.
* In factorbug(), don't proceed with .s .r .c if it would be unsafe to do so.
* Don't pile on signals if we've already called fatal_error().

12 years agocompiler.cfg: Rename <##foo> to ##foo, in the low-level IR
Doug Coleman [Sat, 12 Nov 2011 03:48:38 +0000 (19:48 -0800)]
compiler.cfg: Rename <##foo> to ##foo, in the low-level IR

12 years agobenchmark.udp-echo0: Fix the memory leak.
Doug Coleman [Sat, 12 Nov 2011 01:58:45 +0000 (17:58 -0800)]
benchmark.udp-echo0: Fix the memory leak.

12 years agoio.sockets.windows: plug receive-from memory leak
Joe Groff [Sat, 12 Nov 2011 01:56:04 +0000 (17:56 -0800)]
io.sockets.windows: plug receive-from memory leak
Should fix #387.

12 years agomath.parser: undo some inlining to shrink size
Joe Groff [Fri, 11 Nov 2011 23:49:53 +0000 (15:49 -0800)]
math.parser: undo some inlining to shrink size
For #318.

12 years agovm: "edges" command for factorbug
Joe Groff [Fri, 11 Nov 2011 18:12:36 +0000 (10:12 -0800)]
vm: "edges" command for factorbug