[MLton-commit] r7368
    Matthew Fluet 
    fluet at mlton.org
       
    Wed Dec  2 14:04:37 PST 2009
    
    
  
The function address of an indirect FFI call is not an argument to the
function.  This fixes a bug where the function address could be
allocated in a caller-save register and incorrectly evicted from the
register allocation, leading to the 'call' instruction attempting to
fetch the address from the uninitialized applyFFTempFun static
temporary variable.
----------------------------------------------------------------------
U   mlton/trunk/mlton/codegen/amd64-codegen/amd64-mlton-basic.fun
----------------------------------------------------------------------
Modified: mlton/trunk/mlton/codegen/amd64-codegen/amd64-mlton-basic.fun
===================================================================
--- mlton/trunk/mlton/codegen/amd64-codegen/amd64-mlton-basic.fun	2009-12-02 22:04:24 UTC (rev 7367)
+++ mlton/trunk/mlton/codegen/amd64-codegen/amd64-mlton-basic.fun	2009-12-02 22:04:33 UTC (rev 7368)
@@ -186,7 +186,7 @@
   val applyFFTempFunContents 
     = makeContents {base = Immediate.label applyFFTempFun,
                     size = wordSize,
-                    class = Classes.CArg}
+                    class = Classes.CStatic}
   val applyFFTempFunContentsOperand
     = Operand.memloc applyFFTempFunContents
   val applyFFTempRegArg = Label.fromString "applyFFTempRegArg"
    
    
More information about the MLton-commit
mailing list