@@ -123,29 +123,25 @@ object Objects:
123
123
/**
124
124
* Rerepsents values that are instances of the specified class.
125
125
*
126
- * For immutable classes (classes without mutable fields, non-transitive), the parameter regions
127
- * is always empty and `owner` is `NoSymbol`.
128
- *
129
126
* Note that the 2nd parameter block does not take part in the definition of equality.
130
127
*/
131
128
case class OfClass private (
132
- klass : ClassSymbol , outer : Value , ctor : Symbol , args : List [Value ], env : Env .Data ,
133
- regions : Regions .Data , owner : Symbol )(
129
+ klass : ClassSymbol , outer : Value , ctor : Symbol , args : List [Value ], env : Env .Data )(
134
130
valsMap : mutable.Map [Symbol , Value ], varsMap : mutable.Map [Symbol , Heap .Addr ], outersMap : mutable.Map [ClassSymbol , Value ])
135
131
extends Ref (valsMap, varsMap, outersMap):
136
132
def widenedCopy (outer : Value , args : List [Value ], env : Env .Data ): OfClass =
137
- new OfClass (klass, outer, ctor, args, env, regions, owner )(this .valsMap, this .varsMap, outersMap)
133
+ new OfClass (klass, outer, ctor, args, env)(this .valsMap, this .varsMap, outersMap)
138
134
139
135
def show (using Context ) =
140
136
val valFields = vals.map(_.show + " -> " + _.show)
141
137
" OfClass(" + klass.show + " , outer = " + outer + " , args = " + args.map(_.show) + " , vals = " + valFields + " )"
142
138
143
139
object OfClass :
144
140
def apply (
145
- klass : ClassSymbol , outer : Value , ctor : Symbol , args : List [Value ], env : Env .Data , regions : Regions . Data , owner : Symbol )(
141
+ klass : ClassSymbol , outer : Value , ctor : Symbol , args : List [Value ], env : Env .Data )(
146
142
using Context
147
143
): OfClass =
148
- val instance = new OfClass (klass, outer, ctor, args, env, regions, owner )(
144
+ val instance = new OfClass (klass, outer, ctor, args, env)(
149
145
valsMap = mutable.Map .empty, varsMap = mutable.Map .empty, outersMap = mutable.Map .empty
150
146
)
151
147
instance.initOuter(klass, outer)
@@ -515,7 +511,7 @@ object Objects:
515
511
if height == 0 then Cold
516
512
else Fun (code, thisV.widen(height), klass, env.widen(height))
517
513
518
- case ref @ OfClass (klass, outer, _, args, env, _, _ ) =>
514
+ case ref @ OfClass (klass, outer, _, args, env) =>
519
515
if height == 0 then
520
516
Cold
521
517
else
@@ -747,11 +743,7 @@ object Objects:
747
743
// klass.enclosingMethod returns its primary constructor
748
744
Env .resolveEnv(klass.owner.enclosingMethod, outer, summon[Env .Data ]).getOrElse(Cold -> Env .NoEnv )
749
745
750
- // Immutable objects do not care about owners and context
751
- val owner = if isMutable(klass) then State .currentObject else NoSymbol
752
- val regions = if isMutable(klass) then summon[Regions .Data ] else Regions .empty
753
-
754
- val instance = OfClass (klass, outerWidened, ctor, args.map(_.value), envWidened, regions, owner)
746
+ val instance = OfClass (klass, outerWidened, ctor, args.map(_.value), envWidened)
755
747
callConstructor(instance, ctor, args)
756
748
instance
757
749
0 commit comments