Skip to content

Commit 2c94bf8

Browse files
committed
kmir/rt/data: remove uneeded state from makeProjectedUpdate function
1 parent f7a840c commit 2c94bf8

File tree

1 file changed

+22
-22
lines changed
  • kmir/src/kmir/kdist/mir-semantics/rt

1 file changed

+22
-22
lines changed

kmir/src/kmir/kdist/mir-semantics/rt/data.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ In contrast to regular write operations, the value does not have to be _mutable_
329329
330330
rule <k> VAL:TypedLocal ~> #markMoved(OLDLOCAL, local(I), PROJECTIONS) ~> CONT
331331
=>
332-
#projectedUpdate(makeProjectedUpdate(toLocal(I), OLDLOCAL, PROJECTIONS, Moved, .Contexts, true, STACK, LOCALS))
332+
#projectedUpdate(makeProjectedUpdate(toLocal(I), OLDLOCAL, PROJECTIONS, .Contexts, true, STACK, LOCALS), Moved)
333333
~> VAL
334334
~> CONT
335335
</k>
@@ -402,12 +402,12 @@ The `#setLocalValue` operation writes a `TypedLocal` value to a given `Place` wi
402402
Write operations to places that include (a chain of) projections are handled by a special rewrite symbol `#projectedUpdate`.
403403

404404
```k
405-
syntax KItem ::= #projectedUpdate ( ProjectedUpdate )
406-
syntax ProjectedUpdate ::= makeProjectedUpdate(WriteTo, TypedLocal, ProjectionElems, TypedLocal, Contexts, Bool, List, List) [function] // total
407-
| ProjectedUpdate(WriteTo, TypedLocal, TypedLocal, Contexts, Bool)
405+
syntax KItem ::= #projectedUpdate ( ProjectedUpdate , TypedLocal )
406+
syntax ProjectedUpdate ::= makeProjectedUpdate(WriteTo, TypedLocal, ProjectionElems, Contexts, Bool, List, List) [function] // total
407+
| ProjectedUpdate(WriteTo, Contexts, Bool)
408408
409409
rule <k> #setLocalValue(place(local(I), PROJ), VAL)
410-
=> #projectedUpdate(makeProjectedUpdate(toLocal(I), {LOCALS[I]}:>TypedLocal, PROJ, VAL, .Contexts, false, STACK, LOCALS))
410+
=> #projectedUpdate(makeProjectedUpdate(toLocal(I), {LOCALS[I]}:>TypedLocal, PROJ, .Contexts, false, STACK, LOCALS), VAL)
411411
...
412412
</k>
413413
<stack> STACK </stack>
@@ -448,16 +448,16 @@ The solution is to use rewrite operations in a downward pass through the project
448448
=> #buildUpdate(typedValue(Range(ELEMS[I <- VAL]), TY, mutabilityMut), CTXS)
449449
[preserves-definedness] // valid list indexing checked upon context construction
450450
451-
rule makeProjectedUpdate(DEST, typedValue(Aggregate(IDX, ARGS), TY, MUT), projectionElemField(fieldIdx(I), _) PROJS, UPDATE, CTXTS, FORCE, STACK, LOCALS)
452-
=> makeProjectedUpdate(DEST, {ARGS[I]}:>TypedLocal, PROJS, UPDATE, CtxField(TY, IDX, ARGS, I) CTXTS, FORCE, STACK, LOCALS)
451+
rule makeProjectedUpdate(DEST, typedValue(Aggregate(IDX, ARGS), TY, MUT), projectionElemField(fieldIdx(I), _) PROJS, CTXTS, FORCE, STACK, LOCALS)
452+
=> makeProjectedUpdate(DEST, {ARGS[I]}:>TypedLocal, PROJS, CtxField(TY, IDX, ARGS, I) CTXTS, FORCE, STACK, LOCALS)
453453
requires 0 <=Int I
454454
andBool I <Int size(ARGS)
455455
andBool isTypedLocal(ARGS[I])
456456
andBool (FORCE orBool MUT ==K mutabilityMut)
457457
[preserves-definedness] // valid list indexing checked
458458
459-
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemIndex(local(LOCAL)) PROJS, UPDATE, CTXTS, FORCE, STACK, LOCALS)
460-
=> makeProjectedUpdate(DEST, {ELEMENTS[#expectUsize({LOCALS[LOCAL]}:>TypedValue)]}:>TypedValue, PROJS, UPDATE, CtxIndex(TY, ELEMENTS, #expectUsize({LOCALS[LOCAL]}:>TypedValue)) CTXTS, FORCE, STACK, LOCALS)
459+
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemIndex(local(LOCAL)) PROJS, CTXTS, FORCE, STACK, LOCALS)
460+
=> makeProjectedUpdate(DEST, {ELEMENTS[#expectUsize({LOCALS[LOCAL]}:>TypedValue)]}:>TypedValue, PROJS, CtxIndex(TY, ELEMENTS, #expectUsize({LOCALS[LOCAL]}:>TypedValue)) CTXTS, FORCE, STACK, LOCALS)
461461
requires 0 <=Int LOCAL
462462
andBool LOCAL <Int size(LOCALS)
463463
andBool isTypedValue(LOCALS[LOCAL])
@@ -468,49 +468,49 @@ The solution is to use rewrite operations in a downward pass through the project
468468
andBool (FORCE orBool MUT ==K mutabilityMut)
469469
[preserves-definedness] // index checked, valid Int can be read, ELEMENT indexable and writeable or forced
470470
471-
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemConstantIndex(OFFSET:Int, _MINLEN, false) PROJS, UPDATE, CTXTS, FORCE, STACK, LOCALS)
472-
=> makeProjectedUpdate(DEST, {ELEMENTS[OFFSET]}:>TypedValue, PROJS, UPDATE, CtxIndex(TY, ELEMENTS, OFFSET) CTXTS, FORCE, STACK, LOCALS)
471+
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemConstantIndex(OFFSET:Int, _MINLEN, false) PROJS, CTXTS, FORCE, STACK, LOCALS)
472+
=> makeProjectedUpdate(DEST, {ELEMENTS[OFFSET]}:>TypedValue, PROJS, CtxIndex(TY, ELEMENTS, OFFSET) CTXTS, FORCE, STACK, LOCALS)
473473
requires 0 <=Int OFFSET
474474
andBool OFFSET <Int size(ELEMENTS)
475475
andBool isTypedValue(ELEMENTS[OFFSET])
476476
andBool (FORCE orBool MUT ==K mutabilityMut)
477477
[preserves-definedness] // ELEMENT indexable and writeable or forced
478478
479-
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemConstantIndex(OFFSET:Int, MINLEN, true) PROJS, UPDATE, CTXTS, FORCE, STACK, LOCALS)
480-
=> makeProjectedUpdate(DEST, {ELEMENTS[OFFSET]}:>TypedValue, PROJS, UPDATE, CtxIndex(TY, ELEMENTS, MINLEN -Int OFFSET) CTXTS, FORCE, STACK, LOCALS)
479+
rule makeProjectedUpdate(DEST, typedValue(Range(ELEMENTS), TY, MUT), projectionElemConstantIndex(OFFSET:Int, MINLEN, true) PROJS, CTXTS, FORCE, STACK, LOCALS)
480+
=> makeProjectedUpdate(DEST, {ELEMENTS[OFFSET]}:>TypedValue, PROJS, CtxIndex(TY, ELEMENTS, MINLEN -Int OFFSET) CTXTS, FORCE, STACK, LOCALS)
481481
requires 0 <Int OFFSET
482482
andBool OFFSET <=Int MINLEN
483483
andBool MINLEN ==Int size(ELEMENTS) // assumed for valid MIR code
484484
andBool isTypedValue(ELEMENTS[MINLEN -Int OFFSET])
485485
andBool (FORCE orBool MUT ==K mutabilityMut)
486486
[preserves-definedness] // ELEMENT indexable and writeable or forced
487487
488-
rule makeProjectedUpdate(_DEST, typedValue(Reference(OFFSET, place(LOCAL, PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, UPDATE, _CTXTS, FORCE, STACK, LOCALS)
489-
=> makeProjectedUpdate(toStack(OFFSET, LOCAL), #localFromFrame({STACK[OFFSET -Int 1]}:>StackFrame, LOCAL, OFFSET), appendP(PLACEPROJ, PROJS), UPDATE, .Contexts, FORCE, STACK, LOCALS)
488+
rule makeProjectedUpdate(_DEST, typedValue(Reference(OFFSET, place(LOCAL, PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, _CTXTS, FORCE, STACK, LOCALS)
489+
=> makeProjectedUpdate(toStack(OFFSET, LOCAL), #localFromFrame({STACK[OFFSET -Int 1]}:>StackFrame, LOCAL, OFFSET), appendP(PLACEPROJ, PROJS), .Contexts, FORCE, STACK, LOCALS)
490490
requires 0 <Int OFFSET
491491
andBool OFFSET <=Int size(STACK)
492492
andBool isStackFrame(STACK[OFFSET -Int 1])
493493
andBool (FORCE orBool MUT ==K mutabilityMut)
494494
[preserves-definedness]
495495
496-
rule makeProjectedUpdate(_DEST, typedValue(Reference(OFFSET, place(local(I), PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, UPDATE, _CTXTS, FORCE, STACK, LOCALS)
497-
=> makeProjectedUpdate(toLocal(I), {LOCALS[I]}:>TypedLocal, appendP(PLACEPROJ, PROJS), UPDATE, .Contexts, FORCE, STACK, LOCALS)
496+
rule makeProjectedUpdate(_DEST, typedValue(Reference(OFFSET, place(local(I), PLACEPROJ), MUT), _, _), projectionElemDeref PROJS, _CTXTS, FORCE, STACK, LOCALS)
497+
=> makeProjectedUpdate(toLocal(I), {LOCALS[I]}:>TypedLocal, appendP(PLACEPROJ, PROJS), .Contexts, FORCE, STACK, LOCALS)
498498
requires OFFSET ==Int 0
499499
andBool 0 <=Int I
500500
andBool I <Int size(LOCALS)
501501
andBool (FORCE orBool MUT ==K mutabilityMut)
502502
[preserves-definedness]
503503
504-
rule makeProjectedUpdate(DEST, TV:TypedValue, .ProjectionElems, NEW, CONTEXTS, FORCE, _, _)
505-
=> ProjectedUpdate(DEST, TV, NEW, CONTEXTS, FORCE)
504+
rule makeProjectedUpdate(DEST, _:TypedValue, .ProjectionElems, CONTEXTS, FORCE, _, _)
505+
=> ProjectedUpdate(DEST, CONTEXTS, FORCE)
506506
507-
rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), _ORIGINAL, NEW, CONTEXTS, false))
507+
rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), CONTEXTS, false), NEW)
508508
=> #setLocalValue(place(local(I), .ProjectionElems), #buildUpdate(NEW, CONTEXTS))
509509
...
510510
</k>
511511
[preserves-definedness] // valid conmtext ensured upon context construction
512512
513-
rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), _ORIGINAL, NEW, CONTEXTS, true))
513+
rule <k> #projectedUpdate(ProjectedUpdate(toLocal(I), CONTEXTS, true), NEW)
514514
=> #forceSetLocal(local(I), #buildUpdate(NEW, CONTEXTS))
515515
...
516516
</k>
@@ -525,7 +525,7 @@ The solution is to use rewrite operations in a downward pass through the project
525525
andBool I <Int size(LOCALS)
526526
[preserves-definedness] // valid list indexing checked
527527
528-
rule <k> #projectedUpdate(ProjectedUpdate(toStack(FRAME, local(I)), _ORIGINAL, NEW, CONTEXTS, _)) => .K ... </k>
528+
rule <k> #projectedUpdate(ProjectedUpdate(toStack(FRAME, local(I)), CONTEXTS, _), NEW) => .K ... </k>
529529
<stack> STACK => STACK[(FRAME -Int 1) <- #updateStackLocal({STACK[FRAME -Int 1]}:>StackFrame, I, #buildUpdate(NEW, CONTEXTS)) ] </stack>
530530
requires 0 <Int FRAME
531531
andBool FRAME <=Int size(STACK)

0 commit comments

Comments
 (0)