finished the initial variadic arguments handling work
This commit is contained in:
@ -88,19 +88,29 @@ block context...
|
||||
^self.method
|
||||
}
|
||||
|
||||
#method varArgCount
|
||||
#method vargCount
|
||||
{
|
||||
^self basicSize - self class specNumInstVars - self.ntmprs
|
||||
}
|
||||
|
||||
#method vargAt: index
|
||||
{
|
||||
^self basicAt: (index + self class specNumInstVars + self.ntmprs)
|
||||
}
|
||||
}
|
||||
|
||||
#class(#pointer) BlockContext(Context)
|
||||
{
|
||||
#dcl nargs source home origin.
|
||||
|
||||
#method varArgCount
|
||||
#method vargCount
|
||||
{
|
||||
^self.home varArgCount
|
||||
^self.home vargCount
|
||||
}
|
||||
|
||||
#method vargAt: index
|
||||
{
|
||||
^self.home vargAt: index
|
||||
}
|
||||
|
||||
#method fork
|
||||
|
@ -146,10 +146,36 @@ procecure call is treated as if it is a unary message...
|
||||
'Beautiful life' dump.
|
||||
].
|
||||
|
||||
thisContext varArgCount dump.
|
||||
thisContext varArgCount (10, 20) dump.
|
||||
self varg_test (10, 20, 30, 40, 50) dump.
|
||||
self varg_test2 (10, 20, 30, 40, 50) dump.
|
||||
self varg_test3 (10, 20, 30, 40, 50) dump.
|
||||
thisContext vargCount dump.
|
||||
thisContext vargCount dump.
|
||||
}
|
||||
|
||||
|
||||
#method(#class) varg_test()
|
||||
{
|
||||
0 to: (thisContext vargCount - 1) do: [:k |
|
||||
(thisContext vargAt: k) dump.
|
||||
].
|
||||
^999
|
||||
}
|
||||
#method(#class) varg_test2(a,b,c)
|
||||
{
|
||||
0 to: (thisContext vargCount - 1) do: [:k |
|
||||
(thisContext vargAt: k) dump.
|
||||
].
|
||||
^a
|
||||
}
|
||||
#method(#class) varg_test3(a,b,c,d,e,f)
|
||||
{
|
||||
0 to: (thisContext vargCount - 1) do: [:k |
|
||||
(thisContext vargAt: k) dump.
|
||||
].
|
||||
## ^b * 100
|
||||
^f
|
||||
}
|
||||
}
|
||||
|
||||
#extend MyObject
|
||||
|
Reference in New Issue
Block a user