@@ -530,7 +530,9 @@ Therefore a heuristics is used here:
530530 _SPAN
531531 )
532532 =>
533- #setTupleArgs(2, getValue(LOCALS, TUPLE)) ~> #execBlock(FIRST)
533+ #setLocalValue(place(local(1), .ProjectionElems), #incrementRef(getValue(LOCALS, CLOSURE)))
534+ ~> #setTupleArgs(2, getValue(LOCALS, TUPLE))
535+ ~> #execBlock(FIRST)
534536 // arguments are tuple components, stored as _2 .. _n
535537 ...
536538 </k>
@@ -547,7 +549,7 @@ Therefore a heuristics is used here:
547549 andBool 0 <=Int TUPLE andBool TUPLE <Int size(LOCALS)
548550 andBool isTypedValue(LOCALS[TUPLE])
549551 andBool isTupleType(lookupTy(tyOfLocal({LOCALS[TUPLE]}:>TypedLocal)))
550- andBool isTypedLocal (LOCALS[CLOSURE])
552+ andBool isTypedValue (LOCALS[CLOSURE])
551553 andBool typeInfoVoidType ==K lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal))
552554 // either the closure ref type is missing from type table
553555 [priority(40), preserves-definedness]
@@ -560,7 +562,9 @@ Therefore a heuristics is used here:
560562 _SPAN
561563 )
562564 =>
563- #setTupleArgs(2, getValue(LOCALS, TUPLE)) ~> #execBlock(FIRST)
565+ #setLocalValue(place(local(1), .ProjectionElems), #incrementRef(getValue(LOCALS, CLOSURE)))
566+ ~> #setTupleArgs(2, getValue(LOCALS, TUPLE))
567+ ~> #execBlock(FIRST)
564568 // arguments are tuple components, stored as _2 .. _n
565569 ...
566570 </k>
@@ -577,7 +581,7 @@ Therefore a heuristics is used here:
577581 andBool 0 <=Int TUPLE andBool TUPLE <Int size(LOCALS)
578582 andBool isTypedValue(LOCALS[TUPLE])
579583 andBool isTupleType(lookupTy(tyOfLocal({LOCALS[TUPLE]}:>TypedLocal)))
580- andBool isTypedLocal (LOCALS[CLOSURE])
584+ andBool isTypedValue (LOCALS[CLOSURE])
581585 // or the closure ref type pointee is missing from the type table
582586 andBool isRefType(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal)))
583587 andBool isTy(pointeeTy(lookupTy(tyOfLocal({LOCALS[CLOSURE]}:>TypedLocal))))
0 commit comments