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

View File

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

View File

@ -11,6 +11,7 @@
// strpbrk(dword text1,text2) --- example: strpbrk("this test", " ckfi") -> return "is test" // strpbrk(dword text1,text2) --- example: strpbrk("this test", " ckfi") -> return "is test"
// strcmp( ESI, EDI) // strcmp( ESI, EDI)
// strlen( EDI) // strlen( EDI)
// utf8_strlen( ESI)
// strcpy( EDI, ESI) --- 0 if == // strcpy( EDI, ESI) --- 0 if ==
// strncpy(dword text1,text2,signed length) // strncpy(dword text1,text2,signed length)
// strcat( EDI, ESI) // strcat( EDI, ESI)
@ -140,6 +141,22 @@ inline strnlen(dword str, dword maxlen)
return cp - str; 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) 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 strnmov strmovn
#define stricmp strcmpi #define stricmp strcmpi
#define strcmpn strncmp #define strcmpn strncmp