@@ -308,7 +308,7 @@ module internal Memory =
308308 Ref ( BoxedLocation( address, typ))
309309 | Ite iteType -> Merging.guardedMap heapReferenceToBoxReference iteType
310310 | _ -> internalfailf $" Unboxing: expected heap reference, but got {reference}"
311- let private transformBoxedRef ref =
311+ let transformBoxedRef ref =
312312 match ref.term with
313313 | HeapRef _ -> heapReferenceToBoxReference ref
314314 | _ -> ref
@@ -1503,7 +1503,7 @@ module internal Memory =
15031503 | StructField( address, field) ->
15041504 let oldStruct = self.ReadSafe reporter address
15051505 let updatedStruct = guardedWriteStruct guard oldStruct field value
1506- self.WriteSafe reporter None address updatedStruct // is guard needed?
1506+ self.WriteSafe reporter None address updatedStruct
15071507 // TODO: need concrete memory for BoxedLocation?
15081508 | BoxedLocation( address, _) -> self.WriteBoxedLocation guard address value
15091509 | StackBufferIndex( key, index) -> writeStackBuffer key guard index value
@@ -1760,8 +1760,9 @@ module internal Memory =
17601760 if not currentMethod.IsStaticConstructor then
17611761 concreteMemory.StaticFieldChanged field
17621762
1763- member private self.CommonWrite ( reporter : IErrorReporter ) isSafe guard reference value =
1764- let transformed = if isSafe then transformBoxedRef reference else reference
1763+ member private self.CommonWrite ( reporter : IErrorReporter ) guard reference value =
1764+ assert ( if Option.isSome guard then isTrue guard.Value |> not else true )
1765+ let transformed = transformBoxedRef reference
17651766 match transformed.term with
17661767 | Ref address -> self.WriteSafe reporter guard address value
17671768 | DetachedPtr _ -> reporter.ReportFatalError " writing by detached pointer" ( True()) |> ignore
@@ -1771,7 +1772,7 @@ module internal Memory =
17711772 | Ite iteType ->
17721773 let filtered = iteType.filter( fun r -> Pointers.isBadRef r |> isTrue |> not )
17731774 filtered.ToDisjunctiveGvs()
1774- |> List.iter ( fun ( g , r ) -> self.CommonWrite reporter isSafe ( Some g) r value)
1775+ |> List.iter ( fun ( g , r ) -> self.CommonWrite reporter ( Some g) r value)
17751776 | _ -> internalfail $" Writing: expected reference, but got {reference}"
17761777
17771778 // ------------------------------- Allocation -------------------------------
@@ -2088,8 +2089,7 @@ module internal Memory =
20882089 member self.RemoveDelegate sourceRef toRemoveRef typ = self.RemoveDelegate sourceRef toRemoveRef typ
20892090 member self.StringArrayInfo stringAddress length = self.StringArrayInfo stringAddress length
20902091 member self.TypeOfHeapLocation address = self.TypeOfHeapLocation address
2091- member self.Write reporter reference value = self.CommonWrite reporter true None reference value
2092- member self.WriteUnsafe reporter reference value = self.CommonWrite reporter false None reference value
2092+ member self.Write reporter reference value = self.CommonWrite reporter None reference value
20932093 member self.WriteStaticField typ field value = self.CommonWriteStaticField None typ field value
20942094
20952095 type heapReading < 'key , 'reg when 'key : equality and 'key :> IMemoryKey < 'key , 'reg > and 'reg : equality and 'reg :> IRegion < 'reg >> with
@@ -2103,12 +2103,10 @@ module internal Memory =
21032103 let effect = MemoryRegion.map substTerm substType substTime x.memoryObject
21042104 let before = x.picker.extract state
21052105 let after = MemoryRegion.compose before effect
2106- let read region =
2107- assert ( state.memory :? Memory)
2108- let memory = state.memory :?> Memory
2109- let inst typ region = memory.MakeSymbolicHeapRead x.picker key state.startingTime typ region
2110- MemoryRegion.read region key ( x.picker.isDefaultKey state) inst ( fun _ _ -> __ unreachable__())
2111- read after
2106+ assert ( state.memory :? Memory)
2107+ let memory = state.memory :?> Memory
2108+ let inst typ region = memory.MakeSymbolicHeapRead x.picker key state.startingTime typ region
2109+ MemoryRegion.read after key ( x.picker.isDefaultKey state) inst memory.RangeReadingUnreachable
21122110
21132111 type arrayReading with
21142112 interface IMemoryAccessConstantSource with
@@ -2125,12 +2123,10 @@ module internal Memory =
21252123 let before = x.picker.extract state
21262124 MemoryRegion.compose before effect
21272125 else x.memoryObject
2128- let read region =
2129- assert ( state.memory :? Memory)
2130- let memory = state.memory :?> Memory
2131- let inst = memory.MakeArraySymbolicHeapRead x.picker key state.startingTime
2132- MemoryRegion.read region key ( x.picker.isDefaultKey state) inst memory.SpecializedReading
2133- read after
2126+ assert ( state.memory :? Memory)
2127+ let memory = state.memory :?> Memory
2128+ let inst = memory.MakeArraySymbolicHeapRead x.picker key state.startingTime
2129+ MemoryRegion.read after key ( x.picker.isDefaultKey state) inst memory.SpecializedReading
21342130
21352131 type state with
21362132 static member MakeEmpty complete =
0 commit comments