Home My Page Projects Code Snippets Project Openings SML/NJ
 Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

# SCM Repository

[smlnj] Annotation of /sml/trunk/HISTORY
 [smlnj] / sml / trunk / HISTORY

# Annotation of /sml/trunk/HISTORY

 1 : dbm 570 This is the HISTORY file for the Yale SML/NJ CVS repository. 2 : 3 : An entry should be made for _every_ commit to the repository. 4 : The entries in this file will be used when creating the README 5 : for new versions, so keep that in mind when writing the 6 : description. 7 : 8 : The form of an entry should be: 9 : 10 : mblume 1615 Name: 11 : mblume 1480 Date: yyyy/mm/dd 12 : Tag: 13 : Description: 14 : 15 : ---------------------------------------------------------------------- 16 : mblume 1863 Name: Matthias Blume (http://www.tti-c.org/blume/) 17 : mblume 1878 Date: 2005/11/21 14:00:00 CST 18 : Tag: blume-20051121-html-lib 19 : Description: 20 : 21 : Enabling $/html-lib.cm in config/preloads did not work. This is fixed 22 : now. (Since the anchor mapping for html-lib.cm is not yet in effect 23 : at the time when config/preloads is processed, the library has to 24 : be referred to by another name. In 110.57 this would be 25 :$SMLNJ-LIB/HTML/html-lib.cm. I arranged for $smlnj/smlnj-lib/html-lib.cm 26 : to be valid as well.) 27 : 28 : Thanks to Todd Wilson (Fresno) for alerting me to this issue. 29 : 30 : ---------------------------------------------------------------------- 31 : Name: Matthias Blume (http://www.tti-c.org/blume/) 32 : mblume 1874 Date: 2005/11/19 13:45:00 CST 33 : Tag: Release_110_57 34 : Description: 35 : 36 : Moved release tag for 110.57. 37 : 38 : ---------------------------------------------------------------------- 39 : Name: Matthias Blume (http://www.tti-c.org/blume/) 40 : mblume 1873 Date: 2005/11/19 23:35:00 CST 41 : Tag: blume-20051119-fish 42 : Description: 43 : 44 : Fixed a problem in config/install.sh where it tries to "fish" the 45 : name of the CM metadata directory from the wrong place (because 46 : the physical location of basis.cm has changed). Also, corrected the 47 : path anchor for$/html-lib.cm. (Thanks to M. Fluet for pointing out 48 : these problems.) 49 : 50 : ---------------------------------------------------------------------- 51 : Name: Matthias Blume (http://www.tti-c.org/blume/) 52 : mblume 1867 Date: 2005/11/16 14:30:00 CST 53 : mblume 1874 Tag: blume-orig-110_57 54 : mblume 1867 Description: 55 : 56 : New working version (110.57). NEW BOOTFILES! 57 : 58 : mblume 1874 UPDATE: The release tag has been moved to include a fix for a brown-paper- 59 : bag glitch (see above). 60 : 61 : mblume 1867 ---------------------------------------------------------------------- 62 : Name: Matthias Blume (http://www.tti-c.org/blume/) 63 : mblume 1866 Date: 2005/11/16 10:25:00 CST 64 : Tag: blume-22051116-btrace 65 : Description: 66 : 67 : Fixed problem with bogus exception message when using back-trace 68 : facility. 69 : 70 : ---------------------------------------------------------------------- 71 : Name: Matthias Blume (http://www.tti-c.org/blume/) 72 : mblume 1865 Date: 2005/11/15 22:35:00 CST 73 : Tag: blume-22051115-array2copy 74 : Description: 75 : 76 : Added simple implementation of Array2.copy. (Warning: mostly untested.) 77 : 78 : ---------------------------------------------------------------------- 79 : Name: Matthias Blume (http://www.tti-c.org/blume/) 80 : mblume 1864 Date: 2005/11/15 21:35:00 CST 81 : Tag: blume-22051115-versiontool 82 : Description: 83 : 84 : Reversed change to src/system/smlnj/internals/versiontool.cm. This 85 : file gets loaded as a tool -- by the equivalent of CM.make during the 86 : run of CMB.make. Thus, CMB's path configuration is meaningless for 87 : it. Instead, it has the status of "user code", so it should use 88 : $/basis.cm to refer to the Basis library. (At least that's true for 89 : the purpose of bootstrapping the previous change. In the future it 90 : might make sense to have versiontool.cm refer to 91 :$smlnj/basis/basis.cm, i.e., the version of the Basis that the 92 : compiler itself uses.) 93 : 94 : Also patched src/system/testml to have it activate those extra anchor 95 : bindings in config/extrapathconfig. 96 : 97 : ---------------------------------------------------------------------- 98 : Name: Matthias Blume (http://www.tti-c.org/blume/) 99 : mblume 1863 Date: 2005/11/15 16:35:00 CST 100 : Tag: blume-22051115-libraries 101 : Description: 102 : 103 : This change affects the way the following libraries are tied into 104 : the system: 105 : 106 : $/basis.cm 107 :$/smlnj-lib.cm 108 : $/pp-lib.cm 109 :$/controls-lib.cm 110 : $/html-lib.cm 111 :$/ml-yacc-lib.cm 112 : 113 : These libraries are now internally (as seen from the source code 114 : of the implementation itself) known by the following names: 115 : 116 : $smlnj/basis/basis.cm 117 :$smlnj/smlnj-lib/smlnj-lib.cm 118 : $smlnj/smlnj-lib/pp-lib.cm 119 :$smlnj/smlnj-lib/controls-lib.cm 120 : $smlnj/smlnj-lib/html-lib.cm 121 :$smlnj/ml-yacc/ml-yacc-lib.cm 122 : 123 : This makes it possible to work with code that requires different 124 : versions of these libraries, and which refers to these libraries using 125 : their "default" names (i.e., the first set of names above). In other 126 : words, one can un-define or re-define those default names without 127 : compromising the proper functioning of the compiler itself. 128 : 129 : A similar procedure had already been performed for several of the 130 : MLRISC libraries that are linked into the compiler. I did some 131 : cleanup on this code. 132 : 133 : A new file in the config directory (named extrapathconfig) is 134 : responsible for setting up path anchors that the compiler itself does 135 : not need, but that are typically required by user code. 136 : 137 : ---------------------------------------------------------------------- 138 : mblume 1862 Name: Matthias Blume 139 : Date: 2005/11/07 17:05:00 CST 140 : Tag: blume-20051107-slice 141 : Description: 142 : 143 : Fixed erroneous out-of-bounds test in the "update" function of 144 : various *ArraySlice modules. (Thanks to Vesa A. Norrman for pointing 145 : out the problem.) 146 : 147 : Pushed some Basis changes through ML-Lex, CML, and eXene. 148 : 149 : ---------------------------------------------------------------------- 150 : jhr 1858 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 151 : jhr 1861 Date: 2005/11/07 152 : Description: 153 : Fixed a Basis incompatibility: The depreciated function Substring.all 154 : was removed (use Substring.full instead). 155 : 156 : ---------------------------------------------------------------------- 157 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 158 : jhr 1858 Date: 2005/11/05 159 : Description: 160 : Tweaked interval set API in SML/NJ library; see the CHANGES file for details. 161 : 162 : ---------------------------------------------------------------------- 163 : mblume 1856 Name: Matthias Blume (http://www.tti-c.org/blume/) 164 : Date: 2005/11/02 16:25:00 CST 165 : Tag: blume-20051102-hex 166 : Description: 167 : 168 : * Runtime system bootstrap code now accepts hex digits in BOOTLIST 169 : in either upper case or lower case format. 170 : * Pushed changes to names of Pack{Big,Little} structures through 171 : CML and eXene. 172 : 173 : ---------------------------------------------------------------------- 174 : jhr 1852 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 175 : jhr 1855 Date: 2005/11/02 176 : Description: 177 : Fixed a Basis incompatibility: Pack{Big,Little} structures should 178 : be called PackWord{Big,Little}. 179 : 180 : ---------------------------------------------------------------------- 181 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 182 : jhr 1852 Date: 2005/10/28 183 : Description: 184 : Fixed a minor Basis incompatibility: hex digits should be upper case. 185 : 186 : ---------------------------------------------------------------------- 187 : mblume 1846 Name: Matthias Blume (blume (at) tti - c (dot) org) 188 : Date: 2005/10/25 16:00:00 CDT 189 : Tag: Release_110_56 190 : Description: 191 : 192 : New working version (110.56). NEW BOOTFILES! 193 : 194 : ---------------------------------------------------------------------- 195 : jhr 1838 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 196 : jhr 1840 Date: 2005/10/25 197 : Description: 198 : Added interval sets to utility library (signatures INTERVAL_DOMAIN 199 : and INTERVAL_SET, and functor IntervalSetFn). 200 : 201 : ---------------------------------------------------------------------- 202 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 203 : jhr 1838 Date: 2005/10/14 204 : Description: 205 : Add Zhong Shao's fix for datatype equality functions. 206 : 207 : ---------------------------------------------------------------------- 208 : allenleung 1836 Name: Allen Leung (leunga (at) reservoir (dot) com) 209 : allenleung 1837 Date: 2005/10/14 12:30:00 EST 210 : Tag: leunga-20051014-x86-spill 211 : Description: 212 : 213 : Bug fix a bug found by Carl Hauser. 214 : There was a typo in the reload code for FCMP in x86SpillInstr.sml. 215 : 216 : ---------------------------------------------------------------------- 217 : Name: Allen Leung (leunga (at) reservoir (dot) com) 218 : allenleung 1836 Date: 2005/10/14 11:15:00 EST 219 : Tag: leunga-20051014-x86-asm 220 : Description: 221 : 222 : Removed some debugging code in file x86Asm.sml. 223 : The function emit_operand was printing out debugging output. 224 : 225 : ---------------------------------------------------------------------- 226 : jhr 1813 Name: John Reppy 227 : jhr 1831 Date: 2005/07/27 228 : Tag: 229 : Description: 230 : 231 : jhr 1832 Fixed ml-lex to recognize "\r" as representing carriage return. 232 : 233 : ---------------------------------------------------------------------- 234 : Name: John Reppy 235 : Date: 2005/07/27 236 : Tag: 237 : Description: 238 : 239 : jhr 1831 Fixed ml-yacc to work on files with non-native end-of-line 240 : encodings (e.g., Windows text file on a Unix system). 241 : 242 : ---------------------------------------------------------------------- 243 : Name: John Reppy 244 : jhr 1824 Date: 2005/07/20 245 : Tag: 246 : Description: 247 : 248 : Added changes from Dominic Evans (oldmanuk (at) gmail (dot) com) 249 : to support HPUX 11. 250 : 251 : ---------------------------------------------------------------------- 252 : Name: John Reppy 253 : jhr 1813 Date: 2005/07/06 254 : Tag: 255 : Description: 256 : 257 : Changes to the SML/NJ library. See smlnj-lib/CHANGES for details. 258 : 259 : ---------------------------------------------------------------------- 260 : mblume 1808 Name: Matthias Blume (blume (at) tti - c (dot) org) 261 : Date: 2005/07/06 00:45:00 CDT 262 : Tag: blume-20050706-slice-copy 263 : Description: 264 : 265 : Fixed reversed logic for deciding whether to "copy up" or "copy down" 266 : in *-array-slice.sml. 267 : 268 : ---------------------------------------------------------------------- 269 : allenleung 1806 Name: Allen Leung (leunga (at) reservoir (dot) com) 270 : allenleung 1807 Date: 2005/05/31 17:00:00 EST 271 : Tag: leunga-20050531-cygwin-fault-2 272 : Description: 273 : 274 : A typo in the cygwin code fixed. 275 : 276 : ---------------------------------------------------------------------- 277 : Name: Allen Leung (leunga (at) reservoir (dot) com) 278 : allenleung 1806 Date: 2005/05/31 16:47:00 EST 279 : Tag: leunga-20050531-cygwin-fault 280 : Description: 281 : 282 : Updated Cygwin's fault/signal handling to match the Windows version. 283 : Updated the export list. 284 : 285 : ---------------------------------------------------------------------- 286 : mblume 1791 Name: Matthias Blume (blume (at) tti - c (dot) org) 287 : mblume 1795 Date: 2005/05/18 13:35:00 CDT 288 : Tag: Release_110_54 289 : Description: 290 : 291 : New working version (110.54). NEW BOOTFILES! 292 : 293 : ---------------------------------------------------------------------- 294 : Name: Matthias Blume (blume (at) tti - c (dot) org) 295 : mblume 1794 Date: 2005/05/18 11:58:00 CDT 296 : Tag: blume-20050518-installer 297 : Description: 298 : 299 : Added support scripts for Mac OS X PackageMaker and modified 300 : config/install.sh so that it supports re-dumping a heap image 301 : after customization. 302 : 303 : ---------------------------------------------------------------------- 304 : Name: Matthias Blume (blume (at) tti - c (dot) org) 305 : mblume 1793 Date: 2005/05/18 10:55:00 CDT 306 : Tag: blume-20050518-realdiv-noovld 307 : Description: 308 : 309 : Un-overloaded / to work around bug in overloading resolution code. 310 : 311 : ---------------------------------------------------------------------- 312 : Name: Matthias Blume (blume (at) tti - c (dot) org) 313 : mblume 1792 Date: 2005/05/16 23:50:00 CDT 314 : Tag: blume-20050516-redump-heap 315 : Description: 316 : 317 : Added mechanism for re-creating a heap file for the interactive system 318 : after configuration variables have been changed. 319 : 320 : CM.redump_heap : string -> unit 321 : 322 : This is much like SMLofNJ.exportML, but starting from the resulting 323 : heap does not return to the caller of CM.redump_heap but 324 : restarts the interactive system from scratch. The original call of 325 : CM.redump_heap does not return but ends the interactive session. 326 : Thus, CM.redump_heap is a lot like SMLofNJ.exportFn. 327 : 328 : Internally, redump_heap winds the dynamic execution context back to 329 : the point where the original heap image was created and re-executes 330 : the heap image generation code in the boot code. 331 : 332 : ---------------------------------------------------------------------- 333 : Name: Matthias Blume (blume (at) tti - c (dot) org) 334 : mblume 1791 Date: 2005/05/09 21:55:00 CDT 335 : Tag: blume-20050509-word64 336 : Description: 337 : 338 : Added a hack to the existing hack known as Word64 to make fromString 339 : behave correctly. I am still not sure whether Word64.scan will work 340 : as specified with respect to the interaction of radix and prefix. 341 : 342 : ---------------------------------------------------------------------- 343 : allenleung 1785 Name: Allen Leung (leunga (at) reservoir (dot) com) 344 : Date: 2005/05/04 11:50:00 EST 345 : Tag: leunga-20050504-checkgc 346 : Description: 347 : 348 : Added a gc protocol checking phase. This phase is enabled with 349 : the flag "check-gc". "debug-check-gc" turns on the verbose mode. 350 : 351 : ---------------------------------------------------------------------- 352 : mblume 1741 Name: Matthias Blume (blume (at) tti - c (dot) org) 353 : mblume 1784 Date: 2005/05/04 10:45:00 CDT 354 : Tag: blume-20050504-intinf 355 : Description: 356 : 357 : Fixed a bug in the implementation of div and mod for IntInf. 358 : Thanks to Neophytos Michael for reporting the problem. 359 : 360 : ---------------------------------------------------------------------- 361 : Name: Matthias Blume (blume (at) tti - c (dot) org) 362 : mblume 1783 Date: 2005/05/04 10:35:00 CDT 363 : Tag: blume-20050504-join 364 : Description: 365 : 366 : Added a "join" combinator to the ParserComb module in smlnj-lib.cm. 367 : 368 : ---------------------------------------------------------------------- 369 : Name: Matthias Blume (blume (at) tti - c (dot) org) 370 : mblume 1770 Date: 2005/02/28 23:40:00 CST 371 : Tag: blume-20050228-mVar 372 : Description: 373 : 374 : Fixed serious bug (brown paper bag variety) in new implementation of 375 : structure Atom in CML. (I had accidentally used a mailbox instead of 376 : an mvar, leaving the door open for races.) 377 : 378 : ---------------------------------------------------------------------- 379 : Name: Matthias Blume (blume (at) tti - c (dot) org) 380 : mblume 1761 Date: 2005/02/25 15:00:00 CST 381 : Tag: Release_110_53 382 : Description: 383 : 384 : New working version (110.53). NEW BOOTFILES! 385 : 386 : ---------------------------------------------------------------------- 387 : Name: Matthias Blume (blume (at) tti - c (dot) org) 388 : mblume 1760 Date: 2005/02/25 14:50:00 CST 389 : Tag: blume-20050225-susp 390 : Description: 391 : 392 : Brought back SMLofNJ.Susp. The underlying suspension type is the one 393 : implemented in Core -- which means that it is the same as the one used 394 : by the lazy extension. 395 : 396 : ---------------------------------------------------------------------- 397 : Name: Matthias Blume (blume (at) tti - c (dot) org) 398 : mblume 1759 Date: 2005/02/24 16:50:00 CST 399 : Tag: blume-20050224-cml-atom 400 : Description: 401 : 402 : Simpler and at the same time more general implementation of structure 403 : Atom in CML. 404 : 405 : ---------------------------------------------------------------------- 406 : Name: Matthias Blume (blume (at) tti - c (dot) org) 407 : mblume 1758 Date: 2005/02/15 17:35:00 CST 408 : Tag: blume-20050215-tools 409 : Description: 410 : 411 : Created new "tools" directory under "src" and moved "TraceDebugProf" 412 : there. 413 : 414 : ---------------------------------------------------------------------- 415 : Name: Matthias Blume (blume (at) tti - c (dot) org) 416 : mblume 1755 Date: 2005/02/10 17:55:00 CST 417 : Tag: blume-20050210-longlong 418 : Description: 419 : 420 : Implemented "long long" arguments and results for NLFFI. (Only the 421 : PPC/MacOS implementation is complete, the other backends still need to 422 : be updated.) 423 : 424 : ---------------------------------------------------------------------- 425 : Name: Matthias Blume (blume (at) tti - c (dot) org) 426 : mblume 1751 Date: 2005/01/24 17:40:00 CST 427 : Tag: blume-20050124-mlyacc 428 : Description: 429 : 430 : Minor cleanup in ML-Yacc rule printing mechanism. This should fix a 431 : problem with certain "as" patterns which previously got rendered 432 : using incorrect syntax. 433 : 434 : ---------------------------------------------------------------------- 435 : Name: Matthias Blume (blume (at) tti - c (dot) org) 436 : mblume 1750 Date: 2005/01/18 12:00:00 CST 437 : Tag: blume-20050118-profile 438 : Description: 439 : 440 : Made time profiling code (interrupt handler) in runtime system aware 441 : of new array representation. 442 : 443 : ---------------------------------------------------------------------- 444 : Name: Matthias Blume (blume (at) tti - c (dot) org) 445 : mblume 1747 Date: 2005/01/14 18:00:00 CST 446 : Tag: blume-20050114-heap2exec 447 : Description: 448 : 449 : Implemented new (but still experimental) heap2exec facility. This is 450 : tested under Mac OS X and should work under Linux (will test shortly). 451 : It will probably also work on the Sparc (will test some time later). 452 : 453 : - removed old "HACKED_STANDALONE" hack from runtime 454 : 455 : To be able to test this, uncomment the request for "heap2asm" in 456 : config/targets prior to installation. (Notice that this is different 457 : from "heap2exec" mentioned below. Not a typo.) 458 : 459 : To perform an actual test, run the command 460 : 461 : $bin/heap2exec heapfile execfile 462 : 463 : (You can put heap2exec on your shell's path.) 464 : 465 : For example, run 466 : 467 :$ bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly 468 : 469 : This will create a standalone executable called "mly" which you can 470 : then invoke directly as a command. 471 : 472 : ---------------------------------------------------------------------- 473 : Name: Matthias Blume (blume (at) tti - c (dot) org) 474 : mblume 1746 Date: 2005/01/07 11:44:00 CST 475 : Tag: blume-20050107-mlstring 476 : Description: 477 : 478 : fixed off-by-one error in ML_STRING macro (globals.c) 479 : 480 : ---------------------------------------------------------------------- 481 : Name: Matthias Blume (blume (at) tti - c (dot) org) 482 : mblume 1744 Date: 2004/12/23 18:00:00 CST 483 : Tag: blume-20041223-santa 484 : Description: 485 : 486 : Made ml-build script "smarter" (but only very little). 487 : 488 : ---------------------------------------------------------------------- 489 : Name: Matthias Blume (blume (at) tti - c (dot) org) 490 : mblume 1742 Date: 2004/12/21 15:05:00 CST 491 : Tag: blume-20041221-longlong 492 : Description: 493 : 494 : * Implemented access to signed and unsigned long long data in NLFFI. 495 : (The parameter-passing part of the picture has not complete. But 496 : data structure access seems to work.) 497 : 498 : * Fixed CM's incorrect assumption that the PPC is little-endian. 499 : (On the Mac, it is big-endian. And that's currently our only 500 : PPC platform.) 501 : 502 : ---------------------------------------------------------------------- 503 : Name: Matthias Blume (blume (at) tti - c (dot) org) 504 : mblume 1741 Date: 2004/12/21 12:50:00 CST 505 : Tag: blume-20041221-memory 506 : Description: 507 : 508 : Some cleanup in the $c/memory.cm library: separated some concerns by 509 : moving allocation code and memory access code each into their own 510 : files. 511 : 512 : ---------------------------------------------------------------------- 513 : allenleung 1740 Name: Allen Leung (leunga (at) reservoir (dot) com) 514 : Date: 2004/12/17 16:12:00 EST 515 : Tag: leunga-20041217-cygwin-smlnj-home 516 : Description: 517 : 518 : The Unix I/O library of SML/NJ on cygwin does not understand 519 : Windows style pathname, so problems arise when SMLNJ_HOME is set 520 : to a Windows style pathname. _run-sml now converts SMLNJ_HOME 521 : to a POSIX pathname on cygwin. 522 : 523 : ---------------------------------------------------------------------- 524 : mblume 1737 Name: Matthias Blume (blume (at) tti - c (dot) org) 525 : mblume 1736 Date: 2004/12/16 13:35:00 CST 526 : Tag: Release_110_52 527 : Description: 528 : 529 : Last-minute changes incorporated into 110.52. Release tag moved. 530 : 531 : The changes: 532 : - HashString.hashString' -> HashString.hashSubstring 533 : - bug fix in UnivariateStats 534 : 535 : ---------------------------------------------------------------------- 536 : mblume 1702 Name: Matthias Blume (blume (at) tti - c (dot) org) 537 : mblume 1733 Date: 2004/12/15 23:40:00 CST 538 : Tag: blume-20041215-hashSubstring 539 : Description: 540 : 541 : - HashString.hashString' -> HashString.hashSubstring 542 : - corresponding changes in atom.sml 543 : - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and 544 : added some comments 545 : 546 : ---------------------------------------------------------------------- 547 : Name: Matthias Blume (blume (at) tti - c (dot) org) 548 : mblume 1728 Date: 2004/12/15 15:30:00 CST 549 : mblume 1736 Tag: (Release_110_52) 550 : mblume 1728 Description: 551 : 552 : New working version (110.52). NEW BOOTFILES! 553 : 554 : ---------------------------------------------------------------------- 555 : Name: Matthias Blume (blume (at) tti - c (dot) org) 556 : mblume 1727 Date: 2004/12/15 12:45:00 CST 557 : Tag: blume-20041215-spaces 558 : Description: 559 : 560 : More on the space problem (this time for Win32). 561 : 562 : ---------------------------------------------------------------------- 563 : Name: Matthias Blume (blume (at) tti - c (dot) org) 564 : mblume 1725 Date: 2004/12/14 17:30:00 CST 565 : Tag: blume-20041214-spaces 566 : Description: 567 : 568 : Hacked some of the scripts (in particular: the installer) to cope with 569 : spaces in filenames a bit better. But beware: the current "solution" 570 : is likely still full of bugs and inherently incomplete. (We need to 571 : do away with those shell scripts for a comprehensive solution.) 572 : 573 : ---------------------------------------------------------------------- 574 : Name: Matthias Blume (blume (at) tti - c (dot) org) 575 : mblume 1724 Date: 2004/12/13 14:45:00 CST 576 : Tag: blume-20041213-ml-makedepend 577 : Description: 578 : 579 : Fixed bug in code for ml-makedepend. 580 : 581 : ---------------------------------------------------------------------- 582 : Name: Matthias Blume (blume (at) tti - c (dot) org) 583 : mblume 1720 Date: 2004/12/09 16:30:00 CST 584 : Tag: blume-20041209-statistics 585 : Description: 586 : 587 : Added two simple but potentially useful statistics modules to SML/NJ Library. 588 : (See CHANGES file there.) 589 : 590 : ---------------------------------------------------------------------- 591 : Name: Matthias Blume (blume (at) tti - c (dot) org) 592 : mblume 1718 Date: 2004/12/01 16:50:00 CST 593 : Tag: blume-20041201-atom 594 : Description: 595 : 596 : smlnj-lib: 597 : 598 : Added function HashString.hashString' for substrings. 599 : Hand-inlined CharVector.foldl into HashString (for speed). 600 : Modified implementation of structure Atom to avoid extracting 601 : strings from substrings unless necessary. 602 : (Also see CHANGES file for smlnj-lib.) 603 : 604 : ---------------------------------------------------------------------- 605 : Name: Matthias Blume (blume (at) tti - c (dot) org) 606 : mblume 1717 Date: 2004/11/24 22:15:00 CST 607 : Tag: blume-20041124-cml 608 : Description: 609 : 610 : Made sure CML compiles when Position = Int64. 611 : 612 : ---------------------------------------------------------------------- 613 : Name: Matthias Blume (blume (at) tti - c (dot) org) 614 : mblume 1715 Date: 2004/11/24 14:30:00 CST 615 : Tag: blume-20041124-position 616 : Description: 617 : 618 : The compiler can now be compiled in a mode that makes structure Position 619 : equal to Int64. The default, however, is unchanged (Position = Int31) 620 : for the time being. 621 : 622 : To enable 64-bit positions, use the following procedure: 623 : 624 : 1. Start sml 625 : 2. Autoload$smlnj/cmb.cm (if not already autoloaded) 626 : 3. Type 627 : #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1); 628 : 4. Run CMB.make() as usual. 629 : 630 : This is barely tested. The only test so far was a little SML program 631 : counting the number of characters in an 8-gigabyte file by 632 : reading it character-by-character. That test was successful. 633 : 634 : In support of 64-bit positions, a number of new functions have been 635 : added to the runtime system. 636 : 637 : ---------------------------------------------------------------------- 638 : Name: Matthias Blume (blume (at) tti - c (dot) org) 639 : mblume 1716 Date: 2004/11/23 14:45:00 CST 640 : Tag: blume-20041123-useFile 641 : mblume 1712 Description: 642 : 643 : Fixed a problem with unhelpful error messages related to problems with 644 : .cm- or .sml files that appear as part of the sml command line. 645 : 646 : ---------------------------------------------------------------------- 647 : Name: Matthias Blume (blume (at) tti - c (dot) org) 648 : mblume 1703 Date: 2004/11/18 15:40:00 CST 649 : Tag: Release_110_51 650 : Description: 651 : 652 : New working version (110.51). NEW BOOTFILES! 653 : 654 : ---------------------------------------------------------------------- 655 : Name: Matthias Blume (blume (at) tti - c (dot) org) 656 : mblume 1702 Date: 2004/11/18 15:35:00 CST 657 : Tag: 658 : Description: 659 : 660 : Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5 661 : Joemann). 662 : 663 : ---------------------------------------------------------------------- 664 : allenleung 1701 Name: Allen Leung (leunga (at) reservoir (dot) com) 665 : Date: 2004/11/17 16:05:21 EST 2004 666 : Tag: leunga-20041117-mlrisc-live-kill 667 : Description: 668 : 669 : Added support for MLTree constructs LIVE and KILL 670 : to all the architectures. 671 : 672 : ---------------------------------------------------------------------- 673 : mblume 1687 Name: Matthias Blume (blume (at) tti - c (dot) org) 674 : mblume 1689 Date: 2004/11/13 00:20:00 CST 675 : Tag: blume-20041113-versiontool 676 : Description: 677 : 678 : - Stripped down the versiontool: It now only handles the version number. 679 : The date string is generated at bootstrap time (during makeml). 680 : 681 : - In a previous commit, fixed a minor issue with how polyequal is being 682 : translated. In particular, the code now "looks through" abstractions. 683 : This results in slightly fewer polyEqual warnings and hopefully slightly 684 : more efficient code. Important examples for where this matters are 685 : the new int64 and word64 types. 686 : 687 : ---------------------------------------------------------------------- 688 : Name: Matthias Blume (blume (at) tti - c (dot) org) 689 : mblume 1687 Date: 2004/11/12 00:30:00 CST 690 : Tag: blume-20041112-int64 691 : Description: 692 : 693 : Structure Int64 fully hooked in. (The implementation is not very 694 : efficient, though.) 695 : 696 : ---------------------------------------------------------------------- 697 : Name: Matthias Blume (blume (at) tti - c (dot) org) 698 : mblume 1686 Date: 2004/11/11 17:30:00 CST 699 : Tag: blume-20041111-more64 700 : Description: 701 : 702 : All the pieces of Word64 are now there, with the exception of the 703 : conversions from and to LargeWord. (Eventually these need to be identities, 704 : but for the time being they don't even make sense because LargeWord is 705 : 32-bit wide.) 706 : 707 : Also started to add similar support for Int64, but major pieces of that 708 : are still missing. 709 : 710 : ---------------------------------------------------------------------- 711 : mblume 1668 Name: Matthias Blume (blume (at) tti - c (dot) org) 712 : mblume 1684 Date: 2004/11/11 00:15:00 CST 713 : Tag: blume-20041111-word64 714 : Description: 715 : 716 : Structure Word64 is now (almost) complete, word literals and patterns 717 : seem to work. There are a few odd pieces missing. In particular, 718 : I didn't do the {from,to}LargeWord parts because LargeWord is still Word32 719 : at the moment. 720 : 721 : Making Word64 official would mean that LargeWord becomes Word64. But 722 : this requires extreme care because most word-word conversions have to 723 : go through LargeWord, so making a mistake means loss of efficiency or 724 : worse. Eventually there will be a solution similar to (but actually 725 : simpler than) what I did with IntInf. 726 : 727 : ---------------------------------------------------------------------- 728 : Name: Matthias Blume (blume (at) tti - c (dot) org) 729 : mblume 1683 Date: 2004/11/10 18:12:00 CST 730 : Tag: blume-20041110-64bit 731 : Description: 732 : 733 : More 64-bit hacking (but still not even half-way there yet). 734 : Also, some assorted improvements to the handling of 8-bit words. 735 : 736 : ---------------------------------------------------------------------- 737 : Name: Matthias Blume (blume (at) tti - c (dot) org) 738 : mblume 1682 Date: 2004/11/09 17:50:00 CST 739 : mblume 1683 Tag: 740 : mblume 1682 Description: 741 : 742 : Started adding some infrastructure for supporting 64-bit int- and 743 : word-types. (Still in its very early stages.) 744 : 745 : ---------------------------------------------------------------------- 746 : Name: Matthias Blume (blume (at) tti - c (dot) org) 747 : mblume 1672 Date: 2004/10/28 10:45:00 CDT 748 : Tag: Release_110_50 749 : Description: 750 : 751 : New working version (110.50). NEW BOOTFILES! 752 : 753 : ===================== 754 : 755 : Also: 756 : 757 : - Changend config/srcarchiveurl from a file just 758 : containing the URL string into a file containing 759 : shell script code. The code has access to the $VERSION variable. 760 : - Made corresponding changes to config/install.sh and config/unpack. 761 : - Default contents of config/srcarchiveurl uses$VERSION and 762 : normally does not have to be edited to reflect a version change. 763 : 764 : (As a result, a version change can be done by just editing 765 : config/version, the rest is now automatic.) 766 : 767 : ---------------------------------------------------------------------- 768 : Name: Matthias Blume (blume (at) tti - c (dot) org) 769 : mblume 1669 Date: 2004/10/27 17:50:00 CDT 770 : Tag: blume-20041027-btrace-msg 771 : Description: 772 : 773 : BackTrace.monitor now also reports the source of the exception that 774 : triggered the trace. 775 : 776 : ---------------------------------------------------------------------- 777 : Name: Matthias Blume (blume (at) tti - c (dot) org) 778 : mblume 1668 Date: 2004/10/27 17:20:00 CDT 779 : Tag: blume-20041027-x86-c-calls 780 : Description: 781 : 782 : This is the HISTORY entry for two earlier commits, both concerning 783 : the x86 c-calls code in MLRISC: 784 : 785 : - added a missing LOAD in the code that deals with struct arguments 786 : - made sure the caller does not add the wrong number of bytes to the 787 : stack pointer after a call of a function returning a struct 788 : (the callee already pops the implicit argument which points to 789 : the space reserved for the result) 790 : 791 : ---------------------------------------------------------------------- 792 : allenleung 1662 Name: Allen Leung (leunga (at) reservoir (dot) com) 793 : Date: 2004/10/24 14:00:00 EST 794 : Tag: leunga-20041024-x86-gas-fucomip 795 : Description: 796 : 797 : John discovered a bug in the syntax of fucomip. 798 : The opcodes FU?COMIP? have been changed to 799 : 800 : fu?comip? %st(i), %st 801 : 802 : ---------------------------------------------------------------------- 803 : mblume 1622 Name: Matthias Blume (blume (at) tti - c (dot) org) 804 : mblume 1656 Date: 2004/10/20 15:06:00 CDT 805 : Tag: blume-20041020-standalone-backtrace 806 : Description: 807 : 808 : Added a mechanism for getting back-trace information from standalone 809 : programs. Here is how it works: 810 : 811 : 1. The part of the program from which you want to get backtrace 812 : information (usually the whole program) should be wrapped with 813 : BackTrace.monitor. This is a (unit->'a)->'a function, and your 814 : main program could be modified from something like 815 : 816 : fun main (pgm, args) = ... 817 : 818 : to 819 : 820 : fun main (pgm, args) = BackTrace.monitor (fn () => ...) 821 : 822 : 2. To be able to access BackTrace.monitor, you have to add 823 : library $smlnj-tdp/plugins.cm to the .cm file that contains your 824 : main function. 825 : 826 : 3. Remove all compiled code (i.e., all the .cm/ subdirectories that 827 : CM might have created in the past for your project). 828 : 829 : 4. Build the system using this command line: 830 : 831 : ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \ 832 : myprog.cm MyProg.main myprog 833 : 834 : instead of the usual 835 : 836 : ml-build myprog.cm MyProg.main myprog 837 : 838 : I changed a library name: 839 : 840 : $/trace-debug-profile.cm -->$smlnj-tdp/plugins.cm 841 : 842 : New libraries: 843 : 844 : $smlnj-tdp/back-trace.cm 845 : -- when loaded causes the back-trace plugin to be installed 846 :$smlnj-tdp/coverage.cm 847 : -- when loaded causes the coverage plugin to be installed 848 : 849 : ---------------------------------------------------------------------- 850 : Name: Matthias Blume (blume (at) tti - c (dot) org) 851 : mblume 1655 Date: 2004/10/18 16:45:00 CDT 852 : Tag: blume-20041018-groupowner 853 : Description: 854 : 855 : Added an "obsolete" warning for the "group owner" syntax to CM's parser. 856 : 857 : Eliminated group owner specs from .cm files throughout the source tree. 858 : 859 : ---------------------------------------------------------------------- 860 : Name: Matthias Blume (blume (at) tti - c (dot) org) 861 : mblume 1653 Date: 2004/10/15 15:45:00 CDT 862 : Tag: blume-20041015-coverage 863 : Description: 864 : 865 : * Test coverage tool added! 866 : * Further reorganization of tracing-, debugging-, and profiling support: 867 : 868 : - moved original BTImp -- now called BackTrace -- into a separate 869 : library called $/trace-debug-profile.cm 870 : - eliminated all mentions of BTrace from SMLofNJ.Internals 871 : - only the instrumentation mechanism is now left in the compiler proper 872 : - BackTrace module is a plugin which is NOT plugged in by default 873 : - Coverage module is another such plugin 874 : 875 : To get the benefits of any of these plugin modules, the code in 876 : question must be compiled with tdp instrumentation turned on. This 877 : can be done by setting SMLofNJ.Internals.TDP.mode to true. 878 : (The ref cell is also controlled via the -Ctdp.instrument=... switch.) 879 : 880 : Plugins are selected at link time. (Pre-compiled instrumented code 881 : can be re-loaded with different plugins in effect.) When an 882 : instrumented module is linked, whatever plugins are at that time 883 : enabled will come into effect for that module. 884 : 885 : To enable the back-trace plugin, load library$/trace-debug-profile.cm 886 : and invoke BackTrace.install() (e.g., from the interactive prompt). 887 : To enable the coverage plugin, load the same library and invoke 888 : Coverage.install(). 889 : 890 : Back-traces are generated automatically on uncaught exceptions and 891 : when the code in question explicitly invokes BackTrace.trigger(). 892 : 893 : Coverage (and execution frequency-) information must be queried 894 : explicitly by calling Coverage.not_covered and Coverage.hot_spots. 895 : 896 : ---------------------------------------------------------------------- 897 : Name: Matthias Blume (blume (at) tti - c (dot) org) 898 : mblume 1652 Date: 2004/10/14 17:40:00 CDT 899 : Tag: blume-20041014-tdp-core 900 : Description: 901 : 902 : Snapshot of a significant overhaul of how the trace/debug/profile support 903 : is hooked into the system (specifically: Core and SMLofNJ.Internals). 904 : 905 : ---------------------------------------------------------------------- 906 : Name: Matthias Blume (blume (at) tti - c (dot) org) 907 : mblume 1650 Date: 2004/10/13 16:34:00 CDT 908 : Tag: blume-20041013-tdp 909 : Description: 910 : 911 : Some rationalization of names: 912 : 913 : structure BTrace -> structure TDPInstrument 914 : etc. 915 : 916 : This is is preparation of using the original back-trace 917 : instrumentation for other purposes. "TDP" stands for 918 : Trace/Debug/Profile. 919 : 920 : The control flag controlling whether instrumentation is on or off is now 921 : registered under a different name, so instead of running sml as 922 : 923 : sml -Cinstrument.btrace-mode=true 924 : 925 : one has to say 926 : 927 : sml -Ctdp.instrument=true 928 : 929 : ---------------------------------------------------------------------- 930 : Name: Matthias Blume (blume (at) tti - c (dot) org) 931 : mblume 1645 Date: 2004/10/11 16:37:00 CDT 932 : Tag: blume-20041011-regions 933 : Description: 934 : 935 : Made some minor modifications to elabcore.sml to have source regions 936 : be propagated more tightly -- resulting in better (i.e., smaller) 937 : regions being reported in error- and debug messages. 938 : 939 : ---------------------------------------------------------------------- 940 : Name: Matthias Blume (blume (at) tti - c (dot) org) 941 : mblume 1644 Date: 2004/10/08 22:50:00 CDT 942 : Tag: blume-20041008-cmkw 943 : Description: 944 : 945 : Fixed handling of keywords in .cm files: After seeing "is" the lexer 946 : treats subsequent occurrences of "group", "library", "source", "is", 947 : "*", and "-" as ordinary identifiers rather than keywords. 948 : 949 : Most seriously, this fixes a problem with CM's "shell" tool. The tool 950 : is supposed to accept a tool argument called "source", but this did 951 : not work because of the clash with the keyword. 952 : 953 : ---------------------------------------------------------------------- 954 : Name: Matthias Blume (blume (at) tti - c (dot) org) 955 : mblume 1642 Date: 2004/10/07 16:00:00 CDT 956 : Tag: blume-20041007-cleanup 957 : Description: 958 : 959 : Assorted cleanup work: 960 : 961 : - got rid of intstrmap in favor of using the library's 962 : hash table implementation 963 : - threw out most of the pathnames stuff, as it was not used anyway 964 : - simplified tokentable implementation 965 : - fixed some minor spelling errors 966 : 967 : ---------------------------------------------------------------------- 968 : Name: Matthias Blume (blume (at) tti - c (dot) org) 969 : mblume 1641 Date: 2004/10/06 15:15:15 CDT 970 : Tag: blume-20041006-handler 971 : Description: 972 : 973 : Cleaned up the absyn to reflect the invariant that HANDLE always 974 : carries a FNexp as part of the type definition. This eliminates some 975 : superfluous sanity checks at runtime down the road. 976 : 977 : Some minor cleanup of the btrace code. 978 : 979 : ---------------------------------------------------------------------- 980 : Name: Matthias Blume (blume (at) tti - c (dot) org) 981 : mblume 1640 Date: 2004/10/01 10:20:30 CDT 982 : Tag: blume-20041001-slave 983 : Description: 984 : 985 : Added hack to make slave mode work in the presence of the version 986 : tool. (Still, since the master does two passes over the code for 987 : CMB.make, the release number gets bumped twice when slaves are 988 : attached. I don't know if this is worth fixing...) 989 : 990 : ---------------------------------------------------------------------- 991 : Name: Matthias Blume (blume (at) tti - c (dot) org) 992 : mblume 1639 Date: 2004/09/30 10:55:00 CDT 993 : Tag: blume-20040930-version 994 : Description: 995 : 996 : * Moved the "version" magic into its own little library under 997 : mblume 1672 src/system/smlnj/internal. This avoids expensive reconstruction of 998 : a stable src/compiler/core.cm. 999 : mblume 1639 1000 : mblume 1672 * At the same time, structure CompilerVersion is now known as 1001 : structure SMLNJVersion. 1002 : mblume 1639 1003 : * Arranged for the version tool to NOT kick in when rebuilding the system 1004 : (makeml -rebuild, fixpt). Otherwise one would never reach a fixpoint. 1005 : Also, loading the versiontool does not work when rebuilding the system 1006 : because CM is not properly initialized at that time. 1007 : 1008 : ---------------------------------------------------------------------- 1009 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1010 : mblume 1638 Date: 2004/09/29 14:00:00 CDT 1011 : Tag: blume-20040929-autoversion 1012 : Description: 1013 : 1014 : Implemented some CM magic to have 1015 : file src/compiler/TopLevel/main/version.sml 1016 : generated automagically. 1017 : The version is taken from two files: config/version and config/release. 1018 : The first is expected to contain a two-part version number such as 110.49. 1019 : The second should contain a single number, but it may be missing. 1020 : 1021 : If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the 1022 : time the version tool is loaded (which is the first time you say CMB.make), 1023 : then the tool will increment the value stored in config/release every 1024 : time CMB.make is invoked. 1025 : 1026 : The binfile format is now insensitive to anything beyond the first 1027 : two components of a version number, so bumping the release does not render 1028 : binfiles incompatible. Auto-bumping can be used to keep track of versions 1029 : during development without invalidating existing binfiles. 1030 : 1031 : In any case, every CMB.make updates the date information in version.sml. 1032 : (This is the date that is printed in the banner.) 1033 : 1034 : ---------------------------------------------------------------------- 1035 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1036 : mblume 1634 Date: 2004/09/28 10:53:00 CDT 1037 : Tag: blume-20040928-controls 1038 : Description: 1039 : 1040 : Some cleanup of the controls code. 1041 : 1042 : ---------------------------------------------------------------------- 1043 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1044 : mblume 1633 Date: 2004/09/27 22:08:00 CDT 1045 : Tag: blume-20040927-controls 1046 : Description: 1047 : 1048 : Added two pieces of functionality to the Controls interface: 1049 : 1050 : 1. val save'restore: 'a control -> unit -> unit 1051 : 1052 : grabs the current value of the control in stage 1 and restores it 1053 : in stage 2. 1054 : 1055 : 2. val set' : 'a control * 'a -> unit -> unit 1056 : 1057 : stores the given value into the control in stage 2 (i.e., delayed) 1058 : but does all error checking in stage 1. 1059 : (This is for string controls that need to do parse their argument -- 1060 : something that might fail. In some cases, notably in CM, one 1061 : already knows the intended argument but wants to delay the actual 1062 : assignment until a time when error recovery would be more difficult.) 1063 : 1064 : Changed the handling of controls in tool arguments to classes "sml" and 1065 : "lazysml": 1066 : - use Controls.save'restore as a more robust way of restoring the 1067 : old value (in particular: without having to re-parse the string) 1068 : - use controls to handle the "overload" keyword in the init group 1069 : (I believe this change actually fixes a long-standing obscure bug.) 1070 : 1071 : ---------------------------------------------------------------------- 1072 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1073 : mblume 1632 Date: 2004/09/27 17:00:00 CDT 1074 : Tag: blume-20040927-lazysml 1075 : Description: 1076 : 1077 : Added a new tool class called "lazysml" to CM's tool chest. The only 1078 : difference to "sml" is that compilation is done with Control.lazysml 1079 : set to true. A source of class "lazysml" is automatically recognized 1080 : by a file name suffix of ".lml". 1081 : 1082 : In addition to the above feature, the original class "sml" now also 1083 : supports a tool argument "lazy" which has the same effect. As a 1084 : result, the following three lines are equivalent: 1085 : 1086 : foo.sml : lazysml 1087 : foo.sml : sml (lazy) 1088 : foo.sml (lazy) 1089 : 1090 : The setting goes into effect both during parsing and during 1091 : compilation. The original setting is restored right after parsing and 1092 : after compilation, respectively. 1093 : 1094 : In addition to all the above, there is also a general mechanism to set 1095 : ANY of the "controls" that are available at the command line via 1096 : "-C..." on a per-sml-file basis. The same rules that apply for "lazy" 1097 : apply as well. (In fact, "lazy" is implemented as a special case of 1098 : the general mechanism.) 1099 : 1100 : The .cm file syntax uses a new keyword tool argument called "with". 1101 : There are several ways of indicating the desired settings: 1102 : 1103 : foo.sml (with:parser.quotations=true) 1104 : foo.sml (with:(name:parser.quotations value:true)) 1105 : foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...)) 1106 : foo.sml (with:(name1=value1 name2=value2 ...)) 1107 : foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...)) 1108 : 1109 : etc. 1110 : 1111 : Another possible abbreviation is to leave out the =v or value:v part 1112 : if the name refers to a boolean control (in which case the value is 1113 : taken to be true). Thus, one could get lazy sml also by saying: 1114 : 1115 : foo.sml (with:parser.lazy-keyword=true) 1116 : foo.sml (with:parser.lazy-keyword) 1117 : foo.sml (with:(name:parser.lazy-keyword value:true)) 1118 : foo.sml (with:(name:parser.lazy-keyword)) 1119 : 1120 : ---------------------------------------------------------------------- 1121 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1122 : mblume 1631 Date: 2004/09/24 16:22:00 CDT 1123 : Tag: blume-20040924-ppc-long-branch 1124 : Description: 1125 : 1126 : Turned message about "emiting long form of branch" off by default. 1127 : Added a control flag to turn it back on when desired. 1128 : 1129 : ---------------------------------------------------------------------- 1130 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1131 : mblume 1630 Date: 2004/09/24 16:05:00 CDT 1132 : Tag: blume-20040924-rounding 1133 : Description: 1134 : 1135 : Applied patch for setting rounding modes under Mac OS X. Thanks to 1136 : Melissa O'Neill for providing the code! 1137 : 1138 : ---------------------------------------------------------------------- 1139 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1140 : mblume 1629 Date: 2004/09/23 17:30:00 CDT 1141 : Tag: blume-20040923-envvars 1142 : Description: 1143 : 1144 : 1. Changed definition of type ControlRegistry.registry_tree to 1145 : include control_info (i.e., the name of the controlling environment 1146 : variable). 1147 : 1148 : 2. Added command-line flags -e and -E to print the names of environment 1149 : variables that can be used to control internal settings. 1150 : (This uses the new API mentioned in 1.) 1151 : 1152 : ---------------------------------------------------------------------- 1153 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1154 : mblume 1622 Date: 2004/09/13 16:50:00 CDT 1155 : Tag: Release_110_49 1156 : Description: 1157 : 1158 : New working version (110.49). NEW BOOTFILES! 1159 : 1160 : ---------------------------------------------------------------------- 1161 : mblume 1621 Name: Matthias Blume 1162 : Date: 2004/09/13 16:20:00 CDT 1163 : Tag: blume-20040913-config-mlrisc 1164 : Description: 1165 : 1166 : Put target "mlrisc" back into the default list. 1167 : (There is no harm in having it, and some users have expressed their 1168 : wish to have "mlrisc" included by default.) 1169 : 1170 : ---------------------------------------------------------------------- 1171 : jhr 1620 Name: John Reppy 1172 : Date: 2004/09/13 1173 : Tag: jhr-20040913-signals 1174 : Description: 1175 : 1176 : Fixed the signal masking code to properly nest mask/unmask operations 1177 : on a per-signal basis. 1178 : 1179 : ---------------------------------------------------------------------- 1180 : mblume 1619 Name: Matthias Blume (blume (at) tti - c (dot) org) 1181 : Date: 2004/09/08 13:20:00 CDT 1182 : Tag: blume-20040908-heap-magic 1183 : Description: 1184 : 1185 : Bumped the heap macig number to 0x09082004 to account for the changed 1186 : layout of the ML frame under MacOS X. 1187 : 1188 : ---------------------------------------------------------------------- 1189 : allenleung 1618 Name: Allen Leung (leunga (at) reservoir (dot) com) 1190 : Date: 2004/09/03 11:26:00 EST 1191 : Tag: leunga-20040903-cygwin-install 1192 : Description: 1193 : 1194 : Added a patch to _arch-n-opsys to enable the Cygwin runtime. 1195 : The Cygwin runtime is turned on by setting the environment 1196 : variable SMLNJ_CYGWIN_RUNTIME to 1. 1197 : 1198 : ---------------------------------------------------------------------- 1199 : mblume 1615 Name: Matthias Blume (blume (at) tti - c (dot) org) 1200 : mblume 1617 Date: 2004/08/31 17:15:00 CDT 1201 : Tag: blume-20040831-core 1202 : Description: 1203 : 1204 : Added some exports to src/compiler/core.cm upon request by J. Joemann. 1205 : 1206 : ---------------------------------------------------------------------- 1207 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1208 : mblume 1616 Date: 2004/08/30 17:55:00 CDT 1209 : Tag: blume-20040830-installer 1210 : Description: 1211 : 1212 : Upon request by Johannes Joemann: 1213 : 1214 : - improved ML code of installer to fall back to coping when renaming 1215 : fails (i.e., when source and target are on different file systems); 1216 : the code compiles but has yet to be tested in anger 1217 : - removed mlrisc from list of default targets (config/targets) 1218 : 1219 : ---------------------------------------------------------------------- 1220 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1221 : mblume 1615 Date: 2004/08/27 17:20:00 CDT 1222 : Tag: blume-20040827-ptreql 1223 : Description: 1224 : 1225 : Added ptreql primop to structure InlineT (upon request from Larry 1226 : Paulson). 1227 : 1228 : ---------------------------------------------------------------------- 1229 : allenleung 1613 Name: Allen Leung (leunga (at) reservoir (dot) com) 1230 : allenleung 1614 Date: 2004/08/15 21:21:00 EST 1231 : Tag: leunga-110_48-udgraph 1232 : Description: 1233 : 1234 : Another bug fix from Carl Hauser: 1235 : 1236 : diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml 1237 : > 48c48 1238 : > < | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else 1239 : > e::L) 1240 : > --- 1241 : > > | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L) 1242 : > Without this, any deletion of an edge in an undirected graph does severe 1243 : > violence to the graph. 1244 : 1245 : ---------------------------------------------------------------------- 1246 : Name: Allen Leung (leunga (at) reservoir (dot) com) 1247 : allenleung 1613 Date: 2004/08/10 23:35:00 EST 1248 : Tag: leunga-110_48-ppc 1249 : Description: 1250 : 1251 : The IBM/MacOS syntax switch on PPC was incorrectly swapped. 1252 : 1253 : ---------------------------------------------------------------------- 1254 : mblume 1602 Name: Matthias Blume (blume (at) tti - c (dot) org) 1255 : mblume 1615 Date: 2004/08/10 12:00:00 CDT 1256 : mblume 1602 Tag: Release_110_48 1257 : Description: 1258 : 1259 : New working version (110.48). NEW BOOTFILES! 1260 : 1261 : ---------------------------------------------------------------------- 1262 : allenleung 1599 Name: Allen Leung (leunga (at) reservoir (dot) com) 1263 : Date: 2004/08/09 12:21:00 EST 1264 : Tag: leunga-110_47-dijsktra 1265 : Description: 1266 : 1267 : Bug fix from Carl Hauser: 1268 : 1269 : single_source_shortest_paths in dijkstra.sml was observed to get wrong 1270 : answers (by comparing to single_source_shortest_paths in bellman-ford.sml). 1271 : 1272 : The problem is that following the expression A.update(dist,s,Num.zero) 1273 : it is necessary to update the priority queue using Q.decreaseWeight(Q,s). 1274 : 1275 : ---------------------------------------------------------------------- 1276 : mblume 1595 Name: Matthias Blume (blume (at) tti - c (dot) org) 1277 : Date: 2004/08/06 18:10:00 CDT 1278 : Tag: blume-20040806-cmdline 1279 : Description: 1280 : 1281 : Fiddled with handling of command-line options: 1282 : 1283 : * sml now quits after processing the command line 1284 : if -H, -S, -h, or -s appears as the last 1285 : command-line argument 1286 : * a new option -q terminates the session when encountered on 1287 : the command line; subsequent arguments will be ignored 1288 : * bug fixes: short (erroneous) arguments are no longer ignored 1289 : completely 1290 : 1291 : ---------------------------------------------------------------------- 1292 : allenleung 1593 Name: Allen Leung (leunga (at) reservoir (dot) com) 1293 : Date: 2004/08/04 18:17:00 EST 1294 : Tag: leunga-110_47-ppc-ibm-asm 1295 : Description: 1296 : 1297 : - Added minimal IBM assembly syntax support for PowerPC. 1298 : 1299 : - Cygwin: manually changed the file cygwin.def. Some exported symbols have 1300 : been altered in the runtime. We need an automatic way to keep the file 1301 : in sync. 1302 : 1303 : ---------------------------------------------------------------------- 1304 : mblume 1548 Name: Matthias Blume (blume (at) tti - c (dot) org) 1305 : mblume 1581 Date: 2004/08/04 14:00:00 CDT 1306 : Tag: Release_110_47 1307 : Description: 1308 : 1309 : New working version (110.47). NEW BOOTFILES! 1310 : 1311 : ---------------------------------------------------------------------- 1312 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1313 : mblume 1580 Date: 2004/08/03 14:25:00 CDT 1314 : Tag: blume-20040803-callingconv 1315 : Description: 1316 : 1317 : Added low-level support for choosing C calling conventions by 1318 : twiddling the type of rawccall. (See 1319 : src/compiler/Semant/types/cproto.sml for details.) 1320 : 1321 : ---------------------------------------------------------------------- 1322 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1323 : mblume 1579 Date: 2004/08/02 15:55:00 CDT 1324 : Tag: blume-20040802-backout 1325 : Description: 1326 : 1327 : Backed out of change to win32-filesys.c. The earlier patch to 1328 : get_file_time caused CM to produce files with the wrong time stamp. 1329 : 1330 : ---------------------------------------------------------------------- 1331 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1332 : mblume 1573 Date: 2004/08/02 14:45:00 CDT 1333 : Tag: blume-20040802-nlffi-win32 1334 : Description: 1335 : 1336 : Added NLFFI support for Win32, adapted from a patch provided by David 1337 : Hansel. This is currently completely untested. Also, the issue 1338 : concerning stdcall vs. ccall is still unresolved. 1339 : 1340 : ---------------------------------------------------------------------- 1341 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1342 : mblume 1572 Date: 2004/07/30 17:55:00 CDT 1343 : Tag: blume-20040730-various 1344 : Description: 1345 : 1346 : Gearing up towards 110.47... 1347 : 1348 : - various minor bugfixes to ml-nlffigen 1349 : - a beginning of a manual for nlffi 1350 : 1351 : - eliminated 'export name=value' in config/install.sh as this does 1352 : not work with certain versions of /bin/sh 1353 : (Thanks to David King at Motorola for catching this.) 1354 : 1355 : - several bugfixes provided or suggested by David Hansel at Reactive Systems: 1356 : - added a test for tm==NULL to gmtime.c and localtime.c 1357 : - applied patch for incorrect GetFileTime under win32 1358 : - toSeconds -> toMilliseconds in Win32/win32-process.sml 1359 : 1360 : ---------------------------------------------------------------------- 1361 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1362 : mblume 1557 Date: 2004/07/21 18:20:00 CDT 1363 : Tag: blume-20040721-nlffigen 1364 : Description: 1365 : 1366 : - Fixed minor issue in ml-nlffigen: Now generate structure T_foo 1367 : for a typedef to an incomplete type, but leave out the "typ" member. 1368 : (This is just for consistency.) 1369 : - Started to produce what is supposed to become better (i.e., comprehensive) 1370 : documentation of what ml-nlffigen does and produces. 1371 : 1372 : ---------------------------------------------------------------------- 1373 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1374 : mblume 1548 Date: 2004/07/14 16:25:00 CDT 1375 : Tag: blume-20040714-union 1376 : Description: 1377 : 1378 : Added C_UNION to c-calls/c-types.sml and updated the machinery 1379 : (ml-nlffigen, cproto.sml) that conveys C function interface 1380 : information to the code generator. 1381 : 1382 : However, the actual architecture-specific implementation of function 1383 : arguments and results that are C unions is still not implemented. 1384 : 1385 : ---------------------------------------------------------------------- 1386 : allenleung 1539 Name: Allen Leung (leunga (at) reservoir (dot) com) 1387 : allenleung 1546 Date: 2004/07/14 14:38:00 EST 1388 : Tag: leunga-110_46_1-ppc-lwzu 1389 : Description: 1390 : 1391 : Added these instructions to the PowerPC architecture: 1392 : LBZU(X), LHZU(X), LWZU(X), 1393 : STWU(X), STFDU, STFSU 1394 : 1395 : etc... 1396 : 1397 : Note: I haven't added their instruction encoding into the description. 1398 : 1399 : ---------------------------------------------------------------------- 1400 : Name: Allen Leung (leunga (at) reservoir (dot) com) 1401 : allenleung 1539 Date: 2004/07/13 15:04:00 EST 1402 : Tag: leunga-110_46_1-ppc-lwarx 1403 : Description: 1404 : 1405 : Added the two instructions LWARX and STWCX to the PowerPC 1406 : instruction set. 1407 : 1408 : A (untested) rewrite of loop-structure.sml. The old version 1409 : is completely broken. 1410 : 1411 : ---------------------------------------------------------------------- 1412 : mblume 1479 Name: Matthias Blume (blume (at) tti - c (dot) org) 1413 : mblume 1537 Date: 2004/07/13 13:50:00 CDT 1414 : Tag: blume-20040713-nlffi 1415 : Description: 1416 : 1417 : - use paramAlloc to report c-calls with too many arguments 1418 : (for PPC version where parameter area is pre-allocated) 1419 : - added ccall_maxargspace to machspec (to implement the above) 1420 : - made "make" commend in CM's "make" tool configurable 1421 : - added option (default: on) for passing the name of the SML/NJ's "bin" 1422 : directory to "make"; the call looks like this: 1423 : 1424 : make SMLNJ_BINDIR= 1425 : 1426 : This can be used by the Makefile to, e.g., pick the "right" version 1427 : of ml-nlffigen. 1428 : - minor code tweaks 1429 : 1430 : ---------------------------------------------------------------------- 1431 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1432 : mblume 1532 Date: 2004/07/12 22:50:00 CDT 1433 : Tag: blume-110_46_1-macosx-nlffi 1434 : Description: 1435 : 1436 : NLFFI under Mac OS X now working (sort of). This is largely untested, 1437 : though. 1438 : 1439 : Note: 1. You have to make a new, clean build of the runtime system. 1440 : 2. There are new BOOTFILES, you have to use them! 1441 : (Doing the bootstrap process yourself would be *very* painful! 1442 : If you absolutely have to do it, build the system under 1443 : a different architecture and then cross-compile.) 1444 : 1445 : Version bumped to 110.46.1 to account for runtime data format changes. 1446 : 1447 : ---------------------------------------------------------------------- 1448 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1449 : mblume 1515 Date: 2004/06/18 14:30:00 CDT 1450 : Tag: blume-20040618-unix 1451 : Description: 1452 : 1453 : Changed the implementation of structure Unix so that the same stream 1454 : is returned every time one of the {text,bin}{In,Out}streamOf functions 1455 : is invoked on the same proc. This is not what the spec currently 1456 : says -- although IMO it arguably should. (See discussion below.) 1457 : 1458 : ---------------------------------------------------------------------- 1459 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1460 : mblume 1507 Date: 2004/06/17 18:15:00 CDT 1461 : Tag: Release_110_46 1462 : Description: 1463 : 1464 : New working version (110.46). NEW BOOTFILES! 1465 : 1466 : ---------------------------------------------------------------------- 1467 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1468 : mblume 1506 Date: 2004/06/17 17:20:00 CDT 1469 : Tag: blume-20040617-timer-unix 1470 : Description: 1471 : 1472 : Changed the interface of structures Timer and Unix to match the most 1473 : recent Basis spec. 1474 : 1475 : In the case of Unix there still seems to be an open/weird issue: 1476 : 1477 : The {text,bin}{In,Out}streamOf functions are supposed to create 1478 : fresh streams whenever they are called -- as opposed to have them 1479 : return the same stream every time. This design is supposed to 1480 : prevent space leaks caused by proc values hanging on to streams. 1481 : 1482 : The reap function, on the other hand, is supposed to close the 1483 : streams. This cannot be done without having a handle on the 1484 : stream in proc after all... 1485 : 1486 : I took the liberty to implement the following stopgap solution: 1487 : 1488 : The proc value hangs on to the most recently created stream(s). 1489 : Reap closes those. If either or both of the two streams hadn't 1490 : been created at all yet, then reap will close the corresponding 1491 : file descriptors directly. 1492 : 1493 : PS: I don't understand the original space leak argument anymore. If 1494 : a proc hangs on to the imperative stream, then I/O operations on those 1495 : will advance the state of the cached stream and avoid the space leak. 1496 : 1497 : ---------------------------------------------------------------------- 1498 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1499 : mblume 1500 Date: 2004/05/28 16:45:00 CDT 1500 : Tag: blume-20040528-basis 1501 : Description: 1502 : 1503 : Added signature PACK_REAL and exported functor PrimIO. 1504 : 1505 : ---------------------------------------------------------------------- 1506 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1507 : mblume 1498 Date: 2004/05/25 16:00:00 CDT 1508 : Tag: blume-20040525-group-owner 1509 : Description: 1510 : 1511 : CM now ignores (but still accepts) the "owner" information in group 1512 : descriptions. The owner of a group is its next enclosing 1513 : library. Each group must have a unique owner. (There is a virtual 1514 : mblume 1505 "toplevel" library that owns groups which are not nested within a real 1515 : mblume 1498 library.) Previously, each group had to explicitly declare its owner, 1516 : and CM would check that such a declaration is correct. The new scheme 1517 : is to have CM check that for each group there is precisely one owning 1518 : library. 1519 : 1520 : The advantage of the new scheme is that the programmer no longer needs 1521 : to maintain the somewhat annoying owner information. The downside is 1522 : that CM cannot enforce the ownership rule across multiple runs of 1523 : CM.make. Fortunately, enclosing the same group in two different 1524 : libraries A and B which are not part of the same program does not 1525 : cause real problems. 1526 : 1527 : ---------------------------------------------------------------------- 1528 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1529 : mblume 1496 Date: 2004/05/20 16:00:00 CDT 1530 : Tag: blume-20040520-win32 1531 : Description: 1532 : 1533 : Made the win32 version work again. (Strangely, a misplaced comma had 1534 : slipped into win32-process.c which prevented the runtime from being 1535 : compiled correctly.) 1536 : 1537 : Also, included a minor addition to ml-build.bat analogous to what was 1538 : done in blume-20040519-ml-build. 1539 : 1540 : ---------------------------------------------------------------------- 1541 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1542 : mblume 1494 Date: 2004/05/19 22:10:00 CDT 1543 : Tag: blume-20040519-ml-build 1544 : Description: 1545 : 1546 : Arranged for ml-build to clean up after itself a little bit better. 1547 : The script generates a temporary SML source file and compiles it using 1548 : CM, so CM generates metadata (GUID, SKEL, objectfile) for it. It now 1549 : gets rid of those at the end, so they don't accumulate under .cm. 1550 : 1551 : This required a minor change to install.sh because the name of the 1552 : metadata directory (default: .cm) is actually configurable at 1553 : installation time. 1554 : 1555 : ---------------------------------------------------------------------- 1556 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1557 : mblume 1491 Date: 2004/05/18 15:50:00 CDT 1558 : Tag: blume-20040518-mkreader 1559 : Description: 1560 : 1561 : Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective 1562 : implementations from internal modules PosixBinPrimIO and PosixTextPrimIO. 1563 : 1564 : ---------------------------------------------------------------------- 1565 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1566 : mblume 1489 Date: 2004/05/11 14:35:00 CDT 1567 : Tag: blume-20040511-win32sock 1568 : Description: 1569 : 1570 : Added previously missing support for many socket-related functions 1571 : under win32. Thanks to David Hansel 1572 : for the voluminous patch! 1573 : 1574 : (I have not tested this patch under win32 yet.) 1575 : 1576 : mblume 1490 Here is David's e-mail: 1577 : 1578 : Hi, 1579 : 1580 : Attached to this email you find a diff against sml/nj 110.45 1581 : that will enable socket support under Windows. 1582 : 1583 : To apply the patch (using unix or cygwin) 1584 : 1) gunzip runtime.diff.gz 1585 : 2) "cd" into "src/runtime" in the source tree of a fresh 1586 : 110.45 installation. 1587 : 3) patch -p 1 < [your/path/to]runtime.diff 1588 : 1589 : The code compiles fine but has NOT yet been extensively tested. 1590 : I only ran a few tests for basic socket client functionality 1591 : (which worked fine). Especially the functions that use ioctl 1592 : are not tested at all and might not work (see below). 1593 : 1594 : I implemented this since we want to move to a newer version of sml/nj 1595 : but need socket support in order to use it. This is the first time I 1596 : even had a look at the sml/nj source, so please review my changes 1597 : before making this part of the distribution! Here are a few issues 1598 : that I think might be better for someone to solve who is more 1599 : familiar with the sml/nj source (and socket programming): 1600 : 1601 : - getnetbyaddr.c and getnetbyname.c will raise a "not implemented" 1602 : exception since I could not figure out what the windows equivalent 1603 : of these functions is 1604 : 1605 : - In sockets-osdep.h there are a some #include statements that are 1606 : only used in a few files that include sockets-osdep.h 1607 : 1608 : - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but 1609 : does not process its return value since I don't know how to 1610 : report an error upwards. 1611 : 1612 : - It would probably be good to have a call to WSACleanup() when 1613 : the library is unloaded (if there is such a possibility). 1614 : Otherwise I think Windows will take care of this automatically 1615 : when the process finishes. 1616 : 1617 : - I used ioctlsocket() as a replacement for ioctl() but I have 1618 : no idea if that is actually the proper replacement on Windows. 1619 : 1620 : - All these issues are marked in the code by "FIXME" comments. 1621 : 1622 : We use sml/nj extensively in our products and are quite happy 1623 : with it. I hope this contribution will help you. 1624 : 1625 : Keep up the good work! 1626 : 1627 : David 1628 : 1629 : mblume 1489 ---------------------------------------------------------------------- 1630 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1631 : mblume 1488 Date: 2004/05/11 14:20:00 CDT 1632 : Tag: blume-20040511-installml 1633 : Description: 1634 : 1635 : Fixed two bugs in installml script. (Thanks to Vesa A. Norrman for 1636 : the patch.) 1637 : 1638 : ---------------------------------------------------------------------- 1639 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1640 : mblume 1487 Date: 2004/05/11 14:05:00 CDT 1641 : Tag: blume-20040511-nlffi-netbsd 1642 : Description: 1643 : 1644 : Added support for nlffi under netbsd. (Thanks to Vesa A. Norrman for 1645 : the patch.) 1646 : 1647 : ---------------------------------------------------------------------- 1648 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1649 : mblume 1486 Date: 2004/05/11 12:05:00 CDT 1650 : Tag: blume-20040511-exports 1651 : Description: 1652 : 1653 : As per request by Adam Chlipala , extended various 1654 : export lists in compiler-related .cm-files. 1655 : 1656 : ---------------------------------------------------------------------- 1657 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1658 : mblume 1485 Date: 2004/05/11 11:35:00 CDT 1659 : Tag: blume-20040511-allsource 1660 : Description: 1661 : 1662 : The installer now honors the "src-smlnj" target again, although its meaning 1663 : has changed from "all sources required for the compiler" to "all sources 1664 : the installer knows about". In other words, if you enable "src-smlnj" 1665 : in the "targets" file, then the installer will pull in sources for 1666 : everything. (Notice that this refers to source code only. Compiled 1667 : code is still only installed for modules that were requested explicitly 1668 : or which are required for other modules that were requested explicitly.) 1669 : 1670 : ---------------------------------------------------------------------- 1671 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1672 : mblume 1482 Date: 2004/04/23 17:40:00 CDT 1673 : Tag: blume-20040423-ieee-scan 1674 : Description: 1675 : 1676 : Fixed IEEEReal.scan (and .fromString) so that if there is an overflow 1677 : in the exponent calculation we get INF or ZERO (depending on the mantissa 1678 : and the sign of the exponent). 1679 : 1680 : ---------------------------------------------------------------------- 1681 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1682 : mblume 1480 Date: 2004/04/23 10:40:00 CDT 1683 : Tag: blume-20040423-ml-build 1684 : Description: 1685 : 1686 : The ml-build script now terminates with a non-0 status when something 1687 : goes wrong. 1688 : 1689 : ---------------------------------------------------------------------- 1690 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1691 : mblume 1479 Date: 2004/04/22 16:35:00 CDT 1692 : Tag: blume-20040422-Option 1693 : Description: 1694 : 1695 : Made exception Option to be the same as exception Option.Option 1696 : (as it should be). 1697 : 1698 : ---------------------------------------------------------------------- 1699 : allenleung 1468 Name: Allen Leung (leunga (at) reservoir (dot) com) 1700 : Date: 2004/03/19 14:40:00 EST 1701 : Tag: leunga-20040319-cygwin-nlffi 1702 : Description: 1703 : 1704 : Fixed the runtime so that ml-nlffi-lib runs on the cygwin version 1705 : of SML/NJ. The problem is that 1706 : 1707 : lib = dlopen(NULL, ...) 1708 : f = dlsym(lib, "malloc"); 1709 : 1710 : does not work on Windows unless we explicitly export symbols 1711 : such as 'malloc' during linking. We fixed this by explicitly 1712 : exporting the required symbols with the magic gcc incantation: 1713 : 1714 : -Wl,--export-all cygwin.def 1715 : 1716 : where cygwin.def is a file containing all the symbols that 1717 : we wish to export. 1718 : 1719 : I suspect this is a Windows problem and we'll have to 1720 : do the same (somehow with windows compilers) when 1721 : we build the native win32 version with the system 1722 : calls LoadLibrary/GetProcAddress. 1723 : 1724 : ---------------------------------------------------------------------- 1725 : mblume 1384 Name: Matthias Blume (blume (at) tti - c (dot) org) 1726 : mblume 1465 Date: 2004/03/04 16:35:00 CST 1727 : Tag: blume-20040304-intinf-fmt 1728 : Description: 1729 : 1730 : Fixed problem with IntInf.fmt (sign would show up on the right instead 1731 : of on the left for BIN, OCT, and HEX). 1732 : 1733 : ---------------------------------------------------------------------- 1734 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1735 : mblume 1464 Date: 2004/03/04 11:25:00 CST 1736 : Tag: blume-20040304-symlinks 1737 : Description: 1738 : 1739 : Fixed problem with installer script (unix only) where bin/ml-yacc and 1740 : friends pointed (via symlinks) to absolute locations instead of just 1741 : .run-sml. This was reported by Vesa A Norrman. 1742 : 1743 : ---------------------------------------------------------------------- 1744 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1745 : mblume 1455 Date: 2004/02/13 14:50:00 CST 1746 : Tag: Release_110_45 1747 : Description: 1748 : 1749 : New working version (110.45). New bootfiles. 1750 : 1751 : ---------------------------------------------------------------------- 1752 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1753 : mblume 1448 Date: 2004/01/26 15:15:15 CST 1754 : Tag: blume-20040126-toplevel 1755 : Description: 1756 : 1757 : Improved handling of exceptions at the interactive toplevel. 1758 : 1759 : ---------------------------------------------------------------------- 1760 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1761 : Date: 2004/01/26 11:25:00 1762 : mblume 1446 Tag: blume-20040126-app 1763 : Description: 1764 : 1765 : Type of top-level "app" corrected. 1766 : mblume 1447 Added code for setting vp_limitPtrMask to Win32-specific runtime. 1767 : mblume 1446 1768 : ---------------------------------------------------------------------- 1769 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1770 : mblume 1427 Date: 2003/11/18 17:10 CST 1771 : Tag: blume-20031118-basis-fiddle 1772 : Description: 1773 : 1774 : - changed Timer interface to what might become the spec 1775 : - POSIX_FLAGS -> BIT_FLAGS according to spec 1776 : - some other minor discrepancies wrt. spec eliminated 1777 : 1778 : ---------------------------------------------------------------------- 1779 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1780 : mblume 1414 Date: 2003/11/06 12:00:00 CST 1781 : Tag: Release_110_44 1782 : Description: 1783 : 1784 : New working version (110.44). New bootfiles. 1785 : 1786 : ---------------------------------------------------------------------- 1787 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1788 : mblume 1411 Date: 2003/11/04 11:50:00 CST 1789 : Tag: blume-20031104-move-libraries 1790 : Description: 1791 : 1792 : Eliminated the "dont_move_libraries" directive in config/targets. 1793 : (The mechanism was broken and could not be fixed easily. Moreover, 1794 : there does not seem to be any reason not to move all libraries into 1795 : lib during installation. I originally implemented this directive as a 1796 : backward-compatibility feature when I first introduced the new CM. 1797 : Now that things have been stable for a long time and going back to the 1798 : old CM is not an option, there is no reason to keep it around.) 1799 : 1800 : ---------------------------------------------------------------------- 1801 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1802 : mblume 1409 Date: 2003/11/03 16:00:00 CST 1803 : Tag: blume-20031103-installdir 1804 : Description: 1805 : 1806 : Made installer honor INSTALLDIR variable again. (Thanks to Chris 1807 : Richards for pointing out the problem and providing the solution.) 1808 : 1809 : ---------------------------------------------------------------------- 1810 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1811 : mblume 1400 Date: 2003/10/01 17:05:00 CDT 1812 : Tag: blume-20031001-lal-mlrisc 1813 : Description: 1814 : 1815 : MLRISC bug fix from Lal. 1816 : 1817 : ---------------------------------------------------------------------- 1818 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1819 : mblume 1399 Date: 2003/09/30 16:10:00 CDT 1820 : Tag: blume-20030930-primio-bat 1821 : mblume 1398 Description: 1822 : 1823 : 1. Added openVector, nullRd, and nullWr to PRIM_IO. 1824 : 2. Improved .bat files (for Win32 port) to make things work under Win95. 1825 : (thanks to Aaron S. Hawley for this one) 1826 : 1827 : ---------------------------------------------------------------------- 1828 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1829 : mblume 1395 Date: 2003/09/26 16:05:00 CDT 1830 : Tag: blume-20030926-wrappriv 1831 : Description: 1832 : 1833 : Added missing wrapper for privilege "primitive" in $smlnj/viscomp/core.cm. 1834 : 1835 : ---------------------------------------------------------------------- 1836 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1837 : mblume 1394 Date: 2003/09/26 15:00:00 CDT 1838 : Tag: blume-20030926-110_43_3 1839 : Description: 1840 : 1841 : - additional cleanup 1842 : - version number bump, NEW BOOTFILES 1843 : 1844 : ---------------------------------------------------------------------- 1845 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1846 : mblume 1393 Date: 2003/09/26 12:00:00 CDT 1847 : Tag: blume-20030926-ppautoload 1848 : Description: 1849 : 1850 : I modified the read-eval-print loop so that the autoloader gets 1851 : invoked whenever the prettyprinter tries to look up a symbol that 1852 : is not currently defined in the toplevel environment but which 1853 : appears in CM's autoload registry. As a result, we see far fewer of 1854 : those ?.Foo.Bar.xxx names in the prettyprinter's output. 1855 : 1856 : In addition to this I tried to clean up some pieces of the Basis 1857 : implementation (e.g., Socket, Word8Array) in order to prevent other 1858 : instances of these ?.Foo.Bar.xxx names from being printed. 1859 : 1860 : The mechanism that picks names for types still needs some work, though. 1861 : (Right now it seems that if there is a type A.t which is defined to 1862 : mblume 1394 be B.u, but B is unavailable at toplevel, then A.t gets printed as 1863 : "?.B.u" although the perhaps more sensible solution would be to use 1864 : mblume 1393 "A.t" in this case. In other words, the prettyprinter should follow 1865 : a chain of DEFtycs not farther than there are corresponding toplevel 1866 : names in the current environment.) 1867 : 1868 : ---------------------------------------------------------------------- 1869 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1870 : mblume 1391 Date: 2003/09/24 16:31:00 CDT 1871 : Tag: blume-20030924-installer 1872 : Description: 1873 : 1874 : Another installer tweak: All the ML code for the installer is now 1875 : compiled during CMB.make and put into a little library called 1876 :$smlnj/installer.cm. The installation then simply invokes 1877 : 1878 : sml -m $smlnj/installer.cm 1879 : 1880 : and everything happens automagically. 1881 : 1882 : Win32: ML code senses value of environment variable SMLNJ_HOME. 1883 : Unix: ML code senses values of environment variables ROOT, CONFIGDIR, 1884 : and BINDIR. 1885 : 1886 : The new scheme guarantees that the ML code responsible for the installation 1887 : is in sync with the APIs of the main system. Also, the installer is 1888 : somewhat faster because the installer script is precompiled. 1889 : 1890 : ---------------------------------------------------------------------- 1891 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1892 : mblume 1390 Date: 2003/09/24 15:35:00 CDT 1893 : Tag: blume-20030924-synsock 1894 : Description: 1895 : 1896 : Added a signature SYNCHRONOUS_SOCKET to basis.cm. This is like SOCKET 1897 : but excludes all non-blocking operations. Defined SOCKET (in Basis) 1898 : and CML_SOCKET in terms of SYNCHRONOUS_SOCKET. Removed superfluous 1899 : implementations of non-blocking operations from CML's Socket 1900 : structure. 1901 : 1902 : ---------------------------------------------------------------------- 1903 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1904 : mblume 1389 Date: 2003/09/24 15:10:05 CDT 1905 : Tag: blume-20030924-sockets 1906 : Description: 1907 : 1908 : 1. Fixed SOCKET API and implementation to match Basis spec. 1909 : This required changing the internal representation of sockets to one 1910 : that remembers (for each socket file descriptor) whether it is currently 1911 : blocking or non-blocking. This state is maintained lazily (i.e., a system 1912 : call is made only if the state actually needs to change). 1913 : 1914 : 2. OS-specific details of sockets were moved into separate files, thus 1915 : making it possible to unify the bulk of the socket implementations 1916 : between Unix and Win32. 1917 : 1918 : 3. CML's socket API changed accordingly. 1919 : (Note that we need to remove non-blocking functions from this API 1920 : since they are redundant in the case of CML!) 1921 : 1922 : 4. CML's socket implementation now makes use of non-blocking functions 1923 : provided by Basis, thus removing all OS-dependent code from this part 1924 : of CML. 1925 : 1926 : 5. Changed Real64.precision from 52 to 53. Minor cleanup in Real64 code. 1927 : 1928 : ---------------------------------------------------------------------- 1929 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1930 : mblume 1387 Date: 2003/09/22 12:10:00 CDT 1931 : mblume 1388 Tag: blume-20030922-110_43_2 1932 : mblume 1387 Description: 1933 : 1934 : Made a new interim version and bootfiles for developer's bootstrapping 1935 : convenience. 1936 : 1937 : 110.43.2 -- NEW BOOTFILES 1938 : 1939 : ---------------------------------------------------------------------- 1940 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1941 : mblume 1385 Date: 2003/09/19 15:55:00 CDT 1942 : Tag: blume-20030919-cmdir 1943 : Description: 1944 : 1945 : 1. new-install.sh -> install.sh 1946 : 2. changed default CM "metadata" directory name to ".cm" (instead of "CM") 1947 : 3. tweaked installer so that another name instead of .cm can be chosen 1948 : at install time (by setting the CM_DIR_ARC environment variable 1949 : during installation); once installation is complete, the name is 1950 : fixed 1951 : 1952 : ---------------------------------------------------------------------- 1953 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1954 : mblume 1384 Date: 2003/09/18 16:00:00 CDT 1955 : Tag: blume-20030918-110_43_1 1956 : Description: 1957 : 1958 : Made a new interim version and bootfiles for developer's bootstrapping 1959 : convenience. 1960 : 1961 : 110.43.1 -- NEW BOOTFILES 1962 : 1963 : ---------------------------------------------------------------------- 1964 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1965 : mblume 1383 Date: 2003/09/18 15:20:00 CDT 1966 : Tag: blume-20030918-misc 1967 : Description: 1968 : 1969 : 1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as 1970 : this seems to be controversial at the moment) and used those in 1971 : Posix.ProcEnv.times. 1972 : 1973 : 2. Added Time.{from,to}Nanoseconds to Time. 1974 : 1975 : 3. Improved Real.{from,to}LargeInt by avoiding needless calculations. 1976 : For example, fromLargeInt never needs to look at more than 3 "big 1977 : digits" to get its 53 bits of precision. 1978 : 1979 : ---------------------------------------------------------------------- 1980 : mblume 1384 Name: Matthias Blume (blume (at) tti - c (dot) org) 1981 : mblume 1381 Date: 2003/09/17 16:30:00 CDT 1982 : Tag: blume-20030917-real32-slices 1983 : Description: 1984 : 1985 : Added an entry to the primitive environment 1986 : (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and 1987 : added code to compiler/CodeGen/main/mlriscGen.sml to implement it. 1988 : 1989 : Removed some of the "magic" constants in real64.sml and replaced them 1990 : with code that generates these values from their corresponding 1991 : integer counterparts. 1992 : 1993 : Made all(?) the slice-related changes to the Basis and made everything 1994 : compile again... 1995 : 1996 : ---------------------------------------------------------------------- 1997 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 1998 : mblume 1375 Date: 2003/09/15 17:45:00 CDT 1999 : Tag: blume-20030915-rbase 2000 : Description: 2001 : 2002 : Fixed bug in Real.fromLargeInt. 2003 : 2004 : ---------------------------------------------------------------------- 2005 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2006 : mblume 1369 Date: 2003/09/13 18:11:00 CDT 2007 : Tag: blume-20030913-libinstall 2008 : Description: 2009 : 2010 : Minor bugfix in config/libinstall (set anchor with path to 2011 : standalone tool after installing it, otherwise libraries that 2012 : need ml-lex or ml-yacc won't compile the first time the installer 2013 : runs). 2014 : 2015 : ---------------------------------------------------------------------- 2016 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2017 : mblume 1368 Date: 2003/09/12 11:45:00 CDT 2018 : Tag: blume-20030912-various 2019 : Description: 2020 : 2021 : - fixed bug in Real.toLargeInt 2022 : - fixed bug in Posix.ProcEnv.times 2023 : - changed inputLine functions to return an option 2024 : - minor installer improvements / bugfixes 2025 : - changed default @SMLalloc parameter for x86/celeron to 64k 2026 : 2027 : ---------------------------------------------------------------------- 2028 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2029 : mblume 1356 Date: 2003/09/09 22:00:00 CDT 2030 : Tag: Release_110_43 2031 : Description: 2032 : 2033 : New working release 110.43. New bootfiles. 2034 : 2035 : ---------------------------------------------------------------------- 2036 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2037 : mblume 1354 Date: 2003/09/09 19:20:00 CDT 2038 : Tag: blume-20030909-installer 2039 : Description: 2040 : 2041 : Rewrote large parts of config/install.sh in SML (config/libinstall.sml). 2042 : Modified config/install.bat to take advantage of it. Also modified 2043 : config/install.sh (and called it config/new-install.sh) to take advantage 2044 : of it on Unix systems. (The SML code is (supposed to be) platform- 2045 : independent.) 2046 : 2047 : The installer can now install everything under Win32 2048 : as well as under *nix as long as it compiles. 2049 : 2050 : Other changes: 2051 : 2052 : - made CML compile again under Win32 2053 : - made eXene compile under Win32 (by providing a fake structure UnixSock 2054 : and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv) 2055 : - fixed a bug in nowhere: it assumed that type OS.Process.status is the 2056 : same as type int; under Win32 it isn't 2057 : - fixed some slice-related problems in the win32-specific parts of CML 2058 : - added a functor argument "sameVol" to os-path-fn.sml in the Basis 2059 : (under Win32, the volume name is case-insensitive, and the 2060 : OS.Path code compares volume names for equality) 2061 : 2062 : ---------------------------------------------------------------------- 2063 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2064 : mblume 1353 Date: 2003/09/08 11:55:00 CDT 2065 : Tag: blume-20030908-fullpath 2066 : Description: 2067 : 2068 : Made Win32 version of OS.FileSys.fullPath return current directory 2069 : when given an empty string. This is what the spec says, and incidentally, 2070 : CM depends on it. (CM otherwise goes into an infinite loop in certain 2071 : cases when presented with the name of a non-existing .cm file.) 2072 : 2073 : ---------------------------------------------------------------------- 2074 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2075 : mblume 1350 Date: 2003/09/04 16:30:00 CDT 2076 : mblume 1352 Tag: blume-20030905-slices-etc 2077 : mblume 1350 Description: 2078 : 2079 : 1. Changed interface to vectors and arrays in Basis to match 2080 : (draft) Basis spec. 2081 : 2. Added signatures and implementations of slices according to 2082 : Basis spec. 2083 : 3. Edited source code throughout the system to make it compile again 2084 : under 1. and 2. (In some cases code had to be added to have it 2085 : match the new signatures.) 2086 : 4. MLRISC should be backward-compatible: the copies of the originals 2087 : of files that needed to change under 3. were retained, the .cm files 2088 : check the compiler version number and use old versions when 2089 : appropriate. 2090 : 5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to 2091 : dirstream -> string option (in accordance with Basis spec). 2092 : 6. When generating code that counts lines, ml-lex used function 2093 : CharVector.foldli, taking advantage of its old interface. 2094 : This has been replaced with the corresponding code from 2095 : CharVectorSlice. (html-lex must be re-lexed!) 2096 : 7. BitArray in smlnj-lib/Util has been extended/modified to match the 2097 : new MONO_ARRAY signature. (Do we need BitArraySlice?) 2098 : 8. Removed temporary additions (fromInternal, toInternal) from the 2099 : (now obsolete) IntInf in smlnj-lib/Util. 2100 : 9. Cleaned up structure Byte. 2101 : 10. Added localOffset, scan, and fromString to Date (according to spec). 2102 : Cleaned/corrected implementation of Date. 2103 : (Still need to check for correctness; implement better canonicalizeDate.) 2104 : 11. Added "scan" to signature IEEE_REAL. 2105 : 12. Some improvements to IntInf [in particular: efficiency-hack for 2106 : mod and rem when second operand is 2 (for parity checks).] 2107 : 13. Changed representation of type Time.time, using a single IntInf.int 2108 : value counting microseconds. This considerably simplified the 2109 : implementation of structure Time. We now support negative time 2110 : values; scan and fromString handle signs. 2111 : 14. Functor PrimIO now takes two additional arguments (VectorSlice and 2112 : ArraySlice). 2113 : 2114 : ---------------------------------------------------------------------- 2115 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2116 : mblume 1347 Date: 2003/08/28 17:00:00 CDT 2117 : Tag: blume-20030828-intinf 2118 : Description: 2119 : 2120 : This is a major update which comes with a version number bump 2121 : (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES, 2122 : and an implementation of IntInf in the Basis. 2123 : 2124 : There are a fairly large number of related changes and updates throughout 2125 : the system: 2126 : 2127 : Basis: 2128 : - Implemented IntInf. 2129 : - Made LargeInt a projection of IntInf (by filtering through INTEGER). 2130 : mblume 1348 - Added some missing Real64 operations, most notably Real.toLargeInt. 2131 : mblume 1347 - Added FixedInt as a synonym for Int32. 2132 : 2133 : compiler: 2134 : * Added support for a built-in intinf type. 2135 : - literals 2136 : - pattern matching 2137 : - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.) 2138 : - overloading on literals and operations 2139 : 2140 : This required adding a primitive type intinf, some additional 2141 : primops, and implementations for several non-trivial intinf 2142 : operations in Core. (The intinf type is completely abstract 2143 : to the compiler; all operations get delegated back to the Core.) 2144 : 2145 : * Intinf equality is handled by polyequal. However, the compiler 2146 : does not print its usual warning in this case (since polyequal 2147 : is the right thing to do there). 2148 : 2149 : * Improved the organization of structure InlineT. 2150 : 2151 : * A word about conversion primops: 2152 : If conversions involving intinf do not cancel out during 2153 : mblume 1348 CPS contract, then the compiler must insert calls to Core functions. 2154 : mblume 1347 Since all core access must be resolved already during the FLINT 2155 : translate phase, it would be too late a the time of CPS contract 2156 : mblume 1348 to add new Core calls. For this reason, conversion primops 2157 : mblume 1347 for intinf carry two arguments: 1. the numeric argument that 2158 : they are supposed to convert, and 2. the Core function that 2159 : can help with this conversion if necessary. If CPS contract 2160 : mblume 1348 eliminates a primop, then the associated Core function becomes 2161 : dead and goes away. Intinf conversion primops that do not get 2162 : eliminated by CPS contract get rewritten into calls of their 2163 : core functions by a separate, new phase. 2164 : mblume 1347 2165 : interactive system: 2166 : - Control.Print.intinfDepth controls max length of intinf constants 2167 : being printed. (Analogous to Control.Print.stringDepth.) 2168 : - Cleanup in printutil and pputil: got rid of unused stuff and 2169 : duplicates; replaced some of the code with code that makes better 2170 : use of library functionality. 2171 : 2172 : CM: 2173 : Bugfix: parse-errors in init group (system/smlnj/init/init.cmi) 2174 : are no longer silent. 2175 : 2176 : CKIT: 2177 : Fixed mismatched uses of Int32 and LargeInt. I always decided 2178 : in favor of LargeInt -- which is now the same as IntInf. 2179 : CKIT-knowledgable people should check whether this is what's 2180 : intended and otherwise change things back to using Int32 or 2181 : FixedInt. 2182 : 2183 : Throughout the code: 2184 : mblume 1348 Started using IntInf.int literals and built-in operations 2185 : mblume 1347 (e.g., comparison with 0) where this seems appropriate. 2186 : 2187 : 2188 : ---------------------------------------------------------------------- 2189 : macqueen 1343 Name: Dave MacQueen (dbm@cs.uchicago.edu) 2190 : Date: 2003/08/13 11:36:00 CDT 2191 : Tag: dbm-20030813-mcz-merge1 2192 : Description: 2193 : 2194 : Merging changes from the mcz-branch development branch into trunk. 2195 : These changes involve replacement of the emulated old prettyprinter 2196 : interface with direct use of the SML/NJ Lib PP library, and fixing 2197 : of a couple of bugs (895, 1186) relating to error messages. A new 2198 : prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml}) 2199 : has been added. 2200 : 2201 : ---------------------------------------------------------------------- 2202 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2203 : mblume 1342 Date: 2003/08/11 15:45:00 CDT 2204 : Tag: blume-20030811-windows 2205 : Description: 2206 : 2207 : Version number bumped to 110.42.9. NEW BOOTFILES!!! 2208 : 2209 : http://smlnj.cs.uchicago.edu/dist/working/110.42.9/ 2210 : 2211 : This patch restores SML/NJ's ability to run under win32. There are a 2212 : number of changes, including fixes for several bugs that had gone 2213 : unnoticed until now: 2214 : 2215 : - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when 2216 : trying to run the win32 version from within cygwin.) 2217 : 2218 : - There are a number of simple .bat scripts that substitute for their 2219 : corresponding Unix shell-scripts. (See below.) 2220 : 2221 : - The internals of ml-build have been modified slightly. The main 2222 : difference is that instead of calling ".link-sml" (or link-sml.bat) 2223 : using OS.Process.system, the ML process delegates this task back 2224 : to the script. Otherwise problems arise in mixed environments such 2225 : as Cygwin where scripts look and work like Unix scripts, but 2226 : where OS.Process.system cannot run them. 2227 : 2228 : - In CM, the srcpath pickler used native pathname syntax -- which 2229 : is incorrect in the case of cross-compilation. The new pickle format 2230 : is independent of platform-specific naming conventions. 2231 : 2232 : - Path configuration files (such as lib/pathconfig) can now choose 2233 : between native and standard syntax. Placing a line of the form 2234 : 2235 : standard! 2236 : 2237 : into the file causes all subsequent paths to be interpreted using 2238 : CM standard pathname syntax (= Unix conventions); a line 2239 : 2240 : native! 2241 : 2242 : switches back to native style. This was needed so that 2243 : path config files can be written portably, see src/system/pathconfig. 2244 : 2245 : - Runtime system: 2246 : 2247 : - win32-filesys.c: get_file_time and set_file_time now 2248 : access modification time, not creation time. 2249 : 2250 : - I/O code made aware of new array representation. 2251 : 2252 : - Bug fixes in X86.prim.masm. 2253 : 2254 : - src/system/makeml made aware of win32. (For use under cygwin 2255 : and other Unix-environments for windows.) 2256 : 2257 : - In Basis, fixed off-by-one error in win32-io.sml (function vecF) 2258 : which caused BinIO.inputAll to fail consistently. 2259 : 2260 : .bat scripts: 2261 : 2262 : Windows .bat scripts assume that SMLNJ_HOME is defined. 2263 : 2264 : - sml.bat, ml-yacc.bat, ml-lex.bat: Driver scripts for standalone 2265 : applications (sml, ml-yacc, ml-lex). 2266 : - ml-build.bat: analogous to ml-build. 2267 : - config\install.bat: Analogous to config/install.sh. This requires 2268 : that SMLNJ_HOME is set and that Microsoft Visual C is ready to use. 2269 : (nmake etc. must be on the path, and vcvars32 must have been run.) 2270 : Moreover, sources for ml-lex and ml-yacc need to exist under src, 2271 : and the bootfile hierarchy must have been unpacked under 2272 : sml.boot.x86-win32. 2273 : The script is very primitive and does a poor job at error checking. 2274 : It only installs the base system, ml-lex, and ml-yacc. No other 2275 : libraries are being installed (i.e., you get only those that 2276 : are part of the compiler.) 2277 : - link-sml.bat: analogous to .link-sml, but not currently used 2278 : 2279 : Unrelated bug fixes: 2280 : 2281 : - ml-nlffigen now exports structures ST_* corresponding to incomplete 2282 : types. 2283 : - Added getDevice to PP/src/pp-debug-fn.sml. (Would not compile 2284 : otherwise.) 2285 : 2286 : ---------------------------------------------------------------------- 2287 : macqueen 1337 Name: Dave MacQueen (macqueen@cs.uchicago.edu) 2288 : Date: 2003/06/17 2289 : Tag: macqueen-20030617-bug895 2290 : Description: 2291 : 2292 : Modified compiler/Elaborator/print/pptype.sml to fix bug 895. 2293 : Tag will be used for new development branch (mcz-branch) for 2294 : use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago. 2295 : 2296 : ---------------------------------------------------------------------- 2297 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2298 : mblume 1335 Date: 2003/05/27 16:55:00 CDT 2299 : Tag: blume-20030527-polyeq 2300 : Description: 2301 : 2302 : Tried to eliminated most cases of polymorphic equality. 2303 : 2304 : ---------------------------------------------------------------------- 2305 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2306 : mblume 1334 Date: 2003/05/21 17:45:00 CDT 2307 : Tag: blume-20030517-complete 2308 : Description: 2309 : 2310 : Two changes: 2311 : 2312 : 1. Added a flag for controlling whether non-exhaustive bindings will 2313 : be treated as errors (default is false). 2314 : 2. Cleaned up the *entire* source tree so that CMB.make goes through 2315 : without a single non-exhaustive match- or bind warning. 2316 : 2317 : ---------------------------------------------------------------------- 2318 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2319 : mblume 1332 Date: 2003/05/17 10:20:00 CDT 2320 : Tag: blume-20030517-absyn 2321 : Description: 2322 : 2323 : 1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn. 2324 : 2325 : This mainly affects the quality of error messages. However, some 2326 : of the code is now more straightforward than before. (Treatment of 2327 : the above four constructs in translate.sml is much simpler than 2328 : the "macro-expansion" that was going on before. Plus, the mach- 2329 : compiler no longer gets invoked just to be able to compile an 2330 : if-expression.) 2331 : 2332 : 2. The ErrorMsg.Error exception is now caught and absorbed by the 2333 : interactive loop. 2334 : 2335 : ---------------------------------------------------------------------- 2336 : allenleung 1327 Name: Allen Leung 2337 : Date: 2003/05/16 13:05:00 CDT 2338 : Tag: leunga-20030516-cygwin-runtime 2339 : Description: 2340 : 2341 : Ported the runtime system to cygwin, which uses the unix 2342 : x86-unix bin files. Missing/buggy features: 2343 : 2344 : o getnetbyname, getnetbyaddr: these functions seem to be missing in 2345 : the Cygwin library. 2346 : o Ctrl-C handling may be flaky. 2347 : o Windows system calls and Windows I/O are not supported. 2348 : 2349 : A new set of binfiles is located at: 2350 : 2351 : http://www.dorsai.org/~leunga/boot.x86-unix.tgz 2352 : 2353 : This is only needed for bootstrapping the cygwin version of smlnj. 2354 : Other x86 versions can use the existing binfiles. 2355 : 2356 : ---------------------------------------------------------------------- 2357 : mblume 1317 Name: Matthias Blume 2358 : Date: 2003/04/08 15:42:00 CDT 2359 : Tag: blume-20030408-listpair 2360 : Description: 2361 : 2362 : 1. Added a target 'mlrisc' to installer. 2363 : 2364 : 2. Added missing elements to structure ListPair. 2365 : 2366 : ---------------------------------------------------------------------- 2367 : leunga 1296 Name: Allen Leung 2368 : Date: 2003/01/07 10:40:00 EST 2369 : Tag: leunga-20030107-int-rem 2370 : Description: 2371 : 2372 : Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86. 2373 : The arguments to the SUBL instruction were swapped. 2374 : 2375 : ---------------------------------------------------------------------- 2376 : blume 1229 Name: Matthias Blume 2377 : blume 1294 Date: 2002/12/12 16:25:00 EST 2378 : Tag: blume-20021212-risc-ra 2379 : Description: 2380 : 2381 : Fixed a serious bug in the rewrite code for FP spilling/reloading that 2382 : sent the RA into an infinite loop when floating point registers get 2383 : spilled. (Because of this bug, e.g., nucleic stopped compiling between 2384 : 110.37 and 110.38.) 2385 : There was another set of potential problems related to the handling of 2386 : MLRISC annotations (but those did not yet cause real problems, apparently). 2387 : 2388 : ---------------------------------------------------------------------- 2389 : Name: Matthias Blume 2390 : blume 1291 Date: 2002/12/06 22:40:00 EST 2391 : Tag: blume-20021206-cm-fileid 2392 : Description: 2393 : 2394 : Added a call of SrcPath.sync at the beginning of Parse.parse (in CM). 2395 : This fixes the problem of CM getting confused by files that suddenly 2396 : change their identity (e.g., by getting unlinked and recreated by some 2397 : text editor such as vi). There might be a better/cheaper/cleaner way 2398 : of doing this, but for now this will have to do. 2399 : 2400 : ---------------------------------------------------------------------- 2401 : Name: Matthias Blume 2402 : blume 1288 Date: 2002/10/28 09:50:00 EST 2403 : Tag: blume-20021028-typecheck 2404 : Description: 2405 : 2406 : Exported structure Typecheck from$smlnj/viscomp/core.cm. 2407 : 2408 : ---------------------------------------------------------------------- 2409 : Name: Matthias Blume 2410 : blume 1282 Date: 2002/10/17 09:10:00 EDT 2411 : blume 1279 Tag: Release_110_42 2412 : Description: 2413 : 2414 : blume 1282 In good old tradition, there has been a slight hiccup so that we have 2415 : to patch 110.42 after the fact. The old release tag has been replaced 2416 : (see below). 2417 : 2418 : The change solves a problem with two competing approaches the 2419 : configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in 2420 : each other's way. 2421 : 2422 : This change only affects the runtime system code and the installer script. 2423 : (No new bootfiles.) 2424 : 2425 : ---------------------------------------------------------------------- 2426 : Name: Matthias Blume 2427 : Date: 2002/10/16 12:00:00 EDT 2428 : Tag: Release_110_42_removed 2429 : Description: 2430 : 2431 : blume 1279 New working release. New bootfiles. 2432 : 2433 : ---------------------------------------------------------------------- 2434 : Name: Matthias Blume 2435 : blume 1273 Date: 2002/10/10 13:10:00 EDT 2436 : Tag: blume-20021010-ppc-divs 2437 : Description: 2438 : 2439 : The mltree operator DIVS must be implemented with an overflow check on 2440 : the PPC because the hardware indicates divide-by-zero using "overflow" as 2441 : well. 2442 : 2443 : ---------------------------------------------------------------------- 2444 : Name: Matthias Blume 2445 : blume 1261 Date: 2002/07/23 11:45:00 2446 : Tag: blume-20020723-smlnj-home 2447 : Description: 2448 : 2449 : Sml now senses the SMLNJ_HOME environment variable. If this is set, 2450 : then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless 2451 : CM_PATHCONFIG is also set), the path configuration file is assumed 2452 : to be in$SMLNJ_HOME/lib/pathconfig. This way one can easily move 2453 : the entire tree to some other place and everything will "just work". 2454 : 2455 : (Companion commands such as ml-build and ml-makedepend also sense this 2456 : variable.) 2457 : 2458 : ---------------------------------------------------------------------- 2459 : Name: Matthias Blume 2460 : blume 1259 Date: 2002/07/12 21:19:00 EDT 2461 : Tag: blume-20020712-liveness 2462 : Description: 2463 : 2464 : Exported two useful "step" functions from liveness module (MLRISC). 2465 : 2466 : ---------------------------------------------------------------------- 2467 : Name: Matthias Blume 2468 : blume 1253 Date: 2002/07/05 16:00 EDT 2469 : Tag: Release_110_41 2470 : Description: 2471 : 2472 : New working release. New bootfiles. 2473 : 2474 : ---------------------------------------------------------------------- 2475 : Name: Matthias Blume 2476 : blume 1250 Date: 2002/07/05 10:25:00 EDT 2477 : Tag: blume-20020705-btimp 2478 : Description: 2479 : 2480 : Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that 2481 : other clients can set up backtracing support. 2482 : 2483 : ---------------------------------------------------------------------- 2484 : Name: Matthias Blume 2485 : blume 1249 Date: 2002/06/25 17:23:00 EDT 2486 : Tag: blume-20020625-fpmax 2487 : Description: 2488 : 2489 : Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point 2490 : case. (The sense of the isNaN test was reversed -- which made min and 2491 : max always return their first argument.) 2492 : 2493 : ---------------------------------------------------------------------- 2494 : Name: Matthias Blume 2495 : blume 1240 Date: 2002/06/11 2496 : Tag: blume-20020611-unixpath 2497 : Description: 2498 : 2499 : Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch. 2500 : 2501 : ---------------------------------------------------------------------- 2502 : Name: Matthias Blume 2503 : blume 1238 Date: 2002/06/10 16:35:00 EDT 2504 : Tag: blume-20020610-ieeereal 2505 : Description: 2506 : 2507 : I back-ported my implementation of IEEEReal.fromString from the 2508 : idlbasis-devel branch so that we can test it. 2509 : 2510 : Another small change is that ppDec tries to give more information 2511 : than just "" in the case of functors. However, this code is 2512 : broken in some mysterious way if the functor's body's signature 2513 : has not been declared by ascription but gets inferred from the 2514 : implementation. This needs fixing... 2515 : 2516 : ---------------------------------------------------------------------- 2517 : Name: Matthias Blume 2518 : blume 1229 Date: 2002/05/31 2519 : Tag: blume-20020531-btrace-mode 2520 : Description: 2521 : 2522 : Resurrected SMLofNJ.Internals.BTrace.mode. (It accidentally fell by 2523 : the wayside when I switched over to using Controls everywhere.) 2524 : 2525 : ---------------------------------------------------------------------- 2526 : george 1222 Name: Lal George 2527 : Date: 2002/05/23 12:21:40 EDT 2528 : Tag: george-20020523-visual-labels 2529 : Description: 2530 : 2531 : Labels are now displayed in the graphical output to make 2532 : the fall-through and target blocks obvious. 2533 : 2534 : ---------------------------------------------------------------------- 2535 : blume 1204 Name: Matthias Blume 2536 : blume 1220 Date: 2002/05/22 11:03:00 EDT 2537 : Tag: blume-20020522-shrink 2538 : Description: 2539 : 2540 : John tweaked yesterday's fix for 1131 to handle an out-of-memory 2541 : situation that comes up when allocating huge arrays. 2542 : 2543 : ---------------------------------------------------------------------- 2544 : Name: Matthias Blume 2545 : blume 1215 Date: 2002/05/21 16:00:00 EDT 2546 : Tag: Release_110_40 2547 : Description: 2548 : 2549 : New working release (110.40). New bootfiles. 2550 : 2551 : [Also: John Reppy fixed GC bug 1131.] 2552 : 2553 : ---------------------------------------------------------------------- 2554 : Name: Matthias Blume 2555 : blume 1212 Date: 2002/05/21 12:35:00 EDT 2556 : Tag: blume-20020521-cmdoc 2557 : Description: 2558 : 2559 : CM documentation update. 2560 : 2561 : ---------------------------------------------------------------------- 2562 : Name: Matthias Blume 2563 : blume 1211 Date: 2002/05/21 10:55:00 EDT 2564 : Tag: blume-20020521-misc 2565 : Description: 2566 : 2567 : - John tweaked runtime to be silent on heap export (except when 2568 : GC messages are on). 2569 : - I added a few more things (cross-compiling versions of CMB) to 2570 : config/preloads (as suggestions). 2571 : 2572 : ---------------------------------------------------------------------- 2573 : Name: Matthias Blume 2574 : blume 1208 Date: 2002/05/20 22:25:00 EDT 2575 : Tag: blume-20020520-controls 2576 : Description: 2577 : 2578 : - Added ControlUtil structure to control-lib.cm. 2579 : - Use it throughout. 2580 : - Used Controls facility to define MLRISC controls (as opposed to 2581 : registering MLRISC control ref cells with Controls after the fact) 2582 : - Fixed messed-up controls priorities. 2583 : 2584 : * Removed again all the stuff from config/preloads that one wouldn't 2585 : be able to preload at the time the initial heap image is built. 2586 : (Many libraries, e.g., CML, do not exist yet at this time. The 2587 : only libraries that can be preloaded via config/preloads are those 2588 : that come bundled with the bootfiles.) 2589 : 2590 : ---------------------------------------------------------------------- 2591 : Name: Matthias Blume 2592 : blume 1204 Date: 2002/05/20 10:59:00 EDT 2593 : Tag: blume-20020520-preloads 2594 : Description: 2595 : 2596 : Added a lot of commented-out suggestions for things to be included 2597 : in config/preloads. 2598 : 2599 : ---------------------------------------------------------------------- 2600 : leunga 1203 Name: Allen Leung 2601 : Date: 2002/05/18 14:20:00 EDT 2602 : Tag: leunga-20020518-mdl 2603 : Description: 2604 : 2605 : o Made the mdl tool stuff compile and run again. 2606 : o I've disabled all the stuff that depends on RTL specifications; they 2607 : are all badly broken anyway. 2608 : 2609 : ---------------------------------------------------------------------- 2610 : blume 1201 Name: Matthias Blume 2611 : Date: 2002/05/17 16:49:00 EDT 2612 : Tag: blume-20020517-controls 2613 : Description: 2614 : 2615 : 0. John Reppy made several modifications to the SML/NJ library. 2616 : In particular, there is a shiny new controls-lib.cm. 2617 : 2618 : 1. Pushed new controls interface through compiler so that everything 2619 : compiles again. 2620 : 2621 : 2. Added FormatComb and FORMAT_COMB to the CML version of the 2622 : SML/NJ library (so that CML compiles again). 2623 : 2624 : 3. Modified init scripts because XXX_DEFAULT environment variables 2625 : are no longer with us. (Boot-time initialization is now done 2626 : using the same environment variables that are also used for 2627 : startup-time initialization of controls.) 2628 : 2629 : ---------------------------------------------------------------------- 2630 : george 1192 Name: Lal George 2631 : Date: 2002/05/15 09:20:10 EDT 2632 : Tag: george-20020515-pseudo-op-decls 2633 : Description: 2634 : 2635 : All pseudo-ops emitted before the first segment declaration 2636 : such as TEXT, DATA, and BSS directives are assumed to be global 2637 : declarations and are emitted first in the assembly file. This is 2638 : useful in a number of situations where one has pseudo-ops that are not 2639 : specific to any segment, and also works around the constraint that one 2640 : cannot have client pseudo-ops in the TEXT segment. 2641 : 2642 : Because no segment is associated with these declarations it is 2643 : an error to allocate any space or objects before the first segment 2644 : directive and an exception will be raised. However, we cannot make 2645 : this check for client pseudo-ops. 2646 : 2647 : These top level declarations are a field in the CFG graph_info. 2648 : In theory you can continue to add to this field after the CFG has been 2649 : built -- provided you know what you are doing;-) 2650 : 2651 : ---------------------------------------------------------------------- 2652 : blume 1175 Name: Matthias Blume 2653 : blume 1190 Date: 2002/05/13 16:40:00 EDT 2654 : Tag: blume-20020513-pp-etc 2655 : Description: 2656 : 2657 : A few minor bugfixes: 2658 : 2659 : - Stopgap measure for bug recently reported by Elsa Gunter (ppDec). 2660 : (Bogus printouts for redefined bindings still occur. Compiler 2661 : bug should no longer occur now. We need to redo the prettyprinter 2662 : from scratch.) 2663 : 2664 : - CM pathname printer now also adds escape sequences for ( and ) 2665 : 2666 : - commend and docu fixes for ml-nlffi 2667 : 2668 : ---------------------------------------------------------------------- 2669 : Name: Matthias Blume 2670 : blume 1189 Date: 2002/05/10 16:40:00 EDT 2671 : Tag: blume-20020510-erg-textio 2672 : Description: 2673 : 2674 : Applied the following bugfix provided by Emden Gansner: 2675 : 2676 : Output is corrupted when outputSubstr is used rather than output. 2677 : 2678 : The problem occurs when a substring 2679 : 2680 : ss = (s, dataStart, dataLen) 2681 : 2682 : where dataStart > 0, fills a stream buffer with avail bytes left. 2683 : avail bytes of s, starting at index dataStart, are copied into the 2684 : buffer, the buffer is flushed, and then the remaining dataLen-avail 2685 : bytes of ss are copied into the beginning of the buffer. Instead of 2686 : starting this copy at index dataStart+avail in s, the current code 2687 : starts the copy at index avail. 2688 : 2689 : Fix: 2690 : In text-io-fn.sml, change line 695 from 2691 : val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0) 2692 : to 2693 : val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0) 2694 : 2695 : ---------------------------------------------------------------------- 2696 : Name: Matthias Blume 2697 : blume 1186 Date: 2002/04/12 13:55:00 EDT 2698 : Tag: blume-20020412-assyntax 2699 : Description: 2700 : 2701 : 1. Grabbed newer assyntax.h from the XFree86 project. 2702 : 2. Fiddled with how to compile X86.prim.asm without warnings. 2703 : 3. (Very) Minor cleanup in CM. 2704 : 2705 : ---------------------------------------------------------------------- 2706 : Name: Matthias Blume 2707 : blume 1185 Date: 2002/04/01 (no joke!) 17:07:00 EST 2708 : Tag: blume-20020401-x86div 2709 : Description: 2710 : 2711 : Added full support for div/mod/rem/quot on the x86, using the machine 2712 : instruction's two results (without clumsily recomputing the remainder) 2713 : directly where appropriate. 2714 : 2715 : Some more extensive power-of-two support was added to the x86 instruction 2716 : selector (avoiding expensive divs, mods, and muls where they can be 2717 : replaced with cheaper shifts and masks). However, this sort of thing 2718 : ought to be done earlier, e.g., within the CPS optimizer so that 2719 : all architectures benefit from it. 2720 : 2721 : The compiler compiles to a fixed point, but changes might be somewhat 2722 : fragile nevertheless. Please, report any strange things that you might 2723 : see wrt. div/mod/quot/rem... 2724 : 2725 : ---------------------------------------------------------------------- 2726 : Name: Matthias Blume 2727 : blume 1184 Date: 2002/03/29 17:22:00 2728 : Tag: blume-20020329-div 2729 : Description: 2730 : 2731 : Fixed my broken div/mod logic. Unfortunately, this means that the 2732 : inline code for div/mod now has one more comparison than before. 2733 : Fast paths (quotient > 0 or remainder = 0) are not affected, though. 2734 : The problem was with quotient = 0, because that alone does not tell 2735 : us which way the rounding went. One then has to look at whether 2736 : remainder and divisor have the same sign... :( 2737 : 2738 : Anyway, I replaced the bootfiles with fresh ones... 2739 : 2740 : ---------------------------------------------------------------------- 2741 : Name: Matthias Blume 2742 : blume 1183 Date: 2002/03/29 14:10:00 EST 2743 : Tag: blume-20020329-inlprims 2744 : Description: 2745 : 2746 : NEW BOOTFILES!!! Version number bumped to 110.39.3. 2747 : 2748 : Primops have changed. This means that the bin/boot-file formats have 2749 : changed as well. 2750 : 2751 : To make sure that there is no confusion, I made a new version. 2752 : 2753 : 2754 : CHANGES: 2755 : 2756 : * removed REMT from mltree (remainder should never overflow). 2757 : 2758 : * added primops to deal with divisions of all flavors to the frontend 2759 : 2760 : * handled these primops all the way through so they map to their respective 2761 : MLRISC support 2762 : 2763 : * used these primops in the implementation of Int, Int32, Word, Word32 2764 : 2765 : * removed INLDIV, INLMOD, and INLREM as they are no longer necessary 2766 : 2767 : * parameterized INLMIN, INLMAX, and INLABS by a numkind 2768 : 2769 : * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including 2770 : floating point 2771 : 2772 : * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32, 2773 : and Real (but Real.abs maps to a separate floating-point-only primop) 2774 : 2775 : 2776 : TODO items: 2777 : 2778 : * Hacked Alpha32 instruction selection, disabling the selection of REMx 2779 : instructions because the machine instruction encoder cannot handle 2780 : them. (Hppa, PPC, and Sparc instruction selection did not handle 2781 : REM in the first place, and REM is supported by the x86 machine coder.) 2782 : 2783 : * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction 2784 : selection phase. (The two can be streamlined because the hardware 2785 : delivers both quotient and remainder at the same time anyway.) 2786 : 2787 : * Think about what to do with "valOf(Int32.minInt) div ~1" and friends. 2788 : (Currently the behavior is inconsistent both across architectures and 2789 : wrt. the draft Basis spec.) 2790 : 2791 : * Word8 should eventually be handled natively, too. 2792 : 2793 : * There seems to be one serious bug in mltree-gen.sml. It appears, though, 2794 : as if there currently is no execution path that could trigger it in 2795 : SML/NJ. (The assumptions underlying functions arith and promotable do not 2796 : hold for things like multiplication and division.) 2797 : 2798 : ---------------------------------------------------------------------- 2799 : Name: Matthias Blume 2800 : blume 1181 Date: 2002/03/27 16:27:00 EST 2801 : Tag: blume-20020327-mlrisc-divisions 2802 : Description: 2803 : 2804 : Added support for all four division operations (ML's div, mod, quot, 2805 : and rem) to MLRISC. In the course of doing so, I also rationalized 2806 : the naming (no more annoying switch-around of DIV and QUOT), by 2807 : parameterizing the operation by div_rounding_mode (which can be either 2808 : DIV_TO_ZERO or DIV_TO_NEGINF). 2809 : 2810 : The generic MLTreeGen functor takes care of compiling all four 2811 : operations down to only round-to-zero div. 2812 : 2813 : Missing pieces: 2814 : 2815 : * Doing something smarter than relying on MLTreeGen on architectures 2816 : like, e.g., the x86 where hardware division delivers both quotient and 2817 : remainder at the same time. With this, the implementation of the 2818 : round-to-neginf operations could be further streamlined. 2819 : 2820 : * Remove inlining support for div/mod/rem from the frontend and replace it 2821 : with primops that get carried through to the backend. Do this for all 2822 : int and word types. 2823 : 2824 : ---------------------------------------------------------------------- 2825 : Name: Matthias Blume 2826 : blume 1180 Date: 2002/03/25 17:25:00 EST 2827 : Tag: blume-20020325-divmod 2828 : Description: 2829 : 2830 : I improved (hopefully without breaking them) the implementation of Int.div, 2831 : Int.mod, and Int.rem. For this, the code in translate.sml now takes 2832 : advantage of the following observations: 2833 : 2834 : Let q = x quot y r = x rem y 2835 : d = x div y m = x mod y 2836 : 2837 : where "quot" is the round-to-zero version of integer division that 2838 : hardware usually provides. Then we have: 2839 : 2840 : r = x - q * y where neither the * nor the - will overflow 2841 : d = if q >= 0 orelse x = q * y then q else q - 1 2842 : where neither the * nor the - will overflow 2843 : m = if q >= 0 orelse r = 0 then r else r + y 2844 : where the + will not overflow 2845 : 2846 : This results in substantial simplification of the generated code. 2847 : The following table shows the number of CFG nodes and edges generated 2848 : for 2849 : fun f (x, y) = x OPER y 2850 : (* with OPER \in div, mod, quot, rem *) 2851 : 2852 : 2853 : OPER | nodes(old) | edges(old) | nodes(new) | edges(new) 2854 : -------------------------------------------------------- 2855 : div | 24 | 39 | 12 | 16 2856 : mod | 41 | 71 | 12 | 16 2857 : quot | 8 | 10 | 8 | 10 2858 : rem | 10 | 14 | 8 | 10 2859 : 2860 : 2861 : ---------------------------------------------------------------------- 2862 : Name: Matthias Blume 2863 : blume 1179 Date: 2002/03/25 22:06:00 EST 2864 : Tag: blume-20020325-cprotobug 2865 : Description: 2866 : 2867 : Fixed a bug in cproto (c prototype decoder). 2868 : 2869 : ---------------------------------------------------------------------- 2870 : Name: Matthias Blume 2871 : blume 1178 Date: 2002/03/25 16:00:00 EST 2872 : Tag: blume-20020325-raw-primops 2873 : Description: 2874 : 2875 : I did some cleanup to Allen's new primop code and 2876 : replaced yesterday's bootfiles with new ones. 2877 : (But they are stored in the same place.) 2878 : 2879 : ---------------------------------------------------------------------- 2880 : Name: Matthias Blume 2881 : blume 1175 Date: 2002/03/24 22:40:00 EST 2882 : Tag: blume-20020324-bootfiles 2883 : Description: 2884 : 2885 : Made the bootfiles that Allen asked for. 2886 : 2887 : ---------------------------------------------------------------------- 2888 : leunga 1174 Name: Allen Leung 2889 : Date: 2002/03/23 15:50:00 EST 2890 : Tag: leunga-20020323-flint-cps-rcc-primops 2891 : Description: 2892 : 2893 : 1. Changes to FLINT primops: 2894 : 2895 : (* make a call to a C-function; 2896 : * The primop carries C function prototype information and specifies 2897 : * which of its (ML-) arguments are floating point. C prototype 2898 : * information is for use by the backend, ML information is for 2899 : * use by the CPS converter. *) 2900 : | RAW_CCALL of { c_proto: CTypes.c_proto, 2901 : ml_args: ccall_type list, 2902 : ml_res_opt: ccall_type option, 2903 : reentrant : bool 2904 : } option 2905 : (* Allocate uninitialized storage on the heap. 2906 : * The record is meant to hold short-lived C objects, i.e., they 2907 : * are not ML pointers. With the tag, the representation is 2908 : * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8) 2909 : *) 2910 : | RAW_RECORD of {tag:bool,sz:int} 2911 : and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR 2912 : 2913 : 2. These CPS primops are now overloaded: 2914 : 2915 : rawload of {kind:numkind} 2916 : rawstore of {kind:numkind} 2917 : 2918 : The one argument form is: 2919 : 2920 : rawload {kind} address 2921 : 2922 : The two argument form is: 2923 : 2924 : rawload {kind} [ml object, byte-offset] 2925 : 2926 : 3. RAW_CCALL/RCC now takes two extra arguments: 2927 : 2928 : a. The first is whether the C call is reentrant, i.e., whether 2929 : ML state should be saved and restored. 2930 : b. The second argument is a string argument specifying the name of 2931 : library and the C function. 2932 : 2933 : These things are currently not handled in the code generator, yet. 2934 : 2935 : 4. In CProto, 2936 : 2937 : An encoding type of "bool" means "ml object" and is mapped into 2938 : C prototype of PTR. Note that "bool" is different than "string", 2939 : even though "string" is also mapped into PTR, because "bool" 2940 : is assigned an CPS type of BOGt, while "string" is assigned INT32t. 2941 : 2942 : 5. Pickler/unpicker 2943 : 2944 : Changed to handle RAW_RECORD and newest RAW_CCALL 2945 : 2946 : 6. MLRiscGen, 2947 : 2948 : 1. Changed to handle the new rawload/rawstore/rawrecord operators. 2949 : 2. Code for handling C Calls has been moved to a new module CPSCCalls, 2950 : in the file CodeGen/cpscompile/cps-c-calls.sml 2951 : 2952 : 7. Added the conditional move operator 2953 : 2954 : condmove of branch 2955 : 2956 : to cps. Generation of this is still buggy so it is currently 2957 : disabled. 2958 : 2959 : ---------------------------------------------------------------------- 2960 : george 1168 Name: Lal George 2961 : Date: 2002/03/22 14:18:25 EST 2962 : george 1171 Tag: george-20020322-cps-branch-prob 2963 : george 1168 Description: 2964 : 2965 : george 1171 Implemented the Ball-Larus branch prediction-heuristics, and 2966 : george 1168 incorporated graphical viewers for control flow graphs. 2967 : 2968 : george 1171 Ball-Larus Heuristics: 2969 : george 1168 --------------------- 2970 : See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml. 2971 : 2972 : By design it uses the Dempster-Shafer theory for combining 2973 : probabilities. For example, in the function: 2974 : 2975 : fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc) 2976 : 2977 : the ball-larus heuristics predicts that the n=0 is unlikely 2978 : (OH-heuristic), and the 'then' branch is unlikely because of the 2979 : RH-heuristic -- giving the 'then' branch an even lower combined 2980 : george 1171 probability using the Dempster-Shafer theory. 2981 : george 1168 2982 : Finally, John Reppy's loop analysis in MLRISC, further lowers the 2983 : probability of the 'then' branch because of the loop in the else 2984 : branch. 2985 : 2986 : 2987 : Graphical Viewing: 2988 : ------------------ 2989 : I merely plugged in Allen's graphical viewers into the compiler. The 2990 : additional code is not much. At the top level, saying: 2991 : 2992 : Control.MLRISC.getFlag "cfg-graphical-view" := true; 2993 : 2994 : will display the graphical view of the control flow graph just before 2995 : back-patching. daVinci must be in your path for this to work. If 2996 : daVinci is not available, then the default viewer can be changed 2997 : using: 2998 : 2999 : Control.MLRISC.getString "viewer" 3000 : 3001 : which can be set to "dot" or "vcg" for the corresponding viewers. Of 3002 : course, these viewers must be in your path. 3003 : 3004 : The above will display the compilation unit at the level of clusters, 3005 : many of which are small, boring, and un-interesting. Also setting: 3006 : 3007 : Control.MLRISC.getInt "cfg-graphical-view_size" 3008 : 3009 : will display clusters that are larger than the value set by the above. 3010 : 3011 : 3012 : ---------------------------------------------------------------------- 3013 : blume 1159 Name: Matthias Blume 3014 : Date: 2002/03/21 22:20:00 EST 3015 : Tag: blume-20020321-kmp-bugfix 3016 : Description: 3017 : 3018 : Changed the interface to the KMP routine in PreString and fixed 3019 : a minor bug in one place where it was used. 3020 : 3021 : ---------------------------------------------------------------------- 3022 : leunga 1156 Name: Allen Leung 3023 : leunga 1158 Date: 2002/03/21 20:30:00 EST 3024 : Tag: leunga-20020321-cfg 3025 : Description: 3026 : 3027 : Fixed a potential problem in cfg edge splitting. 3028 : 3029 : ---------------------------------------------------------------------- 3030 : Name: Allen Leung 3031 : leunga 1156 Date: 2002/03/21 17:15:00 EST 3032 : Tag: leunga-20020321-x86-fp-cfg 3033 : Description: 3034 : 3035 : 1. Recoded the buggy parts of x86-fp. 3036 : 3037 : a. All the block reordering code has been removed. 3038 : We now depend on the block placement phases to do this work. 3039 : 3040 : b. Critical edge splitting code has been simplified and moved into the 3041 : CFG modules, as where they belong. 3042 : 3043 : Both of these were quite buggy and complex. The code is now much, much 3044 : simpler. 3045 : 3046 : 2. X86 backend. 3047 : 3048 : a. Added instructions for 64-bit support. Instruction selection for 3049 : 64-bit has not been committed, however, since that 3050 : requires changes to MLTREE which haven't been approved by 3051 : Lal and John. 3052 : 3053 : b. Added support for FUCOMI and FUCOMIP when generating code for 3054 : PentiumPro and above. We only generate these instructions in 3055 : the fast-fp mode. 3056 : 3057 : c. Added cases for JP and JNP in X86FreqProps. 3058 : 3059 : 3. CFG 3060 : 3061 : CFG now has a bunch of methods for edge splitting and merging. 3062 : 3063 : 4. Machine description. 3064 : 3065 : John's simplification of MLTREE_BASIS.fcond broke a few machine 3066 : description things: 3067 : 3068 : rtl-build.{sig,sml} and hppa.mdl fixed. 3069 : 3070 : NOTE: the machine description stuff in the repository is still broken. 3071 : Again, I can't put my fixes in because that involves 3072 : changes to MLTREE. 3073 : 3074 : ---------------------------------------------------------------------- 3075 : blume 1145 Name: Matthias Blume 3076 : blume 1155 Date: 2002/03/20 15:55:00 EST 3077 : Tag: blume-20020320-kmp 3078 : Description: 3079 : 3080 : Implemented Knuth-Morris-Pratt string matching in PreString and used 3081 : it for String.isSubstring, Substring.isSubstring, and 3082 : Substring.position. 3083 : 3084 : (Might need some stress-testing. Simple examples worked fine.) 3085 : 3086 : ---------------------------------------------------------------------- 3087 : Name: Matthias Blume 3088 : blume 1152 Date: 2002/03/19 16:37:00 EST 3089 : Tag: blume-20020319-witnesses 3090 : Description: 3091 : 3092 : Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib. 3093 : 3094 : This implements a generic mechanism for changing constness qualifiers 3095 : anywhere within big C types without resorting to outright "casts". 3096 : (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you 3097 : modify the constness at the outermost level.) 3098 : The implementation of "convert" is based on the idea of "witness" 3099 : values -- values that are not used by the operation but whose types 3100 : "testify" to their applicability. On the implementation side, "convert" 3101 : is simply a projection (returning its second curried argument). With 3102 : cross-module inlining, it should not result in any machine code being 3103 : generated. 3104 : 3105 : ---------------------------------------------------------------------- 3106 : Name: Matthias Blume 3107 : blume 1148 Date: 2002/03/15 16:40:00 EST 3108 : Tag: blume-20020315-basis 3109 : Description: 3110 : 3111 : Provided (preliminary?) implementations for 3112 : 3113 : {String,Substring}.{concatWith,isSuffix,isSubstring} 3114 : 3115 : and 3116 : 3117 : Substring.full 3118 : 3119 : Those are in the Basis spec but they were missing in SML/NJ. 3120 : 3121 : ---------------------------------------------------------------------- 3122 : Name: Matthias Blume 3123 : blume 1145 Date: 2002/03/14 21:30:00 EST 3124 : Tag: blume-20020314-controls 3125 : Description: 3126 : 3127 : Controls: 3128 : --------- 3129 : 3130 : 1. Factored out the recently-added Controls : CONTROLS stuff and put 3131 : it into its own library$/controls-lib.cm. The source tree for 3132 : this is under src/smlnj-lib/Controls. 3133 : 3134 : 2. Changed the names of types and functions in this interface, so they 3135 : make a bit more "sense": 3136 : 3137 : module -> registry 3138 : 'a registry -> 'a group 3139 : 3140 : 3. The interface now deals in ref cells only. The getter/setter interface 3141 : is (mostly) gone. 3142 : 3143 : 4. Added a function that lets one register an already-existing ref cell. 3144 : 3145 : 5. Made the corresponding modifications to the rest of the code so that 3146 : everything compiles again. 3147 : 3148 : 6. Changed the implementation of Controls.MLRISC back to something closer 3149 : to the original. In particular, this module (and therefore MLRISC) 3150 : does not depend on Controls. There now is some link-time code in 3151 : int-sys.sml that registers the MLRISC controls with the Controls 3152 : module. 3153 : 3154 : CM: 3155 : --- 3156 : 3157 : * One can now specify the lambda-split aggressiveness in init.cmi. 3158 : 3159 : ---------------------------------------------------------------------- 3160 : leunga 1142 Name: Allen Leung 3161 : Date: 2002/03/13 17:30:00 EST 3162 : Tag: leunga-20020313-x86-fp-unary 3163 : Description: 3164 : 3165 : Bug fix for: 3166 : 3167 : > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml 3168 : > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002 3169 : > - fun f(x,(y,z)) = Real.~ y; 3170 : > [autoloading] 3171 : > [autoloading done] 3172 : > fchsl (%eax), 184(%esp) 3173 : > Error: MLRisc bug: X86MCEmitter.emitInstr 3174 : > 3175 : > uncaught exception Error 3176 : > raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19 3177 : 3178 : The problem was that the code generator did not generate any fp registers 3179 : in this case, and the ra didn't know that it needed to run the X86FP phase to 3180 : translate the pseudo fp instruction. This only happened with unary fp 3181 : operators in certain situations. 3182 : 3183 : ---------------------------------------------------------------------- 3184 : blume 1137 Name: Matthias Blume 3185 : blume 1140 Date: 2002/03/13 14:00:00 EST 3186 : Tag: blume-20020313-overload-etc 3187 : Description: 3188 : 3189 : 1. Added _overload as a synonym for overload for backward compatibility. 3190 : (Control.overloadKW must be true for either version to be accepted.) 3191 : 3192 : 2. Fixed bug in install script that caused more things to be installed 3193 : than what was requested in config/targets. 3194 : 3195 : 3. Made CM aware of the (_)overload construct so that autoloading 3196 : works. 3197 : 3198 : ---------------------------------------------------------------------- 3199 : Name: Matthias Blume 3200 : blume 1138 Date: 2002/03/12 22:03:00 EST 3201 : Tag: blume-20020312-url 3202 : Description: 3203 : 3204 : Forgot to update BOOT and srcarchiveurl. 3205 : 3206 : ---------------------------------------------------------------------- 3207 : Name: Matthias Blume 3208 : blume 1137 Date: 2002/03/12 17:30:00 EST 3209 : Tag: blume-20020312-version110392 3210 : Description: 3211 : 3212 : Yet another version number bump (because of small changes to the 3213 : binfile format). Version number is now 110.39.2. NEW BOOTFILES! 3214 : 3215 : Changes: 3216 : 3217 : The new pid generation scheme described a few weeks ago was overly 3218 : complicated. I implemented a new mechanism that is simpler and 3219 : provides a bit more "stability": Once CM has seen a compilation 3220 : unit, it keeps its identity constant (as long as you do not delete 3221 : those crucial CM/GUID/* files). This means that when you change 3222 : blume 1145 an interface, compile, then go back to the old interface, and 3223 : blume 1137 compile again, you arrive at the original pid. 3224 : 3225 : There now also is a mechanism that instructs CM to use the plain 3226 : environment hash as a module's pid (effectively making its GUID 3227 : the empty string). For this, "noguid" must be specified as an 3228 : option to the .sml file in question within its .cm file. 3229 : This is most useful for code that is being generated by tools such 3230 : as ml-nlffigen (because during development programmers tend to 3231 : erase the tool's entire output directory tree including CM's cached 3232 : GUIDs). "noguid" is somewhat dangerous (since it can be used to locally 3233 : revert to the old, broken behavior of SML/NJ, but in specific cases 3234 : where there is no danger of interface confusion, its use is ok 3235 : (I think). 3236 : 3237 : ml-nlffigen by default generates "noguid" annotations. They can be 3238 : turned off by specifying -guid in its command line. 3239 : 3240 : ---------------------------------------------------------------------- 3241 : george 1136 Name: Lal George 3242 : Date: 2002/03/12 12 14:42:36 EST 3243 : Tag: george-20020312-frequency-computation 3244 : Description: 3245 : 3246 : Integrated jump chaining and static block frequency into the 3247 : compiler. More details and numbers later. 3248 : leunga 1025 3249 : george 1003 ---------------------------------------------------------------------- 3250 : george 1133 Name: Lal George 3251 : Date: 2002/03/11 11 22:38:53 EST 3252 : Tag: george-20020311-jump-chain-elim 3253 : Description: 3254 : 3255 : Tested the jump chain elimination on all architectures (except the 3256 : hppa). This is on by default right now and is profitable for the 3257 : alpha and x86, however, it may not be profitable for the sparc and ppc 3258 : when compiling the compiler. 3259 : 3260 : The gc test will typically jump to a label at the end of the cluster, 3261 : where there is another jump to an external cluster containing the actual 3262 : code to invoke gc. This is to allow factoring of common gc invocation 3263 : sequences. That is to say, we generate: 3264 : 3265 : f: 3266 : testgc 3267 : ja L1 % jump if above to L1 3268 : 3269 : L1: 3270 : jmp L2 3271 : 3272 : 3273 : After jump chain elimination the 'ja L1' instructions is converted to 3274 : 'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end 3275 : up being implemented in their long form (if L2 is far away) using: 3276 : 3277 : jbe L3 % jump if below or equal to L3 3278 : jmp L2 3279 : L3: 3280 : ... 3281 : 3282 : 3283 : For large compilation units L2 may be far away. 3284 : 3285 : 3286 : ---------------------------------------------------------------------- 3287 : blume 1132 Name: Matthias Blume 3288 : Date: 2002/03/11 13:30:00 EST 3289 : Tag: blume-20020311-mltreeeval 3290 : Description: 3291 : 3292 : A functor parameter was missing. 3293 : 3294 : ---------------------------------------------------------------------- 3295 : leunga 1130 Name: Allen Leung 3296 : leunga 1131 Date: 2002/03/11 10:30:00 EST 3297 : leunga 1142 Tag: leunga-20020311-runtime-string0 3298 : leunga 1131 Description: 3299 : 3300 : The representation of the empty string now points to a 3301 : legal null terminated C string instead of unit. It is now possible 3302 : to convert an ML string into C string with InlineT.CharVector.getData. 3303 : This compiles into one single machine instruction. 3304 : 3305 : ---------------------------------------------------------------------- 3306 : Name: Allen Leung 3307 : leunga 1130 Date: 2002/03/10 23:55:00 EST 3308 : Tag: leunga-20020310-x86-call 3309 : Description: 3310 : 3311 : Added machine generation for CALL instruction (relative displacement mode) 3312 : 3313 : ---------------------------------------------------------------------- 3314 : blume 1128 Name: Matthias Blume 3315 : Date: 2002/03/08 16:05:00 3316 : Tag: blume-20020308-entrypoints 3317 : Description: 3318 : 3319 : Version number bumped to 110.39.1. NEW BOOTFILES! 3320 : 3321 : Entrypoints: non-zero offset into a code object where execution should begin. 3322 : 3323 : - Added the notion of an entrypoint to CodeObj. 3324 : - Added reading/writing of entrypoint info to Binfile. 3325 : - Made runtime system bootloader aware of entrypoints. 3326 : - Use the address of the label of the first function given to mlriscGen 3327 : as the entrypoint. This address is currently always 0, but it will 3328 : not be 0 once we turn on block placement. 3329 : - Removed the linkage cluster code (which was The Other Way(tm) of dealing 3330 : with entry points) from mlriscGen. 3331 : 3332 : ---------------------------------------------------------------------- 3333 : leunga 1127 Name: Allen Leung 3334 : Date: 2002/03/07 20:45:00 EST 3335 : Tag: leunga-20020307-x86-cmov 3336 : Description: 3337 : 3338 : Bug fixes for CMOVcc on x86. 3339 : 3340 : 1. Added machine code generation for CMOVcc 3341 : 2. CMOVcc is now generated in preference over SETcc on PentiumPro or above. 3342 : 3. CMOVcc cannot have an immediate operand as argument. 3343 : 3344 : ---------------------------------------------------------------------- 3345 : blume 1126 Name: Matthias Blume 3346 : Date: 2002/03/07 16:15:00 EST 3347 : Tag: blume-20020307-controls 3348 : Description: 3349 : 3350 : This is a very large but mostly boring patch which makes (almost) 3351 : every tuneable compiler knob (i.e., pretty much everything under 3352 : Control.* plus a few other things) configurable via both the command 3353 : line and environment variables in the style CM did its configuration 3354 : until now. 3355 : 3356 : Try starting sml with '-h' (or, if you are brave, '-H') 3357 : 3358 : To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which 3359 : implements the underlying generic mechanism. 3360 : 3361 : The interface to some of the existing such facilities has changed somewhat. 3362 : For example, the MLRiscControl module now provides mkFoo instead of getFoo. 3363 : (The getFoo interface is still there for backward-compatibility, but its 3364 : use is deprecated.) 3365 : 3366 : The ml-build script passes -Cxxx=yyy command-line arguments through so 3367 : that one can now twiddle the compiler settings when using this "batch" 3368 : compiler. 3369 : 3370 : TODO items: 3371 : 3372 : We should go through and throw out all controls that are no longer 3373 : connected to anything. Moreover, we should go through and provide 3374 : meaningful (and correct!) documentation strings for those controls 3375 : that still are connected. 3376 : 3377 : Currently, multiple calls to Controls.new are accepted (only the first 3378 : has any effect). Eventually we should make sure that every control 3379 : is being made (via Controls.new) exactly once. Future access can then 3380 : be done using Controls.acc. 3381 : 3382 : Finally, it would probably be a good idea to use the getter-setter 3383 : interface to controls rather than ref cells. For the time being, both 3384 : styles are provided by the Controls module, but getter-setter pairs are 3385 : better if thread-safety is of any concern because they can be wrapped. 3386 : 3387 : ***************************************** 3388 : 3389 : One bug fix: The function blockPlacement in three of the MLRISC 3390 : backpatch files used to be hard-wired to one of two possibilities at 3391 : link time (according to the value of the placementFlag). But (I 3392 : think) it should rather sense the flag every time. 3393 : 3394 : ***************************************** 3395 : 3396 : Other assorted changes (by other people who did not supply a HISTORY entry): 3397 : 3398 : 1. the cross-module inliner now works much better (Monnier) 3399 : 2. representation of weights, frequencies, and probabilities in MLRISC 3400 : changed in preparation of using those for weighted block placement 3401 : (Reppy, George) 3402 : 3403 : ---------------------------------------------------------------------- 3404 : george 1116 Name: Lal George 3405 : george 1124 Date: 2002/03/07 14:44:24 EST 2002 3406 : Tag: george-20020307-weighted-block-placement 3407 : 3408 : Tested the weighted block placement optimization on all architectures 3409 : (except the hppa) using AMPL to generate the block and edge frequencies. 3410 : Changes were required in the machine properties to correctly 3411 : categorize trap instructions. There is an MLRISC flag 3412 : "weighted-block-placement" that can be used to enable weighted block 3413 : placement, but this will be ineffective without block/edge 3414 : frequencies (coming soon). 3415 : 3416 : 3417 : ---------------------------------------------------------------------- 3418 : Name: Lal George 3419 : george 1116 Date: 2002/03/05 17:24:48 EST 3420 : Tag: george-20020305-linkage-cluster 3421 : 3422 : george 1124 In order to support the block placement optimization, a new cluster 3423 : is generated as the very first cluster (called the linkage cluster). 3424 : It contains a single jump to the 'real' entry point for the compilation 3425 : unit. Block placement has no effect on the linkage cluster itself, but 3426 : all the other clusters have full freedom in the manner in which they 3427 : reorder blocks or functions. 3428 : george 1116 3429 : On the x86 the typical linkage code that is generated is: 3430 : ---------------------- 3431 : .align 2 3432 : L0: 3433 : addl L1-L0, 72(%esp) 3434 : george 1124 jmp L1 3435 : george 1116 3436 : 3437 : .align 2 3438 : L1: 3439 : ---------------------- 3440 : 3441 : 72(%esp) is the memory location for the stdlink register. This 3442 : must contain the address of the CPS function being called. In the 3443 : george 1124 above example, it contains the address of L0; before 3444 : george 1116 calling L1 (the real entry point for the compilation unit), it 3445 : must contain the address for L1, and hence 3446 : 3447 : addlL1-L0, 72(%esp) 3448 : 3449 : george 1124 I have tested this on all architectures except the hppa.The increase 3450 : in code size is of course negligible 3451 : george 1116 3452 : ---------------------------------------------------------------------- 3453 : leunga 1115 Name: Allen Leung 3454 : Date: 2002/03/03 13:20:00 EST 3455 : Tag: leunga-20020303-mlrisc-tools 3456 : 3457 : Added #[ ... ] expressions to mlrisc tools 3458 : 3459 : ---------------------------------------------------------------------- 3460 : blume 1096 Name: Matthias Blume 3461 : blume 1098 Date: 2002/02/27 12:29:00 EST 3462 : Tag: blume-20020227-cdebug 3463 : Description: 3464 : 3465 : - made types in structure C and C_Debug to be equal 3466 : - got rid of code duplication (c-int.sml vs. c-int-debug.sml) 3467 : - there no longer is a C_Int_Debug (C_Debug is directly derived from C) 3468 : 3469 : ---------------------------------------------------------------------- 3470 : Name: Matthias Blume 3471 : blume 1096 Date: 2002/02/26 12:00:00 EST 3472 : Tag: blume-20020226-ffi 3473 : Description: 3474 : 3475 : 1. Fixed a minor bug in CM's "noweb" tool: 3476 : If numbering is turned off, then truly don't number (i.e., do not 3477 : supply the -L option to noweb). The previous behavior was to supply 3478 : -L'' -- which caused noweb to use the "default" line numbering scheme. 3479 : Thanks to Chris Richards for pointing this out (and supplying the fix). 3480 : 3481 : 2. Once again, I reworked some aspects of the FFI: 3482 : 3483 : A. The incomplete/complete type business: 3484 : 3485 : - Signatures POINTER_TO_INCOMPLETE_TYPE and accompanying functors are 3486 : gone! 3487 : - ML types representing an incomplete type are now *equal* to 3488 : ML types representing their corresponding complete types (just like 3489 : in C). This is still safe because ml-nlffigen will not generate 3490 : RTTI for incomplete types, nor will it generate functions that 3491 : require access to such RTTI. But when ML code generated from both 3492 : incomplete and complete versions of the C type meet, the ML types 3493 : are trivially interoperable. 3494 : 3495 : NOTE: These changes restore the full generality of the translation 3496 : (which was previously lost when I eliminated functorization)! 3497 : 3498 : B. Enum types: 3499 : 3500 : - Structure C now has a type constructor "enum" that is similar to 3501 : how the "su" constructor works. However, "enum" is not a phantom 3502 : type because each "T enum" has values (and is isomorphic to 3503 : MLRep.Signed.int). 3504 : - There are generic access operations for enum objects (using 3505 : MLRep.Signed.int). 3506 : - ml-nlffigen will generate a structure E_foo for each "enum foo". 3507 : * The structure contains the definition of type "mlrep" (the ML-side 3508 : representation type of the enum). Normally, mlrep is the same 3509 : as "MLRep.Signed.int", but if ml-nlffigen was invoked with "-ec", 3510 : then mlrep will be defined as a datatype -- thus facilitating 3511 : pattern matching on mlrep values. 3512 : ("-ec" will be suppressed if there are duplicate values in an 3513 : enumeration.) 3514 : * Constructors ("-ec") or values (no "-ec") e_xxx of type mlrep 3515 : will be generated for each C enum constant xxx. 3516 : * Conversion functions m2i and i2m convert between mlrep and 3517 : MLRep.Signed.int. (Without "-ec", these functions are identities.) 3518 : * Coversion functions c and ml convert between mlrep and "tag enum". 3519 : * Access functions (get/set) fetch and store mlrep values. 3520 : - By default (unless ml-nlffigen was invoked with "-nocollect"), unnamed 3521 : enumerations are merged into one single enumeration represented by 3522 : structure E_'. 3523 : 3524 : ---------------------------------------------------------------------- 3525 : leunga 1080 Name: Allen Leung 3526 : leunga 1094 Date: 2002/02/25 04:45:00 EST 3527 : Tag: leunga-20020225-cps-spill 3528 : 3529 : This is a new implementation of the CPS spill phase. 3530 : The new phase is in the new file compiler/CodeGen/cpscompile/spill-new.sml 3531 : In case of problems, replace it with the old file spill.sml 3532 : 3533 : The current compiler runs into some serious performance problems when 3534 : constructing a large record. This can happen when we try to compile a 3535 : structure with many items. Even a very simple structure like the following 3536 : makes the compiler slow down. 3537 : 3538 : structure Foo = struct 3539 : val x_1 = 0w1 : Word32.int 3540 : val x_2 = 0w2 : Word32.int 3541 : val x_3 = 0w3 : Word32.int 3542 : ... 3543 : val x_N = 0wN : Word32.int 3544 : end 3545 : 3546 : The following table shows the compile time, from N=1000 to N=4000, 3547 : with the old compiler: 3548 : 3549 : N 3550 : 1000 CPS 100 spill 0.04u 0.00s 0.00g 3551 : MLRISC ra 0.06u 0.00s 0.05g 3552 : (spills = 0 reloads = 0) 3553 : TOTAL 0.63u 0.07s 0.21g 3554 : 3555 : 1100 CPS 100 spill 8.25u 0.32s 0.64g 3556 : MLRISC ra 5.68u 0.59s 3.93g 3557 : (spills = 0 reloads = 0) 3558 : TOTAL 14.71u 0.99s 4.81g 3559 : 3560 : 1500 CPS 100 spill 58.55u 2.34s 1.74g 3561 : MLRISC ra 5.54u 0.65s 3.91g 3562 : (spills = 543 reloads = 1082) 3563 : TOTAL 65.40u 3.13s 6.00g 3564 : 3565 : 2000 CPS 100 spill 126.69u 4.84s 3.08g 3566 : MLRISC ra 0.80u 0.10s 0.55g 3567 : (spills = 42 reloads = 84) 3568 : TOTAL 129.42u 5.10s 4.13g 3569 : 3570 : 3000 CPS 100 spill 675.59u 19.03s 11.64g 3571 : MLRISC ra 2.69u 0.27s 1.38g 3572 : (spills = 62 reloads = 124) 3573 : TOTAL 682.48u 19.61s 13.99g 3574 : 3575 : 4000 CPS 100 spill 2362.82u 56.28s 43.60g 3576 : MLRISC ra 4.96u 0.27s 2.72g 3577 : (spills = 85 reloads = 170) 3578 : TOTAL 2375.26u 57.21s 48.00g 3579 : 3580 : As you can see the old cps spill module suffers from some serious 3581 : leunga 1115 performance problem. But since I cannot decipher the old code fully, 3582 : instead of patching the problems up, I'm reimplementing it 3583 : leunga 1094 with a different algorithm. The new code is more modular, 3584 : smaller when compiled, and substantially faster 3585 : (O(n log n) time and O(n) space). Timing of the new spill module: 3586 : 3587 : 4000 CPS 100 spill 0.02u 0.00s 0.00g 3588 : MLRISC ra 0.25u 0.02s 0.15g 3589 : (spills=1 reloads=3) 3590 : TOTAL 7.74u 0.34s 1.62g 3591 : 3592 : Implementation details: 3593 : 3594 : As far as I can tell, the purpose of the CPS spill module is to make sure the 3595 : number of live variables at any program point (the bandwidth) 3596 : does not exceed a certain limit, which is determined by the 3597 : size of the spill area. 3598 : 3599 : When the bandwidth is too large, we decrease the register pressure by 3600 : packing live variables into spill records. How we achieve this is 3601 : completely different than what we did in the old code. 3602 : 3603 : First, there is something about the MLRiscGen code generator 3604 : that we should be aware of: 3605 : 3606 : o MLRiscGen performs code motion! 3607 : 3608 : In particular, it will move floating point computations and 3609 : address computations involving only the heap pointer to 3610 : their use sites (if there is only a single use). 3611 : What this means is that if we have a CPS record construction 3612 : statement 3613 : 3614 : RECORD(k,vl,w,e) 3615 : 3616 : we should never count the new record address w as live if w 3617 : has only one use (which is often the case). 3618 : 3619 : We should do something similar to floating point, but the transformation 3620 : there is much more complex, so I won't deal with that. 3621 : 3622 : Secondly, there are now two new cps primops at our disposal: 3623 : 3624 : 1. rawrecord of record_kind option 3625 : This pure operator allocates some uninitialized storage from the heap. 3626 : There are two forms: 3627 : 3628 : rawrecord NONE [INT n] allocates a tagless record of length n 3629 : rawrecord (SOME rk) [INT n] allocates a tagged record of length n 3630 : and initializes the tag. 3631 : 3632 : 2. rawupdate of cty 3633 : rawupdate cty (v,i,x) 3634 : Assigns to x to the ith component of record v. 3635 : The storelist is not updated. 3636 : 3637 : We use these new primops for both spilling and increment record construction. 3638 : 3639 : 1. Spilling. 3640 : 3641 : This is implemented with a linear scan algorithm (but generalized 3642 : to trees). The algorithm will create a single spill record at the 3643 : beginning of the cps function and use rawupdate to spill to it, 3644 : and SELECT or SELp to reload from it. So both spills and reloads 3645 : are fine-grain operations. In contrast, in the old algorithm 3646 : "spills" have to be bundled together in records. 3647 : 3648 : Ideally, we should sink the spill record construction to where 3649 : it is needed. We can even split the spill record into multiple ones 3650 : at the places where they are needed. But CPS is not a good 3651 : representation for global code motion, so I'll keep it simple and 3652 : am not attempting this. 3653 : 3654 : 2. Incremental record construction (aka record splitting). 3655 : 3656 : Long records with many component values which are simulatenously live 3657 : (recall that single use record addresses are not considered to 3658 : be live) are constructed with rawrecord and rawupdate. 3659 : We allocate space on the heap with rawrecord first, then gradually 3660 : fill it in with rawupdate. This is the technique suggested to me 3661 : by Matthias. 3662 : 3663 : Some restrictions on when this is applicable: 3664 : 1. It is not a VECTOR record. The code generator currently does not handle 3665 : this case. VECTOR record uses double indirection like arrays. 3666 : 2. All the record component values are defined in the same "basic block" 3667 : as the record constructor. This is to prevent speculative 3668 : record construction. 3669 : 3670 : ---------------------------------------------------------------------- 3671 : Name: Allen Leung 3672 : leunga 1086 Date: 2002/02/22 01:02:00 EST 3673 : Tag: leunga-20020222-mlrisc-tools 3674 : 3675 : Minor bug fixes in the parser and rewriter 3676 : 3677 : ---------------------------------------------------------------------- 3678 : Name: Allen Leung 3679 : leunga 1085 Date: 2002/02/21 20:20:00 EST 3680 : Tag: leunga-20020221-peephole 3681 : 3682 : Regenerated the peephole files. Some contained typos in the specification 3683 : and some didn't compile because of pretty printing bugs in the old version 3684 : of 'nowhere'. 3685 : 3686 : ---------------------------------------------------------------------- 3687 : Name: Allen Leung 3688 : leunga 1079 Date: 2002/02/19 20:20:00 EST 3689 : Tag: leunga-20020219-mlrisc-tools 3690 : Description: 3691 : 3692 : Minor bug fixes to the mlrisc-tools library: 3693 : 3694 : 1. Fixed up parsing colon suffixed keywords 3695 : 2. Added the ability to shut the error messages up 3696 : 3. Reimplemented the pretty printer and fixed up/improved 3697 : the pretty printing of handle and -> types. 3698 : 4. Fixed up generation of literal symbols in the nowhere tool. 3699 : 5. Added some SML keywords to to sml.sty 3700 : 3701 : ---------------------------------------------------------------------- 3702 : Name: Matthias Blume 3703 : blume 1078 Date: 2002/02/19 16:20:00 EST 3704 : Tag: blume-20020219-cmffi 3705 : Description: 3706 : 3707 : A wild mix of changes, some minor, some major: 3708 : 3709 : * All C FFI-related libraries are now anchored under $c: 3710 :$/c.cm --> $c/c.cm 3711 :$/c-int.cm --> $c/internals/c-int.cm 3712 :$/memory.cm --> $c/memory/memory.cm 3713 : 3714 : * "make" tool (in CM) now treats its argument pathname slightly 3715 : differently: 3716 : 1. If the native expansion is an absolute name, then before invoking 3717 : the "make" command on it, CM will apply OS.Path.mkRelative 3718 : (with relativeTo = OS.FileSys.getDir()) to it. 3719 : 2. The argument will be passed through to subsequent phases of CM 3720 : processing without "going native". In particular, if the argument 3721 : was an anchored path, then "make" will not lose track of that anchor. 3722 : 3723 : * Compiler backends now "know" their respective C calling conventions 3724 : instead of having to be told about it by ml-nlffigen. This relieves 3725 : ml-nlffigen from one of its burdens. 3726 : 3727 : * The X86Backend has been split into X86CCallBackend and X86StdCallBackend. 3728 : 3729 : * Export C_DEBUG and C_Debug from$c/c.cm. 3730 : 3731 : * C type encoding in ml-nlffi-lib has been improved to model the conceptual 3732 : subtyping relationship between incomplete pointers and their complete 3733 : counterparts. For this, ('t, 'c) ptr has been changed to 'o ptr -- 3734 : with the convention of instantiating 'o with ('t, 'c) obj whenever 3735 : the pointer target type is complete. In the incomplete case, 'o 3736 : will be instantiated with some "'c iobj" -- a type obtained by 3737 : using one of the functors PointerToIncompleteType or PointerToCompleteType. 3738 : 3739 : Operations that work on both incomplete and complete pointer types are 3740 : typed as taking an 'o ptr while operations that require the target to 3741 : be known are typed as taking some ('t, 'c) obj ptr. 3742 : 3743 : voidptr is now a bit "more concrete", namely "type voidptr = void ptr'" 3744 : where void is an eqtype without any values. This makes it possible 3745 : to work on voidptr values using functions meant to operate on light 3746 : incomplete pointers. 3747 : 3748 : * As a result of the above, signature POINTER_TO_INCOMPLETE_TYPE has 3749 : been vastly simplified. 3750 : 3751 : ---------------------------------------------------------------------- 3752 : Name: Matthias Blume 3753 : blume 1076 Date: 2002/02/19 10:48:00 EST 3754 : Tag: blume-20020219-pqfix 3755 : Description: 3756 : 3757 : Applied Chris Okasaki's bug fix for priority queues. 3758 : 3759 : ---------------------------------------------------------------------- 3760 : Name: Matthias Blume 3761 : blume 1073 Date: 2002/02/15 17:05:00 3762 : blume 1069 Tag: Release_110_39 3763 : Description: 3764 : 3765 : blume 1073 Last-minute retagging is becoming a tradition... :-( 3766 : 3767 : This is the working release 110.39. 3768 : 3769 : ---------------------------------------------------------------------- 3770 : Name: Matthias Blume 3771 : Date: 2002/02/15 16:00:00 EST 3772 : Tag: Release_110_39-orig 3773 : Description: 3774 : 3775 : blume 1069 Working release 110.39. New bootfiles. 3776 : 3777 : blume 1073 (Update: There was a small bug in the installer so it wouldn't work 3778 : with all shells. So I retagged. -Matthias) 3779 : 3780 : blume 1069 ---------------------------------------------------------------------- 3781 : Name: Matthias Blume 3782 : blume 1068 Date: 2002/02/15 14:17:00 EST 3783 : Tag: blume-20020215-showbindings 3784 : Description: 3785 : 3786 : Added EnvRef.listBoundSymbols and CM.State.showBindings. Especially 3787 : the latter can be useful for exploring what bindings are available at 3788 : the interactive prompt. (The first function returns only the list 3789 : of symbols that are really bound, the second prints those but also the 3790 : ones that CM's autoloading mechanism knows about.) 3791 : 3792 : ---------------------------------------------------------------------- 3793 : Name: Matthias Blume 3794 : blume 1067 Date: 2002/02/15 12:08:00 EST 3795 : Tag: blume-20020215-iptrs 3796 : Description: 3797 : 3798 : Two improvements to ml-nlffigen: 3799 : 3800 : 1. Write files only if they do not exist or if their current contents 3801 : do not coincide with what's being written. (That is, avoid messing 3802 : with the time stamps unless absolutely necessary.) 3803 : 3804 : 2. Implement a "repository" mechanism for generated files related 3805 : to "incomplete pointer types". See the README file for details. 3806 : 3807 : ---------------------------------------------------------------------- 3808 : Name: Matthias Blume 3809 : blume 1066 Date: 2002/02/14 11:50:00 EST 3810 : Tag: blume-20020214-quote 3811 : Description: 3812 : 3813 : Added a type 't t_' to tag.sml (in ml-nlffi-lib.cm). This is required 3814 : because of the new and improved tag generation scheme. (Thanks to Allen 3815 : Leung for pointing it out.) 3816 : 3817 : ---------------------------------------------------------------------- 3818 : george 1065 Name: Lal George 3819 : Date: 2002/02/14 09:55:27 EST 2002 3820 : Tag: george-20020214-isabelle-bug 3821 : Description: 3822 : 3823 : Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation 3824 : of Isabelle on the x86. 3825 : 3826 : From Allen: 3827 : ----------- 3828 : I've found the problem: 3829 : 3830 : in ra-core.sml, I use the counter "blocked" to keep track of the 3831 : true number of elements in the freeze queue. When the counter goes 3832 : to zero, I skip examining the queue. But I've messed up the 3833 : bookkeeping in combine(): 3834 : 3835 : else (); 3836 : case !ucol of 3837 : PSEUDO => (if !cntv > 0 then 3838 : (if !cntu > 0 then blocked := !blocked - 1 else (); 3839 : ^^^^^^^^^^^^^^^^^^^^^^^ 3840 : moveu := mergeMoveList(!movev, !moveu) 3841 : ) 3842 : else (); 3843 : 3844 : combine() is called to coalesce two nodes u and v. 3845 : I think I was thinking that if the move counts of u and v are both 3846 : greater than zero then after they are coalesced then one node is 3847 : removed from the freeze queue. Apparently I was thinking that 3848 : both u and v are of low degree, but that's clearly not necessarily true. 3849 : 3850 : 3851 : 02/12/2002: 3852 : Here's the patch. HOL now compiles. 3853 : 3854 : I don't know how this impact on performance (compile 3855 : time or runtime). This bug caused the RA (especially on the x86) 3856 : to go thru the potential spill phase when there are still nodes on the 3857 : freeze queue. 3858 : 3859 : 3860 : 3861 : 3862 : ---------------------------------------------------------------------- 3863 : blume 1058 Name: Matthias Blume 3864 : blume 1064 Date: 2002/02/13 22:40:00 EST 3865 : Tag: blume-20020213-fptr-rtti 3866 : Description: 3867 : 3868 : Fixed a bug in ml-nlffigen that was introduced with one of the previous 3869 : updates. 3870 : 3871 : ---------------------------------------------------------------------- 3872 : Name: Matthias Blume 3873 : blume 1063 Date: 2002/02/13 16:41:00 EST 3874 : Tag: blume-20020213-cmlpq 3875 : Description: 3876 : 3877 : Added new priority queue export symbols (which have just been added to 3878 : smlnj-lib.cm) to CML's version of smlnj-lib.cm. (Otherwise CML would 3879 : not compile and the installer would choke.) 3880 : 3881 : ---------------------------------------------------------------------- 3882 : Name: Matthias Blume 3883 : blume 1062 Date: 2002/02/13 16:15:00 EST 3884 : Tag: blume-20020213-various 3885 : Description: 3886 : 3887 : 1. More tweaks to ml-nlffigen: 3888 : 3889 : - better internal datastructures (resulting in slight speedup) 3890 : - "-match" option requires exact match 3891 : - "localized" gensym counters (untagged structs/unions nested within 3892 : other structs/unions or within typedefs get a fresh counter; their 3893 : tag will be prefixed by a concatenation of their parents' tags) 3894 : - bug fixes (related to calculation of transitive closure of types 3895 : to be included in the output) 3896 : 3897 : 2. Minor Basis updates: 3898 : 3899 : - added implementations for List.collate and Option.app 3900 : 3901 : ---------------------------------------------------------------------- 3902 : Name: Matthias Blume 3903 : blume 1060 Date: 2002/02/11 15:55:00 EST 3904 : Tag: blume-20020211-gensym 3905 : Description: 3906 : 3907 : Added a "-gensym" option to command line of ml-nlffigen. This can be 3908 : used to specify a "stem" -- a string that is inserted in all "gensym'd" 3909 : names (ML structure names that correspond to unnamed C structs, unions, 3910 : and enums), so that separate runs of ml-nlffigen do not clash. 3911 : 3912 : ---------------------------------------------------------------------- 3913 : Name: Matthias Blume 3914 : blume 1059 Date: 2002/02/11 12:05:00 EST 3915 : Tag: blume-20020211-gensml 3916 : Description: 3917 : 3918 : A quick fix for a problem with GenSML (in the pgraph-util library): 3919 : Make generation of toplevel "local" optional. (Strictly speaking, 3920 : signature definitions within "local" are not legal SML.) 3921 : 3922 : Other than that: updates to INSTALL and cm/TODO. 3923 : 3924 : ---------------------------------------------------------------------- 3925 : Name: Matthias Blume 3926 : blume 1058 Date: 2002/02/08 15:00:00 EST 3927 : Tag: blume-20020208-uniquepid 3928 : Description: 3929 : 3930 : 0. Version number has been bumped to 110.38.1. NEW BOOTFILES!!! 3931 : 3932 : 1. The installer (config/install.sh) has gotten smarter: 3933 : 3934 : - Configuration options are a bit easier to specify now 3935 : (in config/targets). 3936 : - Bug in recognizing .tar.bz2 files fixed. 3937 : - Installer automatically resolves dependencies between 3938 : configuration options (e.g., if you ask for eXene, you will 3939 : also get cml -- regardless whether you asked for it or not). 3940 : - Installer can run in "quieter mode" by setting the environment 3941 : variable INSTALL_QUIETLY to "true". "Quieter" does not mean 3942 : "completely silent", though. 3943 : - Build HashCons library as part of smlnj-lib. 3944 : 3945 : 2. A new scheme for assigning persistent identifiers to compilation 3946 : units (and, by extension, to types etc.) has been put into place. 3947 : This fixes a long-standing bug where types and even dynamic values 3948 : can get internally confused, thereby compromising type safety 3949 : (abstraction) and dynamic correctness. See 3950 : 3951 : http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz 3952 : 3953 : for an example of how things could go wrong until now. 3954 : 3955 : The downside of the new scheme is that pids are not quite as 3956 : persistent as they used to be: CM will generate a fresh pid 3957 : for every compilation unit that it thinks it sees for the first 3958 : time. That means that if you compile starting from a clean, fresh 3959 : source tree at two different times, you end up with different 3960 : binaries. 3961 : 3962 : Cutoff recompilation, however, has not been compromised because 3963 : CM keeps pid information in special caches between runs. 3964 : 3965 : ---------------------------------------------------------------------- 3966 : george 1053 Name: Lal George 3967 : george 1055 Date: 2002/02/07 15:34:13 EST 2002 3968 : Tag: 3969 : Description: 3970 : 3971 : Compilers that generate assembly code may produce global labels 3972 : whose value is resolved at link time. The various peephole optimization 3973 : modules did not take this in account. 3974 : 3975 : TODO. The Labels.addrOf function should really return an option 3976 : type so that clients are forced to deal with this issue, rather 3977 : than an exception being raised. 3978 : 3979 : ---------------------------------------------------------------------- 3980 : Name: Lal George 3981 : george 1053 Date: 2002/02/06 13:55:02 EST 3982 : Tag: george-20020206-ra-breakup 3983 : Description: 3984 : 3985 : 1. A bug fix from Allen. 3986 : 3987 : A typo causes extra fstp %st(0)'s to be generated at compensation 3988 : edges, which might cause stack underflow traps at runtime. This 3989 : occurs in fft where there are extraneous fstps right before the 'into' 3990 : trap instruction (in this case they are harmless since none of the 3991 : integers overflow.) 3992 : 3993 : george 1054 2. Pulled out various utility modules that were embedded in the modules 3994 : george 1053 of the register allocator. I need these modules for other purposes, but 3995 : george 1054 they are not complete enough to put into a library (just yet). 3996 : george 1053 ---------------------------------------------------------------------- 3997 : blume 1049 Name: Matthias Blume 3998 : Date: 2002/01/31 16:05:00 EST 3999 : Tag: blume-20020131-sparc-ccalls 4000 : Description: 4001 : 4002 : 1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes) 4003 : of extra stack space by mistake. Fixed. 4004 : 4005 : 2. Bug in logic of handling of command-line options in ml-nlffigen fixed. 4006 : 4007 : ---------------------------------------------------------------------- 4008 : leunga 1048 Name: Allen Leung 4009 : Date: 2002/01/30 4010 : Tag: leunga-20020130-nowhere-bug-fix 4011 : Description: 4012 : 4013 : MLRISC bug fixes: 4014 : 1. Fixed a bindings computation bug in the 'nowhere' program generator tool. 4015 : 2. MachineInt.fromString was negating its value. 4016 : 4017 : ---------------------------------------------------------------------- 4018 : blume 1039 Name: Matthias Blume 4019 : blume 1047 Date: 2002/01/29 4020 : Tag: blume-20020129-INSTALL 4021 : Description: 4022 : 4023 : - Added somewhat detailed installation instructions (file INSTALL). 4024 : - Fixed curl-detection bug in config/install.sh. 4025 : - It is now possible to select the URL getter using the URLGETTER 4026 : environment variable: 4027 : 4028 : not set / "unknown" --> automatic detection (script tries wget, 4029 : curl, and lynx) 4030 : "wget" / "curl" / "lynx" --> use the specified program (script "knows" 4031 : how to properly invoke them) 4032 : other --> use \$URLGETTER directly, it must take 4033 : precisely two command-line arguments 4034 : (source URL and destination file name) 4035 : 4036 : ---------------------------------------------------------------------- 4037 : Name: Matthias Blume 4038 : blume 1044 Date: 2002/01/28 4039 : blume 1045 Tag: blume-20020128-sparc-ccalls 4040 : Description: 4041 : 4042 : - Fixed problem with calculation of "used" registers in sparc-c-calls. 4043 : - Make use of the allocParam argument in sparc-c-calls. 4044 : 4045 : ---------------------------------------------------------------------- 4046 : Name: Matthias Blume 4047 : Date: 2002/01/28 4048 : blume 1044 Tag: blume-20020128-allocParam 4049 : Description: 4050 : 4051 : John Reppy: Changes c-calls API to accept client-callback for 4052 : allocating extra stack space. 4053 : me: Corresponding changes to mlriscGen (using a dummy argument that 4054 : does not change the current behavior). 4055 : 4056 : ---------------------------------------------------------------------- 4057 : Name: Matthias Blume 4058 : blume 1040 Date: 2002/01/28 12:00:00 4059 : Tag: Release_110_38 4060 : Description: 4061 : 4062 : This time for real!!! 4063 : 4064 : ---------------------------------------------------------------------- 4065 : Name: Matthias Blume 4066 : blume 1039 Date: 2002/01/28 10:56:00 EST 4067 : Tag: blume-20020128-retraction 4068 : Description: 4069 : 4070 : 0. Retracted earlier 110.38. (The Release_110_38 tag has been replaced 4071 : with blume-Release_110_38-retracted.) 4072 : 4073 : 1. Fixed a problem with incorrect rounding modes in real64.sml. 4074 : (Thanks to Andrew Mccreight .) 4075 : 4076 : 2. A bug in ml-nlffigen related to the handling of unnamed structs, unions, 4077 : and enums fixed. The naming of corresponding ML identifiers should 4078 : now be consistent again. 4079 : 4080 : ---------------------------------------------------------------------- 4081 : leunga 1038 Name: Allen Leung 4082 : Date: 2002/01/27 4083 : Tag: leunga-20020127-nowhere 4084 : Description: 4085 : 4086 : Added a target called nowhere in the configuration scripts. 4087 : Enabling this will build the MLRISC 'nowhere' tool (for translating 4088 : programs with where-clauses into legal SML code) during installation. 4089 : 4090 : ---------------------------------------------------------------------- 4091 : blume 1036 Name: Matthias Blume 4092 : leunga 1038 Date: 2002/01/25 21:27:00 EST 4093 : blume 1039 Tag: blume-Release_110_38-retracted 4094 : blume 1037 Description: 4095 : 4096 : Call it a (working) release! Version is 110.38. Bootfiles are ready. 4097 : 4098 : README will be added later. 4099 : 4100 : blume 1039 !!! NOTE: Re-tagged as blume-Release_110_38-retracted. Original tag 4101 : (Release_110_38) removed. Reason: Last-minute bug fixes. 4102 : 4103 : blume 1037 ---------------------------------------------------------------------- 4104 : Name: Matthias Blume 4105 : blume 1036 Date: 2002/01/25 4106 : Tag: blume-20020125-ffi 4107 : Description: 4108 : 4109 : A large number of tweaks and improvements to ml-nlffi-lib and 4110 : ml-nlffigen: 4111 : 4112 : - ML represenation types have been streamlined 4113 : - getter and setter functions work with concrete values, not abstract 4114 : ones where possible 4115 : - ml-nlffigen command line more flexible (see README file there) 4116 : - some bugs have been fixed (hopefully) 4117 : 4118 : ---------------------------------------------------------------------- 4119 : george 1034 Name: Lal George 4120 : Date: 2002/01/24 4121 : Tag: george-20020124-risc-ra-interface 4122 : Description: 4123 : 4124 : There is a dramatic simplification in the interface to the 4125 : register allocator for RISC architectures as a result of making 4126 : parallel copy instructions explicit. 4127 : 4128 : ---------------------------------------------------------------------- 4129 : blume 1028 Name: Matthias Blume 4130 : blume 1032 Date: 2002/01/22 4131 : Tag: blume-20020122-x86-ccalls 4132 : Description: 4133 : 4134 : Bug fix for c-calls on x86 (having to do with how char- and 4135 : short-arguments are being handled). 4136 : 4137 : ---------------------------------------------------------------------- 4138 : Name: Matthias Blume 4139 : blume 1031 Date: 2002/01/21 4140 : Tag: blume-20020121-ff 4141 : Description: 4142 : 4143 : Another day of fiddling with the FFI... 4144 : 4145 : 1. Bug fix/workaround: CKIT does not complain about negative array 4146 : dimensions, so ml-nlffigen has to guard itself against this possibility. 4147 : (Otherwise a negative dimension would send it into an infinite loop.) 4148 : 4149 : 2. Some of the abstract types (light objects, light pointers, most "base" 4150 : types) in structure C are now eqtypes. 4151 : 4152 : 3. Added constructors and test functions for NULL function pointers. 4153 : 4154 : ---------------------------------------------------------------------- 4155 : Name: Matthias Blume 4156 : blume 1028 Date: 2002/01/18 4157 : blume 1030 Tag: blume-20020118-ready-for-new-release 4158 : Description: 4159 : 4160 : Made config/srcarchiveurl point to a new place. (Will provide boot 4161 : files shortly.) 4162 : 4163 : Maybe we christen this to be 110.38? 4164 : 4165 : ---------------------------------------------------------------------- 4166 : Name: Matthias Blume 4167 : Date: 2002/01/18 4168 : blume 1029 Tag: blume-20020118-more-ffifiddle 4169 : Description: 4170 : 4171 : Today's FFI fiddling: 4172 : 4173 : - Provided a structure CGetSet with "convenient" versions of C.Get.* and 4174 : C.Set.* that use concrete (MLRep.*) arguments and results instead 4175 : of abstract ones. 4176 : 4177 : - Provided word-style bit operations etc. for "int" representation 4178 : types in MLRep.SBitops where ranges over Char, Int, Short, 4179 : and Long. 4180 : 4181 : ---------------------------------------------------------------------- 4182 : Name: Matthias Blume 4183 : Date: 2002/01/18 4184 : blume 1028 Tag: blume-20020118-use-x86-fp 4185 : Description: 4186 : 4187 : Now that x86-fast-fp seems to be working, I turned it back on again 4188 : by default. (Seems to work fine now, even with the FFI.) 4189 : 4190 : Other than that, I added some documentation about the FFI to 4191 : src/ml-nlffigen/README and updated the FFI test examples in 4192 : src/ml-nlffi-lib/Tests/*. 4193 : 4194 : ---------------------------------------------------------------------- 4195 : leunga 1025 Name: Allen Leung 4196 : Date: 2002/01/17 4197 : Tag: leunga-20020117-x86-fast-fp-call 4198 : Description: 4199 : 4200 : 1. Fixed a problem with handling return fp values when x86's fast fp 4201 : mode is turned on. 4202 : 4203 : 2. Minor pretty printing fix for cellset. Print %st(0) as %st(0) instead 4204 : of %f32. 4205 : 4206 : 3. Added a constructor INT32lit to the ast of MLRISC tools. 4207 : 4208 : ---------------------------------------------------------------------- 4209 : blume 1021 Name: Matthias Blume 4210 : Date: 2002/01/16 4211 : Tag: blume-20020116-ffifiddle 4212 : Description: 4213 : 4214 : More fiddling with the FFI interface: 4215 : 4216 : - Make constness 'c instead of rw wherever possible. This eliminates 4217 : the need for certain explicit coercions. (However, due to ML's 4218 : value polymorphism, there will still be many cases where explicit 4219 : coercions are necessary. Phantom types are not the whole answer 4220 : to modeling a subtyping relationship in ML.) 4221 : 4222 : - ro/rw coersions for pointers added. (Avoids the detour through */&.) 4223 : 4224 : - "printf" test example added to src/ml-nlffi-lib/Tests. (Demonstrates 4225 : clumsy workaround for varargs problem.) 4226 : 4227 : ---------------------------------------------------------------------- 4228 : george 1016 Name: Lal George 4229 : Date: 2002/01/15 4230 : Tag: 4231 : Description: 4232 : 4233 : 1. Since COPY instructions are no longer native to the architecture, 4234 : a generic functor can be used to implement the expandCopies function. 4235 : 4236 : 2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a 4237 : TEXT segment. 4238 : 4239 : ---------------------------------------------------------------------- 4240 : blume 1011 Name: Matthias Blume 4241 : blume 1015 Date: 2002/01/15 4242 : Tag: blume-20020115-ffiupdates 4243 : Description: 4244 : 4245 : 1. Fix for bug resulting in single-precision float values being returned 4246 : incorrectly from FFI calls. 4247 : 4248 : 2. Small modifications to C FFI API: 4249 : 4250 : - memory-allocation routines return straight objects (no options) 4251 : and raise an exception in out-of-memory situations 4252 : - unsafe extensions to cast between function pointers and pointers 4253 : from/to ints 4254 : - added structure C_Debug as an alternative to structure C where 4255 : pointer-dereferencing (|*| and |*!) always check for null-pointers 4256 : - added open_lib' to DynLinkage; open_lib' works like open_lib 4257 : but also takes a (possibly empty) list of existing library handles 4258 : that the current library depends on 4259 : 4260 : ---------------------------------------------------------------------- 4261 : Name: Matthias Blume 4262 : blume 1011 Date: 2002/01/10 4263 : Tag: blume-20020110-newffigen 4264 : Description: 4265 : 4266 : 1. Updates to portable graph code. 4267 : 4268 : 2. Major update to ml-nlffigen and ml-nlffi-lib. Things are much 4269 : more scalable now so that even huge interfaces such as the one 4270 : for GTK compile in finite time and space. :-) 4271 : See src/ml-nlffigen/README for details on what's new. 4272 : 4273 : ---------------------------------------------------------------------- 4274 : george 1003 Name: Lal George 4275 : george 1009 Date: 2001/01/09 14:31:35 EST 2002 4276 : Tag: george-20011206-rm-native-copy 4277 : Description: 4278 : 4279 : Removed the native COPY and FCOPY instructions 4280 : from all the architectures and replaced it with the 4281 : explicit COPY instruction from the previous commit. 4282 : 4283 : It is now possible to simplify many of the optimizations 4284 : modules that manipulate copies. This has not been 4285 : done in this change. 4286 : 4287 : ---------------------------------------------------------------------- 4288 : Name: Lal George 4289 : george 1003 Date: 2001/12/06 16:50:13 EST 2001 4290 : Tag: george-20011206-mlrisc-instruction 4291 : Description: 4292 : george 824 4293 : george 1003 Changed the representation of instructions from being fully abstract 4294 : to being partially concrete. That is to say: 4295 : 4296 : from 4297 : type instruction 4298 : 4299 : to 4300 : type instr (* machine instruction *) 4301 : 4302 : datatype instruction = 4303 : LIVE of {regs: C.cellset, spilled: C.cellset} 4304 : | KILL of {regs: C.cellset, spilled: C.cellset} 4305 : | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list} 4306 : | ANNOTATION of {i: instruction, a: Annotations.annotation} 4307 :