contification paper

Stephen Weeks MLton@sourcelight.com
Thu, 8 Mar 2001 13:28:44 -0800 (PST)


--t09JBfieEl
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit


> > I put my latest MLton snapshot at http://www.star-lab.com/sweeks/src.tgz
> > It's not substantially different from what you have, but it does include the
> > code to split timings into gc and non-gc portions, which might be useful for
> > numbers we report in the paper.
> 
> The gc and non-gc timings are nice.  One thing I discovered was that
> occassionally, I get a uncaught Time exception. 

Scary.  I've never seen this.

> I think it arises from
> the Time.-, when the times are so close that the difference is negative --
> is that even possible? 

The only functions that raise Time are
	Time.{-,fromMicroseconds,fromMilliseconds,fromSeconds,fromReal}
The only one that seems to be used in an interesting way in MLton is Time.-

But it's only called with times returned by Posix.ProcEnv.times and
MLton.GC.time, both of which should be nondecreasing functions as time passes.
Both come from the C "times" function.  Henry, do you know of any case where
the values return by times can decrease?

I guess the thing to do is to put a little wrapper around Time.- within
control.sml that checks before calling Time.-, and returns 0 if its first arg is 
< its second arg (probably also should print a warning message for now so we can 
confirm that is the problem).

> > I hadn't actually tried them, but I definitely wanted to include hamlet, because 
> > it's a big one.  Here they are.
> 
> Here are the results for hamlet.  A nice one for the dom analysis.  I
> don't know about the runtimes; the hamlet-input.sml that I wrote
> apparently had some syntax error or something, because all the runtimes
> came out as 0.0.  

Sorry about that.  hamlet is very picky.  Here's the input file I use.



--t09JBfieEl
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename="hamlet-input.sml"
Content-Transfer-Encoding: base64

ZGF0YXR5cGUgdCA9IFogfCBTIG9mIHQ7CnZhbCB6ZXJvID0gWjsKdmFsIG9uZSA9IFMgemVybzsK
dmFsIHR3byA9IFMgb25lOwp2YWwgcmVjIGFkZDogdCAqIHQgLT4gdCA9IGZuIChaLCBuKSA9PiBu
IHwgKFMgbSwgbikgPT4gUyAoYWRkIChtLCBuKSk7CnZhbCByZWMgbXVsOiB0ICogdCAtPiB0ID0g
Zm4gKFosIG4pID0+IFogfCAoUyB6LCBuKSA9PiBhZGQgKG4sIG11bCAoeiwgbikpOwp2YWwgZm91
ciA9IG11bCAodHdvLCB0d28pOwp2YWwgcmVjIGV4cDogdCAqIHQgLT4gdCA9IGZuIChuLCBaKSA9
PiBvbmUgfCAobiwgUyBtKSA9PiBtdWwgKG4sIGV4cCAobiwgbSkpOwp2YWwgXyA9IGV4cCAoZXhw
IChmb3VyLCBmb3VyKSwgdHdvKTsK

--t09JBfieEl--