Can you shrink it further?
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Tue Oct 11 08:08:34 PDT 2016
On 10/10/2016 11:00 PM, Stefan Koch wrote:
>
> void popFront3(ref char[] s) @trusted pure nothrow {
> immutable c = s[0];
> uint char_length = 1;
> if (c < 127)
> {
> Lend :
> s = s.ptr[char_length .. s.length];
> } else {
> if ((c & b01100_0000) == 0b1000_0000)
> {
> //just skip one in case this is not the beginning of a code-point
> char
> goto Lend;
> }
> if (c < 192)
> {
> char_length = 2;
> goto Lend;
> }
> if (c < 240)
> {
> char_length = 3;
> goto Lend;
> }
> if (c < 248)
> {
> char_length = 4;
> goto Lend;
> }
> }
> }
Looked at this, still seems to generate a jump forward with ldc. Also,
why do you leave a fallthrough path? Progress needs to be made on all
paths, otherwise we have infinite loops.
Andrei
More information about the Digitalmars-d
mailing list