forked from mbebenita/j2me.js
-
Notifications
You must be signed in to change notification settings - Fork 1
/
jsshell.js
executable file
·79 lines (65 loc) · 1.86 KB
/
jsshell.js
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
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
'use strict';
if (scriptArgs.length !== 1) {
print("error: One main class name must be specified.");
print("usage: jsshell <main class name>");
quit(1);
}
var window = {
setZeroTimeout: function(callback) {
callback();
},
addEventListener: function() {
},
crypto: {
getRandomValues: function() {
},
},
};
var navigator = {
language: "en-US",
};
var document = {
documentElement: {
classList: {
add: function() {
},
},
},
querySelector: function() {
return {
addEventListener: function() {
},
};
},
getElementById: function() {
return {
addEventListener: function() {
},
getContext: function() {
},
};
},
};
var urlParams = {
logConsole: "native",
args: "",
};
load("jvm.js", "classes.js", "libs/zipfile.js", "classinfo.js", "classfile/classfile.js",
"classfile/reader.js", "classfile/tags.js", "classfile/attributetypes.js", "runtime.js",
"context.js", "libs/encoding.js", "util.js", "frame.js", "arrays.js",
"classfile/accessflags.js", "instrument.js", "vm.js", "signature.js", "opcodes.js",
"override.js", "native.js", "string.js", "libs/console.js", "midp/midp.js",
"libs/long.js", "midp/crypto.js", "libs/forge/md5.js", "libs/forge/util.js");
var dump = print;
var console = window.console;
var start = dateNow();
var jvm = new JVM();
jvm.addPath("java/classes.jar", snarf("java/classes.jar", "binary").buffer);
jvm.addPath("java/tests.jar", snarf("tests/tests.jar", "binary").buffer);
jvm.initializeBuiltinClasses();
print("INITIALIZATION TIME: " + (dateNow() - start));
start = dateNow();
jvm.startIsolate0(scriptArgs[0], urlParams.args);
print("RUNNING TIME: " + (dateNow() - start));