CMM: utf8_strlen() optimization

git-svn-id: svn://kolibrios.org@5713 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2015-08-10 15:59:20 +00:00
parent 9516fbc07d
commit fd987781a3
3 changed files with 28 additions and 32 deletions

View File

@ -15,7 +15,7 @@ struct UrlsHistory {
void AddUrl();
byte GoBack();
byte GoForward();
};
} BrowserHistory;
dword UrlsHistory::CurrentUrl() {
return #history_list[current].Item;
@ -63,5 +63,3 @@ byte UrlsHistory::GoForward() {
strlcpy(#URL, #history_list[current].Item, sizeof(URL));
return 1;
}
UrlsHistory BrowserHistory;

View File

@ -403,6 +403,15 @@ void Scan(dword id__)
OpenPage();
return;
case REFRESH:
if (http_transfer > 0)
{
StopLoading();
Draw_Window();
}
else OpenPage();
return;
/*
case 011: //Ctrk+K
BufEncode(CH_KOI8);
@ -451,14 +460,7 @@ void Scan(dword id__)
return;
case 054: //F5
IF(address_box.flags & 0b10) return;
case REFRESH:
if (http_transfer > 0)
{
StopLoading();
Draw_Window();
}
else OpenPage();
return;
case 020:
case NEWTAB:
MoveSize(190,80,OLD,OLD);

View File

@ -11,6 +11,7 @@
// strpbrk(dword text1,text2) --- example: strpbrk("this test", " ckfi") -> return "is test"
// strcmp( ESI, EDI)
// strlen( EDI)
// utf8_strlen( ESI)
// strcpy( EDI, ESI) --- 0 if ==
// strncpy(dword text1,text2,signed length)
// strcat( EDI, ESI)
@ -140,6 +141,22 @@ inline strnlen(dword str, dword maxlen)
return cp - str;
}
inline fastcall unsigned int utf8_strlen( ESI)
{
$xor ecx, ecx
_loop:
$lodsb
$test al, al
$jz _done
$and al, 0xc0
$cmp al, 0x80
$jz _loop
$inc ecx
$jmp _loop
_done:
return ECX;
}
inline signed int strcmp(dword text1, text2)
{
@ -916,27 +933,6 @@ inline void debugi(dword d_int)
}
inline fastcall unsigned int utf8_strlen( ESI)
{
$xor ecx, ecx
_loop:
$lodsb
$test al, al
$jz _done
$test al, 0x80
$jz _1
$and al, 0xc0
$cmp al, 0x80
$jz _loop
_1:
$inc ecx
$jmp _loop
_done:
return ECX;
}
#define strnmov strmovn
#define stricmp strcmpi
#define strcmpn strncmp