- Jan 25, 2000
-
-
Simon Peyton Jones authored
Announce 4.06
-
Simon Marlow authored
urk, Solaris sh doesn't understand [^0-9] in patterns, it seems.
-
Julian Seward authored
Add missing final paragraph of explaination about x86 FP trickery.
-
Julian Seward authored
Minor improvements to x86 FP fake-to-real insn translation.
-
Julian Seward authored
genCCall for x86, as supplied, used PUSH et al to move args onto the C stack ready for the call. Reasonable as this seems, it causes a problem with spill code, since the spiller spills relative to %esp and assumes that %esp doesn't move. If the args of a ccall involved any spilled values, the resulting code would be wrong. The One True Way is to do it like a RISC: move args to the stack without adjusting %esp for each argument, then adjust it all at once immediately prior to the call insn and un-adjust it immediately afterwards. genCCall now does this. In general, push/pop and other C-stack effecting operations should not be generated for the same reason.
-
Simon Marlow authored
Add -optCrts-M80m for older compilers. Sigh.
-
sven.panne@aedion.de authored
Added intToWord to PrelAddr. Use it instead of int2Word#-hacks.
-
- Jan 24, 2000
-
-
Julian Seward authored
Start a NOTES file, recording known but un-fixed nativeGen bugs.
-
Julian Seward authored
Fix syntax errors in #ifdef'd Alpha/Sparc bits.
-
Julian Seward authored
Insert large commit message re x86 FP rehash as a comment.
-
Julian Seward authored
ARR_HDR_SIZE --> ARR_WORDS_HDR_SIZE, and derived quantities in Constants.h, Constants.lhs et al are similarly renamed. new constant ARR_PTRS_HDR_SIZE, with corresponding derivatives.
-
Reuben Thomas authored
Changed default paper size for SGML output to A4 (%paper-type%).
-
Julian Seward authored
Major reworking of the x86 floating point code generation. Intel, in their infinite wisdom, selected a stack model for floating point registers on x86. That might have made sense back in 1979 -- nowadays we can see it for the nonsense it really is. A stack model fits poorly with the existing nativeGen infrastructure, which assumes flat integer and FP register sets. Prior to this commit, nativeGen could not generate correct x86 FP code -- to do so would have meant somehow working the register-stack paradigm into the register allocator and spiller, which sounds very difficult. We have decided to cheat, and go for a simple fix which requires no infrastructure modifications, at the expense of generating ropey but correct FP code. All notions of the x86 FP stack and its insns have been removed. Instead, we pretend (to the instruction selector and register allocator) that x86 has six floating point registers, %fake0 .. %fake5, which can be used in the usual flat manner. We further claim that x86 has floating point instructions very similar to SPARC and Alpha, that is, a simple 3-operand register-register arrangement. Code generation and register allocation proceed on this basis. When we come to print out the final assembly, our convenient fiction is converted to dismal reality. Each fake instruction is independently converted to a series of real x86 instructions. %fake0 .. %fake5 are mapped to %st(0) .. %st(5). To do reg-reg arithmetic operations, the two operands are pushed onto the top of the FP stack, the operation done, and the result copied back into the relevant register. There are only six %fake registers because 2 are needed for the translation, and x86 has 8 in total. The translation is inefficient but is simple and it works. A cleverer translation would handle a sequence of insns, simulating the FP stack contents, would not impose a fixed mapping from %fake to %st regs, and hopefully could avoid most of the redundant reg-reg moves of the current translation.
-
Reuben Thomas authored
Added table example.
-
sven.panne@aedion.de authored
Added autoconf magic for size/alignment of some more C types
-
Reuben Thomas authored
Changed double quotes to “ and ”. Improvements to Windows installation instructions.
-
Simon Marlow authored
Update the Hall of Fame.
-
Reuben Thomas authored
Stylesheet used for processing SGML. Initially it's identical to the Cygnus DocBook Tools stylesheet, with %section-autonumber% set to true for HTML, so that all sections are numbered.
-
Reuben Thomas authored
Set SRC_SGML2XXX_OPTS variables rather than SGML2XXX_OPTS
-
Reuben Thomas authored
Wrote 4.06 release notes and updated version numbers in the rest of the user guide.
-
Reuben Thomas authored
Added SGMLSTYLESHEET variable and set SGML2XXX_OPTS to -d $(SGMLSTYLESHEET)
-
Simon Peyton Jones authored
Extra install stuff
-
Simon Marlow authored
Increase the heap size for Parser.hs to 80M (for 4.04).
-
- Jan 23, 2000
-
-
AndyGill authored
GHC now uses the "Hugs" split function, which is believed to have better behaviour: it is not unsafe, is deterministic, and works better with QuickCheck, a major client. Rational for the Record, quoted from Mark Jones mail on the Hugs list: [Mark Jones] A couple of months ago, John Hughes sent me mail about a problem that he had uncovered with the implementation of the Random library in Hugs. He had been using the "split" function in an attempt to generate a stream of random number generators, each of which he hoped would be different from the others. But instead he found that he actually ended with many different copies of the *same* random number generator. A disappointing, and frustratingly non-random result. If you don't happen to recall, split is a member of the RandomGen class, with type RandomGen g => g -> (g,g); it takes a single random number generator as its argument, and returns a pair of two new generators as its result. The only thing that the specification requires is that the two generators returned are (a) distinct and (b) `independently robust' from a statistical point of view. To the best of my knowledge, the implementation in Hugs meets this modest specification. Sadly, assuming only this specification, you cannot write the function that John was looking for and be sure that it will generate more than two different generators. For example, the specification allows even the following trivial implementation for split: split _ = (g1, g2), where g1 and g2 are some arbitrary but constant pair of distinct, and independently robust generators. With this implementation, you can split as often as you want and you'll never get more that two generators. Hugs and GHC (as far as I can tell) both use definitions of the form: split g = (g, f g) for some function f. (My understanding of the code in GHC is that it uses an unsafe function for f, breaking referential transparency; I hope the optimizer knows about this.) Note that this definition returns the argument as a result; the specification doesn't prohibit that; all it requires is that the two results returned be distinct. But if you try to generate a list of n different generators using: take n (iterate (fst . split) g) then you will be sorely disappointed; you might as well have written replicate n g. (On the other hand, if you were lucky enough to have used (snd . split), instead of (fst . split), then you wouldn't have noticed the problem ...) I know very little about the mathematics or pragmatics of random number generators, so I'm not sure that I know how to fix this problem. However, starting from this position of ignorance, I have hacked up a new version of "split" for the standard "StdGen" that will appear in the next release of Hugs (real soon now!). Judging from the tests that I've tried so far, it seems to work much better than the old version. That said: - Take care if you use Random.split in your programs, because it may not do what you expect. - There should probably be an errata about this for the Haskell 98 library report ... if somebody can figure out what it should say. - If you use Hugs, be aware that the implementation of Random.split was hacked up by someone who has no way of justifying that implementation, beyond some simple experiments. - If you know something about the mechanics of random number generators, here's an area where Haskell specifications and implementations could benefit from your knowledge! All the best, Mark [end quote]
-
- Jan 22, 2000
-
-
Simon Marlow authored
Fix bug in async exception handling: the target TSO may have been relocated as a result of a stack overflow. Introduce a new StgTSOWhatNext value "ThreadRelocated", which indicates that this TSO has moved, and the new location is in the link field. The garbage collector shorts these out just like indirections. We have to check for relocated TSOs in killThread# (and any other primops which take a ThreadId# as an argument - there aren't any at present).
-
Simon Marlow authored
- FreeBSD 3+ now known as i386-unknown-freebsd - add alpha-unknown-{linux,freebsd}
-
Simon Marlow authored
freebsd3 ==> freebsd
-
Simon Marlow authored
freebsd3 ==> freebsd
-
Simon Marlow authored
- FreeBSD 3+ is now known as i386-unknown-freebsd (to accomodate forthcoming FreeBSD 4.X - add alpha-unknown-{linux,freebsd}
-
- Jan 20, 2000
-
-
Simon Marlow authored
Remove potentially confusing references to concurrent bundles.
-
Simon Marlow authored
Fairly grotesque hacks to get the HTML docs, which are now generated into a subdirectory by db2html, into a binary dist.
-
Simon Marlow authored
remove ghc/docs/libraries from the bindist, add hslibs/doc
-
Julian Seward authored
trivialCode (x86), when fst arg is immediate, assumed you could reverse the order of operands, but not true for eg subtract. Fixed.
-
Simon Marlow authored
Make this test more comprehensive. We now test +,-,div,mod,quot,rem,gcd,lcm over a range of legal operands, for both Int and Integer.
-
- Jan 19, 2000
-
-
Simon Marlow authored
- add some more test cases, now shows up the minInt bugs in Integer division.
-
Simon Marlow authored
The minInt saga continues: - fix several Integer division-type functions for the case when the dividend == S# (-2147483648#). Pointed out by: Marc Van Dongen <dongen@cs.ucc.ie>
-
Julian Seward authored
amodeToStix: correctly compute offset for CHARLIKE_closure-s.
-
Julian Seward authored
Add comment about code generation for debug tracing.
-
Julian Seward authored
MachCode.stmt2Instrs, StFunBegin, x86 case only: for debugging, generate trace code to print the name of each labelled code block.
-
- Jan 18, 2000
-
-
Julian Seward authored
genCCall for x86 assumed that all args were 4 bytes long :-(. Now works with doubles too.
-