[pypy-svn] r16107 - pypy/dist/pypy/translator/llvm2/module

ericvrp at codespeak.net ericvrp at codespeak.net
Wed Aug 17 13:12:18 CEST 2005


Author: ericvrp
Date: Wed Aug 17 13:12:13 2005
New Revision: 16107

Modified:
   pypy/dist/pypy/translator/llvm2/module/extfunction.py
   pypy/dist/pypy/translator/llvm2/module/ll_os.py
   pypy/dist/pypy/translator/llvm2/module/support.py
Log:
overallocate one byte for all allocation and zero initialize all allocated data
(this is a quick fix for non null terminated (dynamic) strings




Modified: pypy/dist/pypy/translator/llvm2/module/extfunction.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/module/extfunction.py	(original)
+++ pypy/dist/pypy/translator/llvm2/module/extfunction.py	Wed Aug 17 13:12:13 2005
@@ -11,14 +11,19 @@
 
 gc_boehm = """declare ccc sbyte* %GC_malloc(uint)
 declare ccc sbyte* %GC_malloc_atomic(uint)
+declare ccc sbyte* %memset(sbyte*, int, uint)
 
 internal fastcc sbyte* %gc_malloc(uint %n) {
-    %ptr = call ccc sbyte* %GC_malloc(uint %n)
+    %nn = add uint %n, 1
+    %ptr = call ccc sbyte* %GC_malloc(uint %nn)
+    call ccc sbyte* %memset(sbyte* %ptr, int 0, uint %nn)    ;XXX force non-zero init for testing
     ret sbyte* %ptr
 }
 
 internal fastcc sbyte* %gc_malloc_atomic(uint %n) {
-    %ptr = call ccc sbyte* %GC_malloc_atomic(uint %n)
+    %nn = add uint %n, 1
+    %ptr = call ccc sbyte* %GC_malloc_atomic(uint %nn)
+    call ccc sbyte* %memset(sbyte* %ptr, int 0, uint %nn)    ;XXX force non-zero init for testing
     ret sbyte* %ptr
 }
 """

Modified: pypy/dist/pypy/translator/llvm2/module/ll_os.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/module/ll_os.py	(original)
+++ pypy/dist/pypy/translator/llvm2/module/ll_os.py	Wed Aug 17 13:12:13 2005
@@ -6,7 +6,6 @@
 declare ccc int %write(int, sbyte*, int)
 declare ccc int %read(int, sbyte*, int)
 declare ccc sbyte* %strncpy(sbyte*, sbyte*, int)
-declare ccc int %strlen(sbyte*)
 declare ccc int %isatty(int)
 declare ccc int %stat(sbyte*, [32 x int]*)
 declare ccc int %fstat(int, [32 x int]*)

Modified: pypy/dist/pypy/translator/llvm2/module/support.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/module/support.py	(original)
+++ pypy/dist/pypy/translator/llvm2/module/support.py	Wed Aug 17 13:12:13 2005
@@ -2,6 +2,7 @@
 declare ccc double %pow(double, double)
 declare ccc double %fmod(double, double)
 declare ccc int %puts(sbyte*)
+declare ccc int %strlen(sbyte*)
 """
 
 



More information about the Pypy-commit mailing list