Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
6d8359fc
Commit
6d8359fc
authored
Apr 23, 2013
by
Jacek Caban
Committed by
Alexandre Julliard
Apr 23, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jscript: Run some SunSpider benchmarks in interactive mode.
parent
8541f94e
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
302 additions
and
2 deletions
+302
-2
rsrc.rc
dlls/jscript/tests/rsrc.rc
+9
-0
run.c
dlls/jscript/tests/run.c
+69
-2
sunspider-regexp-dna.js
dlls/jscript/tests/sunspider-regexp-dna.js
+0
-0
sunspider-string-base64.js
dlls/jscript/tests/sunspider-string-base64.js
+135
-0
sunspider-string-validate-input.js
dlls/jscript/tests/sunspider-string-validate-input.js
+89
-0
No files found.
dlls/jscript/tests/rsrc.rc
View file @
6d8359fc
...
...
@@ -27,3 +27,12 @@ lang.js 40 "lang.js"
/* @makedep: regexp.js */
regexp.js 40 "regexp.js"
/* @makedep: sunspider-regexp-dna.js */
dna.js 40 "sunspider-regexp-dna.js"
/* @makedep: sunspider-string-base64.js */
base64.js 40 "sunspider-string-base64.js"
/* @makedep: sunspider-string-validate-input.js */
validateinput.js 40 "sunspider-string-validate-input.js"
dlls/jscript/tests/run.c
View file @
6d8359fc
...
...
@@ -1777,13 +1777,12 @@ static void run_from_file(const char *filename)
ok
(
hres
==
S_OK
,
"parse_script failed: %08x
\n
"
,
hres
);
}
static
void
run_from
_res
(
const
char
*
name
)
static
BSTR
load
_res
(
const
char
*
name
)
{
const
char
*
data
;
DWORD
size
,
len
;
BSTR
str
;
HRSRC
src
;
HRESULT
hres
;
strict_dispid_check
=
FALSE
;
test_name
=
name
;
...
...
@@ -1798,6 +1797,16 @@ static void run_from_res(const char *name)
str
=
SysAllocStringLen
(
NULL
,
len
);
MultiByteToWideChar
(
CP_ACP
,
0
,
data
,
size
,
str
,
len
);
return
str
;
}
static
void
run_from_res
(
const
char
*
name
)
{
BSTR
str
;
HRESULT
hres
;
str
=
load_res
(
name
);
SET_EXPECT
(
global_success_d
);
SET_EXPECT
(
global_success_i
);
hres
=
parse_script
(
SCRIPTITEM_GLOBALMEMBERS
,
str
);
...
...
@@ -2304,6 +2313,61 @@ static void run_encoded_tests(void)
ok
(
hres
==
JS_E_INVALID_CHAR
,
"parse_script failed %08x
\n
"
,
hres
);
}
static
void
run_benchmark
(
const
char
*
script_name
)
{
IActiveScriptParse
*
parser
;
IActiveScript
*
engine
;
ULONG
start
,
end
;
BSTR
src
;
HRESULT
hres
;
engine
=
create_script
();
if
(
!
engine
)
return
;
hres
=
IActiveScript_QueryInterface
(
engine
,
&
IID_IActiveScriptParse
,
(
void
**
)
&
parser
);
ok
(
hres
==
S_OK
,
"Could not get IActiveScriptParse: %08x
\n
"
,
hres
);
if
(
FAILED
(
hres
))
{
IActiveScript_Release
(
engine
);
return
;
}
hres
=
IActiveScriptParse_InitNew
(
parser
);
ok
(
hres
==
S_OK
,
"InitNew failed: %08x
\n
"
,
hres
);
hres
=
IActiveScript_SetScriptSite
(
engine
,
&
ActiveScriptSite
);
ok
(
hres
==
S_OK
,
"SetScriptSite failed: %08x
\n
"
,
hres
);
hres
=
IActiveScript_AddNamedItem
(
engine
,
testW
,
SCRIPTITEM_ISVISIBLE
|
SCRIPTITEM_ISSOURCE
);
ok
(
hres
==
S_OK
,
"AddNamedItem failed: %08x
\n
"
,
hres
);
hres
=
IActiveScript_SetScriptState
(
engine
,
SCRIPTSTATE_STARTED
);
ok
(
hres
==
S_OK
,
"SetScriptState(SCRIPTSTATE_STARTED) failed: %08x
\n
"
,
hres
);
src
=
load_res
(
script_name
);
start
=
GetTickCount
();
hres
=
IActiveScriptParse_ParseScriptText
(
parser
,
src
,
NULL
,
NULL
,
NULL
,
0
,
0
,
0
,
NULL
,
NULL
);
end
=
GetTickCount
();
ok
(
hres
==
S_OK
,
"%s: ParseScriptText failed: %08x
\n
"
,
script_name
,
hres
);
trace
(
"%s ran in %u ms
\n
"
,
script_name
,
end
-
start
);
IActiveScript_Release
(
engine
);
IActiveScriptParse_Release
(
parser
);
SysFreeString
(
src
);
}
static
void
run_benchmarks
(
void
)
{
trace
(
"Running benchmarks...
\n
"
);
run_benchmark
(
"dna.js"
);
run_benchmark
(
"base64.js"
);
run_benchmark
(
"validateinput.js"
);
}
static
BOOL
check_jscript
(
void
)
{
IActiveScriptProperty
*
script_prop
;
...
...
@@ -2350,6 +2414,9 @@ START_TEST(run)
trace
(
"ParseProcedureText tests...
\n
"
);
test_parse_proc
();
}
if
(
winetest_interactive
)
run_benchmarks
();
}
CoUninitialize
();
...
...
dlls/jscript/tests/sunspider-regexp-dna.js
0 → 100644
View file @
6d8359fc
This source diff could not be displayed because it is too large. You can
view the blob
instead.
dlls/jscript/tests/sunspider-string-base64.js
0 → 100644
View file @
6d8359fc
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla XML-RPC Client component.
*
* The Initial Developer of the Original Code is
* Digital Creations 2, Inc.
* Portions created by the Initial Developer are Copyright (C) 2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Martijn Pieters <mj@digicool.com> (original author)
* Samuel Sieb <samuel@sieb.net>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
// From: http://lxr.mozilla.org/mozilla/source/extensions/xml-rpc/src/nsXmlRpcClient.js#956
/* Convert data (an array of integers) to a Base64 string. */
var
toBase64Table
=
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
;
var
base64Pad
=
'='
;
function
toBase64
(
data
)
{
var
result
=
''
;
var
length
=
data
.
length
;
var
i
;
// Convert every three bytes to 4 ascii characters.
for
(
i
=
0
;
i
<
(
length
-
2
);
i
+=
3
)
{
result
+=
toBase64Table
[
data
.
charCodeAt
(
i
)
>>
2
];
result
+=
toBase64Table
[((
data
.
charCodeAt
(
i
)
&
0x03
)
<<
4
)
+
(
data
.
charCodeAt
(
i
+
1
)
>>
4
)];
result
+=
toBase64Table
[((
data
.
charCodeAt
(
i
+
1
)
&
0x0f
)
<<
2
)
+
(
data
.
charCodeAt
(
i
+
2
)
>>
6
)];
result
+=
toBase64Table
[
data
.
charCodeAt
(
i
+
2
)
&
0x3f
];
}
// Convert the remaining 1 or 2 bytes, pad out to 4 characters.
if
(
length
%
3
)
{
i
=
length
-
(
length
%
3
);
result
+=
toBase64Table
[
data
.
charCodeAt
(
i
)
>>
2
];
if
((
length
%
3
)
==
2
)
{
result
+=
toBase64Table
[((
data
.
charCodeAt
(
i
)
&
0x03
)
<<
4
)
+
(
data
.
charCodeAt
(
i
+
1
)
>>
4
)];
result
+=
toBase64Table
[(
data
.
charCodeAt
(
i
+
1
)
&
0x0f
)
<<
2
];
result
+=
base64Pad
;
}
else
{
result
+=
toBase64Table
[(
data
.
charCodeAt
(
i
)
&
0x03
)
<<
4
];
result
+=
base64Pad
+
base64Pad
;
}
}
return
result
;
}
/* Convert Base64 data to a string */
var
toBinaryTable
=
[
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
62
,
-
1
,
-
1
,
-
1
,
63
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
-
1
,
-
1
,
-
1
,
0
,
-
1
,
-
1
,
-
1
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
];
function
base64ToString
(
data
)
{
var
result
=
''
;
var
leftbits
=
0
;
// number of bits decoded, but yet to be appended
var
leftdata
=
0
;
// bits decoded, but yet to be appended
// Convert one by one.
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
c
=
toBinaryTable
[
data
.
charCodeAt
(
i
)
&
0x7f
];
var
padding
=
(
data
.
charCodeAt
(
i
)
==
base64Pad
.
charCodeAt
(
0
));
// Skip illegal characters and whitespace
if
(
c
==
-
1
)
continue
;
// Collect data into leftdata, update bitcount
leftdata
=
(
leftdata
<<
6
)
|
c
;
leftbits
+=
6
;
// If we have 8 or more bits, append 8 bits to the result
if
(
leftbits
>=
8
)
{
leftbits
-=
8
;
// Append if not padding.
if
(
!
padding
)
result
+=
String
.
fromCharCode
((
leftdata
>>
leftbits
)
&
0xff
);
leftdata
&=
(
1
<<
leftbits
)
-
1
;
}
}
// If there are any bits left, the base64 string was corrupted
if
(
leftbits
)
throw
Components
.
Exception
(
'Corrupted base64 string'
);
return
result
;
}
var
str
=
""
;
for
(
var
i
=
0
;
i
<
8192
;
i
++
)
str
+=
String
.
fromCharCode
(
(
25
*
Math
.
random
())
+
97
);
for
(
var
i
=
8192
;
i
<=
16384
;
i
*=
2
)
{
var
base64
;
base64
=
toBase64
(
str
);
base64ToString
(
base64
);
// Double the string
str
+=
str
;
}
toBinaryTable
=
null
;
dlls/jscript/tests/sunspider-string-validate-input.js
0 → 100644
View file @
6d8359fc
letters
=
new
Array
(
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
);
numbers
=
new
Array
(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
);
colors
=
new
Array
(
"FF"
,
"CC"
,
"99"
,
"66"
,
"33"
,
"00"
);
var
endResult
;
function
doTest
()
{
endResult
=
""
;
// make up email address
for
(
var
k
=
0
;
k
<
4000
;
k
++
)
{
username
=
makeName
(
6
);
(
k
%
2
)?
email
=
username
+
"@mac.com"
:
email
=
username
+
"(at)mac.com"
;
// validate the email address
var
pattern
=
/^
[
a-zA-Z0-9
\-\.
_
]
+@
[
a-zA-Z0-9
\-
_
]
+
(\.?[
a-zA-Z0-9
\-
_
]
*
)\.[
a-zA-Z
]{2,3}
$/
;
if
(
pattern
.
test
(
email
))
{
var
r
=
email
+
" appears to be a valid email address."
;
addResult
(
r
);
}
else
{
r
=
email
+
" does NOT appear to be a valid email address."
;
addResult
(
r
);
}
}
// make up ZIP codes
for
(
var
s
=
0
;
s
<
4000
;
s
++
)
{
var
zipGood
=
true
;
var
zip
=
makeNumber
(
4
);
(
s
%
2
)?
zip
=
zip
+
"xyz"
:
zip
=
zip
.
concat
(
"7"
);
// validate the zip code
for
(
var
i
=
0
;
i
<
zip
.
length
;
i
++
)
{
var
ch
=
zip
.
charAt
(
i
);
if
(
ch
<
"0"
||
ch
>
"9"
)
{
zipGood
=
false
;
r
=
zip
+
" contains letters."
;
addResult
(
r
);
}
}
if
(
zipGood
&&
zip
.
length
>
5
)
{
zipGood
=
false
;
r
=
zip
+
" is longer than five characters."
;
addResult
(
r
);
}
if
(
zipGood
)
{
r
=
zip
+
" appears to be a valid ZIP code."
;
addResult
(
r
);
}
}
}
function
makeName
(
n
)
{
var
tmp
=
""
;
for
(
var
i
=
0
;
i
<
n
;
i
++
)
{
var
l
=
Math
.
floor
(
26
*
Math
.
random
());
tmp
+=
letters
[
l
];
}
return
tmp
;
}
function
makeNumber
(
n
)
{
var
tmp
=
""
;
for
(
var
i
=
0
;
i
<
n
;
i
++
)
{
var
l
=
Math
.
floor
(
9
*
Math
.
random
());
tmp
=
tmp
.
concat
(
l
);
}
return
tmp
;
}
function
addResult
(
r
)
{
endResult
+=
"
\
n"
+
r
;
}
doTest
();
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment