diff -r b5316ef15274 -r f6f68d32de73 compiler/PPCDistinctResultStrategy.st --- a/compiler/PPCDistinctResultStrategy.st Mon Aug 17 12:13:16 2015 +0100 +++ b/compiler/PPCDistinctResultStrategy.st Mon Aug 24 15:34:14 2015 +0100 @@ -11,10 +11,6 @@ !PPCDistinctResultStrategy methodsFor:'as yet unclassified'! -recordFailure: retval - ^ self recordFailure: retval offset: 0 -! - recordFailure: retval offset: offset offset == 0 ifTrue: [ codeGen codeRecordDistinctMatch: nil. @@ -23,10 +19,6 @@ codeGen codeRecordDistinctMatch: nil offset: offset ! -recordMatch: retval - ^ self recordMatch: retval offset: 0 -! - recordMatch: retval offset: offset offset == 0 ifTrue: [ codeGen codeRecordDistinctMatch: retval. @@ -40,6 +32,24 @@ ^ codeGen code: 'self resetDistinct.'. ! +returnFailure: retval offset: offset + (offset == 0) ifFalse: [ + codeGen codeIf: 'currentChar isNil' then: nil else: [ + codeGen code: ('context skip: -', offset asString); codeDot. + ] + ]. + + codeGen codeReturn: [ codeGen codeRecordDistinctFailure: nil ]. +! + +returnMatch: retval offset: offset + (offset == 0) ifFalse: [ + codeGen code: 'self back.'. + ]. + + codeGen codeReturn: [ codeGen codeRecordDistinctMatch: retval ]. +! + returnResult: state codeGen codeNl. codeGen codeReturnDistinct.