Skip to content

Commit d36e474

Browse files
KJ-10 Reduce usage isElabIndependent predicate to default elab cooling
1 parent e3e2fa1 commit d36e474

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

semantics/elaborate-blocks.k

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ rule customElabChildren(KL:KLabel) =>
315315
*/
316316
syntax K ::= "isElabNaked" "(" K ")" [function]
317317
rule isElabNaked(K:K) =>
318+
//warning: cannot use ==Bool in the first expression - looks like isTypedExp(Qual) will not be computed
318319
(isRawVal(K) ==K true)
319320
orBool (getKLabel(K) ==KLabel 'TypeName)
320321
orBool (getKLabel(K) ==KLabel 'ClassOrInterfaceType)
@@ -548,13 +549,13 @@ when
548549
549550
rule [elabCoolStatement]:
550551
(elabRes(K:K) => .) ~> elab(_:KLabel(_,, (CHOLE => elabRes(K)),, _))
551-
when
552-
notBool isElabIndependent(K)
552+
/*when
553+
notBool isElabIndependent(K)*/
553554
554-
rule [elabCoolExpressionOrKResult]:
555+
/*rule [elabCoolExpressionOrKResult]:
555556
(elabRes(ElabIndep:K) => .) ~> elab(_:KLabel(_,, (CHOLE => ElabIndep),, _))
556557
when
557-
isElabIndependent(ElabIndep)
558+
isElabIndependent(ElabIndep)*/
558559
559560
/*Was KR:ElabIndependent before, but in fact only KResult may stay free in this position.*/
560561
rule [elabCoolKResult]:
@@ -604,9 +605,11 @@ rule isElab(.KList) => true
604605
Used in defaut cooling rules of elaboration phase, to distinguish between elborated statements and elaborated
605606
expressions. When expressions are cooled they are unwrapped fron thei elabRes() wrapper.
606607
*/
608+
/*
607609
syntax K ::= "isElabIndependent" "(" K ")" [function]
608610
rule isElabIndependent(K:K)
609611
=> (isKResult(K) ==K true) orBool (isTypedExp(K) ==K true)
612+
*/
610613

611614
//@ True if given KList have no terms of the form elabRes(...), false otherwise.
612615
syntax K ::= "haveNoElabRes" "(" KList ")" [function]
@@ -749,7 +752,7 @@ when notBool (X in keys(StEnv))
749752

750753
rule [elabFieldWithQThis]:
751754
elabDispose('Field( 'QThis(Class:ClassType),, X:Id ))
752-
=> elab('Field( 'QThis(Class:ClassType) :: Class,, X )) ?? elab('Field( Class,, X))
755+
=> elab('Field( elabRes('QThis(Class:ClassType) :: Class),, X )) ?? elab('Field( Class,, X))
753756
when
754757
Class =/=K noClass
755758
@@ -1193,7 +1196,7 @@ when
11931196
11941197
rule [elabQNewInstance-resolve-class]:
11951198
(. => resolveInnerClass(QualClass, Name))
1196-
~> elab('QNewInstance(_::QualClass:ClassType,, _:K,,
1199+
~> elab('QNewInstance(elabRes(_::QualClass:ClassType),, _:K,,
11971200
(Name:Id => CHOLE),,
11981201
_))
11991202

@@ -1231,11 +1234,8 @@ rule [existsClass]:
12311234
will be noValue.
12321235
*/
12331236
rule [elab-QNewInstance]:
1234-
elab('QNewInstance(Qual:K,, Arg2:K,, T:RefType,, Arg4:K,, elabRes(ActualArgsList:K),, 'None(.KList)))
1237+
elab('QNewInstance(elabRes(Qual:K),, Arg2:K,, T:RefType,, Arg4:K,, elabRes(ActualArgsList:K),, 'None(.KList)))
12351238
=> elabRes('QNewInstance(Qual,, Arg2,, T,, Arg4,, ActualArgsList,, 'None(.KList)) :: T)
1236-
when
1237-
//warning: cannot use ==Bool in the first expression - looks like isTypedExp(Qual) will not be computed
1238-
(isTypedExp(Qual) ==K true) orBool (Qual ==K noValue)
12391239

12401240
rule [elabInstanceOf]:
12411241
elabDispose('InstanceOf(TE:TypedExp,, RT2:RefType)) => elabRes('InstanceOf(TE,, RT2) :: bool)
@@ -1293,7 +1293,7 @@ rule count(I:Int, .KList) => I::int
12931293
//@ both in elaboration and in execution phase.
12941294
//@ Performance: Using this rule instead of the rule above leads to execution performance decrease by 5\%
12951295
//@ in helloWorld, with medium execution time rising from 9.6s to 10.1s
1296-
rule [elabExpressions]:
1296+
rule [runtime-elabExpressions]:
12971297
KL:KLabel(Ks:KList) => elab(KL(Ks))
12981298
when
12991299
isExpressionLabel(KL)

0 commit comments

Comments
 (0)