Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4361e00

Browse files
auduchinokKevinRansom
authored andcommitted
Optimize color to lex state conversions in line tokenizer (dotnet#5258)
1 parent8ea71dd commit4361e00

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

‎src/fsharp/service/ServiceLexing.fs‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,13 @@ module internal LexerStateEncoding =
379379

380380
letbitOfBool b=if bthen1else0
381381
letboolOfBit n=(n=1L)
382-
382+
383+
let inlinecolorStateOfLexState(state:FSharpTokenizerLexState)=
384+
enum<FSharpTokenizerColorState>(int32((state&&& lexstateMask)>>> lexstateStart))
385+
386+
let inlinelexStateOfColorState(state:FSharpTokenizerColorState)=
387+
(int64 state<<< lexstateStart)&&& lexstateMask
388+
383389
letencodeLexCont(colorState:FSharpTokenizerColorState)ncomments(b:pos)ifdefStack light=
384390
let mutableifdefStackCount=0
385391
let mutableifdefStackBits=0
@@ -390,8 +396,7 @@ module internal LexerStateEncoding =
390396
ifdefStackBits<-(ifdefStackBits|||(1<<< ifdefStackCount))
391397
ifdefStackCount<- ifdefStackCount+1
392398

393-
letlexstate= int64 colorState
394-
((lexstate<<< lexstateStart)&&& lexstateMask)
399+
lexStateOfColorState colorState
395400
|||((ncomments<<< ncommentsStart)&&& ncommentsMask)
396401
|||((resize32 b.Encoding<<< startPosStart)&&& startPosMask)
397402
|||((resize32(bitOfBool light)<<< hardwhitePosStart)&&& hardwhitePosMask)
@@ -408,7 +413,7 @@ module internal LexerStateEncoding =
408413
letmask=1<<< bit
409414
letifDef=(if ifdefStack&&& mask=0then IfDefIfelse IfDefElse)
410415
ifDefs<-(ifDef,range0)::ifDefs
411-
enum<FSharpTokenizerColorState>(int32((state&&& lexstateMask)>>> lexstateStart)),
416+
colorStateOfLexStatestate,
412417
(int32)((state&&& ncommentsMask)>>> ncommentsStart),
413418
pos.Decode(int32((state&&& startPosMask)>>> startPosStart)),
414419
ifDefs,
@@ -740,16 +745,11 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf,
740745

741746
tokenDataOption, lexintFinal
742747

743-
static memberColorStateOfLexState(lexState:FSharpTokenizerLexState)=
744-
lettag,_ncomments,_position,_ifdefStack,_lightSyntaxStatusInital= LexerStateEncoding.decodeLexCont lexState
745-
tag
748+
static memberColorStateOfLexState(lexState:FSharpTokenizerLexState)=
749+
LexerStateEncoding.colorStateOfLexState lexState
746750

747-
static memberLexStateOfColorState(colorState:FSharpTokenizerColorState)=
748-
letncomments=0L
749-
letposition= pos0
750-
letifdefStack=[]
751-
letlight=true
752-
LexerStateEncoding.encodeLexCont colorState ncomments position ifdefStack light
751+
static memberLexStateOfColorState(colorState:FSharpTokenizerColorState)=
752+
LexerStateEncoding.lexStateOfColorState colorState
753753

754754
[<Sealed>]
755755
typeFSharpSourceTokenizer(defineConstants: string list, filename:Option<string>)=

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp