[pypy-svn] r46549 - in pypy/dist/pypy/translator/cli: . src
antocuni at codespeak.net
antocuni at codespeak.net
Thu Sep 13 19:31:36 CEST 2007
Author: antocuni
Date: Thu Sep 13 19:31:34 2007
New Revision: 46549
Modified:
pypy/dist/pypy/translator/cli/constant.py
pypy/dist/pypy/translator/cli/cts.py
pypy/dist/pypy/translator/cli/src/pypylib.cs
Log:
implement weakrefs for gencli
Modified: pypy/dist/pypy/translator/cli/constant.py
==============================================================================
--- pypy/dist/pypy/translator/cli/constant.py (original)
+++ pypy/dist/pypy/translator/cli/constant.py Thu Sep 13 19:31:34 2007
@@ -396,8 +396,7 @@
class CLIWeakRefConst(CLIBaseConstMixin, WeakRefConst):
def create_pointer(self, gen):
- gen.ilasm.opcode('ldnull')
- gen.ilasm.new('instance void %s::.ctor(object)' % self.get_type())
+ gen.ilasm.new('instance void %s::.ctor()' % self.get_type())
self.db.const_count.inc('WeakRef')
def get_type(self, include_class=True):
@@ -406,7 +405,6 @@
def initialize_data(self, constgen, gen):
if self.value is not None:
push_constant(self.db, self.value._TYPE, self.value, gen)
- gen.ilasm.call_method(
- 'void %s::set_Target(object)' % self.get_type(), True)
+ gen.ilasm.call_method('void %s::ll_set(object)' % self.get_type(), True)
return True
Modified: pypy/dist/pypy/translator/cli/cts.py
==============================================================================
--- pypy/dist/pypy/translator/cli/cts.py (original)
+++ pypy/dist/pypy/translator/cli/cts.py Thu Sep 13 19:31:34 2007
@@ -104,7 +104,7 @@
char = T('char')
string = T('string')
- weakref = CliClassType('mscorlib', 'System.WeakReference')
+ weakref = CliClassType('pypylib', 'pypy.runtime.WeakReference')
type = CliClassType('mscorlib', 'System.Type')
object = CliClassType('mscorlib', 'System.Object')
list = CliGenericType('pypylib', 'pypy.runtime.List', 1)
@@ -132,7 +132,7 @@
ootype.Class: types.type,
ootype.String: types.string,
ootype.StringBuilder: types.string_builder,
- #WeakGcAddress: types.weakref,
+ ootype.WeakReference: types.weakref,
# maps generic types to their ordinal
ootype.List.SELFTYPE_T: types.list,
Modified: pypy/dist/pypy/translator/cli/src/pypylib.cs
==============================================================================
--- pypy/dist/pypy/translator/cli/src/pypylib.cs (original)
+++ pypy/dist/pypy/translator/cli/src/pypylib.cs Thu Sep 13 19:31:34 2007
@@ -552,6 +552,21 @@
public TValue ll_current_value() { return it.Current.Value; }
}
+ public class WeakReference
+ {
+ System.WeakReference wref;
+
+ public void ll_set(object obj)
+ {
+ this.wref = new System.WeakReference(obj);
+ }
+
+ public object ll_deref()
+ {
+ return this.wref.Target;
+ }
+ }
+
public class Record_Signed_Signed {
public int item0;
public int item1;
More information about the Pypy-commit
mailing list