webruby 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/environment.rb +4 -0
  3. data/lib/webruby/rake/files.rake +2 -1
  4. data/lib/webruby/rake/mruby.rake +4 -2
  5. data/modules/emscripten/AUTHORS +1 -0
  6. data/modules/emscripten/cmake/Platform/Emscripten.cmake +2 -0
  7. data/modules/emscripten/emcc +96 -40
  8. data/modules/emscripten/emrun +301 -136
  9. data/modules/emscripten/emscripten.py +5 -45
  10. data/modules/emscripten/src/analyzer.js +11 -1
  11. data/modules/emscripten/src/compiler.js +1 -1
  12. data/modules/emscripten/src/emrun_postjs.js +2 -2
  13. data/modules/emscripten/src/emrun_prejs.js +5 -0
  14. data/modules/emscripten/src/emscripten-source-map.min.js +31 -0
  15. data/modules/emscripten/src/library.js +187 -0
  16. data/modules/emscripten/src/library_egl.js +20 -0
  17. data/modules/emscripten/src/library_sdl.js +1 -0
  18. data/modules/emscripten/src/preamble.js +4 -0
  19. data/modules/emscripten/src/relooper/Relooper.cpp +33 -15
  20. data/modules/emscripten/src/relooper/Relooper.h +20 -14
  21. data/modules/emscripten/src/relooper/fuzzer.py +6 -0
  22. data/modules/emscripten/src/relooper/test.cpp +28 -0
  23. data/modules/emscripten/src/relooper/test.txt +211 -166
  24. data/modules/emscripten/src/relooper/test2.txt +20 -20
  25. data/modules/emscripten/src/relooper/test3.txt +41 -41
  26. data/modules/emscripten/src/relooper/test4.txt +26 -26
  27. data/modules/emscripten/src/relooper/test5.txt +52 -52
  28. data/modules/emscripten/src/relooper/test6.txt +19 -19
  29. data/modules/emscripten/src/relooper/test_dead.txt +1 -1
  30. data/modules/emscripten/src/relooper/test_debug.txt +31 -31
  31. data/modules/emscripten/src/relooper/test_fuzz1.txt +50 -50
  32. data/modules/emscripten/src/relooper/test_fuzz2.txt +21 -21
  33. data/modules/emscripten/src/relooper/test_fuzz3.txt +18 -18
  34. data/modules/emscripten/src/relooper/test_fuzz4.txt +28 -28
  35. data/modules/emscripten/src/relooper/test_fuzz5.txt +61 -61
  36. data/modules/emscripten/src/relooper/test_fuzz6.txt +179 -179
  37. data/modules/emscripten/src/relooper/test_inf.txt +846 -846
  38. data/modules/emscripten/src/relooper/testit.sh +15 -15
  39. data/modules/emscripten/system/include/emscripten/emscripten.h +64 -0
  40. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +8 -2
  41. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
  42. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +11 -0
  43. data/modules/emscripten/tools/eliminator/eliminator-test.js +16 -1
  44. data/modules/emscripten/tools/file_packager.py +59 -49
  45. data/modules/emscripten/tools/js-optimizer.js +47 -8
  46. data/modules/emscripten/tools/shared.py +3 -3
  47. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +5 -3
  48. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +4 -0
  49. data/modules/mruby/INSTALL +11 -6
  50. data/modules/mruby/include/mrbconf.h +0 -3
  51. data/modules/mruby/include/mruby/khash.h +34 -36
  52. data/modules/mruby/include/mruby/string.h +3 -0
  53. data/modules/mruby/include/mruby.h +3 -3
  54. data/modules/mruby/mrblib/string.rb +3 -0
  55. data/modules/mruby/src/class.c +12 -12
  56. data/modules/mruby/src/codegen.c +18 -11
  57. data/modules/mruby/src/hash.c +12 -12
  58. data/modules/mruby/src/kernel.c +3 -3
  59. data/modules/mruby/src/load.c +29 -14
  60. data/modules/mruby/src/numeric.c +1 -1
  61. data/modules/mruby/src/object.c +14 -2
  62. data/modules/mruby/src/state.c +13 -10
  63. data/modules/mruby/src/string.c +1 -3
  64. data/modules/mruby/src/symbol.c +44 -18
  65. data/modules/mruby/src/variable.c +6 -6
  66. data/modules/mruby/test/t/class.rb +34 -0
  67. data/modules/mruby/test/t/module.rb +1 -1
  68. data/modules/mruby/test/t/syntax.rb +28 -0
  69. metadata +5 -13
  70. data/modules/emscripten/src/relooper.js +0 -11516
  71. data/modules/emscripten/src/relooper.js.raw.js +0 -11511
  72. data/modules/emscripten/tools/__init__.pyc +0 -0
  73. data/modules/emscripten/tools/cache.pyc +0 -0
  74. data/modules/emscripten/tools/gen_struct_info.pyc +0 -0
  75. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  76. data/modules/emscripten/tools/jsrun.pyc +0 -0
  77. data/modules/emscripten/tools/response_file.pyc +0 -0
  78. data/modules/emscripten/tools/shared.pyc +0 -0
  79. data/modules/emscripten/tools/tempfiles.pyc +0 -0
@@ -1,56 +1,56 @@
1
- ep
2
- L1: do {
3
- switch (the_var) {
4
- ep -> LBB1 {
5
- LBB1
1
+ ep
2
+ L1: do {
6
3
  switch (the_var) {
7
- LBB1 -> LBB2 {
4
+ ep -> LBB1 {
5
+ LBB1
6
+ switch (the_var) {
7
+ LBB1 -> LBB2 {
8
+ break;
9
+ }
10
+ default: {
11
+ break L1;
12
+ }
13
+ }
14
+ LBB2
15
+ switch (the_var) {
16
+ default: {
17
+ }
18
+ }
8
19
  break;
9
20
  }
10
- default: {
11
- break L1;
12
- }
13
- }
14
- LBB2
15
- switch (the_var) {
16
21
  default: {
17
22
  }
18
23
  }
19
- break;
20
- }
21
- default: {
22
- }
23
- }
24
- } while(0);
25
- LBB3
26
- L5: do {
27
- switch (the_var) {
28
- LBB3 -> LBB4 {
29
- LBB4
24
+ } while(0);
25
+ LBB3
26
+ L5: do {
30
27
  switch (the_var) {
31
- LBB4 -> LBB5 {
32
- break;
33
- }
34
- default: {
35
- break L5;
36
- }
37
- }
38
- while(1) {
39
- LBB5
28
+ LBB3 -> LBB4 {
29
+ LBB4
40
30
  switch (the_var) {
41
- LBB5 -> LBB6 {
42
- break L5;
31
+ LBB4 -> LBB5 {
43
32
  break;
44
33
  }
45
34
  default: {
35
+ break L5;
36
+ }
46
37
  }
38
+ while(1) {
39
+ LBB5
40
+ switch (the_var) {
41
+ LBB5 -> LBB6 {
42
+ break L5;
43
+ break;
44
+ }
45
+ default: {
46
+ }
47
+ }
47
48
  }
49
+ break;
50
+ }
51
+ default: {
52
+ }
48
53
  }
49
- break;
50
- }
51
- default: {
52
- }
53
- }
54
- } while(0);
55
- LBB6
54
+ } while(0);
55
+ LBB6
56
56
 
@@ -1,44 +1,44 @@
1
- //19
2
- L1: do {
3
- switch (the_var) {
4
- 1 {
5
- //20
1
+ //19
2
+ L1: do {
6
3
  switch (the_var) {
7
4
  1 {
5
+ //20
6
+ switch (the_var) {
7
+ 1 {
8
+ break;
9
+ }
10
+ default: {
11
+ label = 4;
12
+ break L1;
13
+ }
14
+ }
15
+ //21
16
+ switch (the_var) {
17
+ default: {
18
+ }
19
+ }
8
20
  break;
9
21
  }
10
22
  default: {
11
23
  label = 4;
12
- break L1;
13
24
  }
14
25
  }
15
- //21
26
+ } while(0);
27
+ if (label == 4) {
28
+ //22
16
29
  switch (the_var) {
17
30
  default: {
18
31
  }
19
32
  }
20
- break;
21
- }
22
- default: {
23
- label = 4;
24
33
  }
25
- }
26
- } while(0);
27
- if (label == 4) {
28
- //22
34
+ //23
29
35
  switch (the_var) {
36
+ 1 {
37
+ //24
38
+ break;
39
+ }
30
40
  default: {
41
+ //28
31
42
  }
32
43
  }
33
- }
34
- //23
35
- switch (the_var) {
36
- 1 {
37
- //24
38
- break;
39
- }
40
- default: {
41
- //28
42
- }
43
- }
44
44
 
@@ -1,56 +1,56 @@
1
- //0
2
- switch (the_var) {
3
- check(0) {
4
- L2: while(1) {
5
- //1
6
- switch (the_var) {
7
- check(1) {
8
- break;
9
- }
10
- default: {
11
- break L2;
12
- }
13
- }
1
+ //0
2
+ switch (the_var) {
3
+ check(0) {
4
+ L2: while(1) {
5
+ //1
6
+ switch (the_var) {
7
+ check(1) {
8
+ break;
9
+ }
10
+ default: {
11
+ break L2;
12
+ }
13
+ }
14
+ }
15
+ L4: while(1) {
16
+ //2
17
+ switch (the_var) {
18
+ check(2) {
19
+ break;
20
+ }
21
+ default: {
22
+ break L4;
23
+ }
24
+ }
25
+ }
26
+ //3
27
+ break;
14
28
  }
15
- L4: while(1) {
16
- //2
17
- switch (the_var) {
18
- check(2) {
19
- break;
20
- }
21
- default: {
22
- break L4;
23
- }
24
- }
29
+ default: {
30
+ goingFrom0to4();
31
+ L7: while(1) {
32
+ //4
33
+ switch (the_var) {
34
+ check(4) {
35
+ break;
36
+ }
37
+ default: {
38
+ break L7;
39
+ }
40
+ }
41
+ }
42
+ L9: while(1) {
43
+ //5
44
+ switch (the_var) {
45
+ check(5) {
46
+ break L9;
47
+ break;
48
+ }
49
+ default: {
50
+ }
51
+ }
52
+ }
53
+ //3
25
54
  }
26
- //3
27
- break;
28
- }
29
- default: {
30
- goingFrom0to4();
31
- L7: while(1) {
32
- //4
33
- switch (the_var) {
34
- check(4) {
35
- break;
36
- }
37
- default: {
38
- break L7;
39
- }
40
- }
41
- }
42
- L9: while(1) {
43
- //5
44
- switch (the_var) {
45
- check(5) {
46
- break L9;
47
- break;
48
- }
49
- default: {
50
- }
51
- }
52
55
  }
53
- //3
54
- }
55
- }
56
56
 
@@ -1,26 +1,26 @@
1
- //0
2
- L1: do {
3
- switch (the_var) {
4
- check(0) {
5
- //1
1
+ //0
2
+ L1: do {
6
3
  switch (the_var) {
7
- check(1) {
4
+ check(0) {
5
+ //1
6
+ switch (the_var) {
7
+ check(1) {
8
+ break;
9
+ }
10
+ default: {
11
+ break L1;
12
+ }
13
+ }
14
+ //2
15
+ switch (the_var) {
16
+ default: {
17
+ }
18
+ }
8
19
  break;
9
20
  }
10
21
  default: {
11
- break L1;
12
22
  }
13
23
  }
14
- //2
15
- switch (the_var) {
16
- default: {
17
- }
18
- }
19
- break;
20
- }
21
- default: {
22
- }
23
- }
24
- } while(0);
25
- //3
24
+ } while(0);
25
+ //3
26
26
 
@@ -4,6 +4,6 @@
4
4
 
5
5
 
6
6
 
7
- // block A
7
+ // block A
8
8
 
9
9
  I did not crash even though I have dead code with a branch!
@@ -4,18 +4,18 @@ int main() {
4
4
  rl_set_output_buffer(buffer);
5
5
  void *block_map[10000];
6
6
  void *rl = rl_new_relooper();
7
- void *b1 = rl_new_block("// code 1");
8
- block_map[1] = b1;
9
- rl_relooper_add_block(rl, block_map[1]);
10
- void *b2 = rl_new_block("// code 2");
11
- block_map[2] = b2;
12
- rl_relooper_add_block(rl, block_map[2]);
13
- void *b3 = rl_new_block("// code 3");
14
- block_map[3] = b3;
15
- rl_relooper_add_block(rl, block_map[3]);
16
- void *b4 = rl_new_block("// code 4");
17
- block_map[4] = b4;
18
- rl_relooper_add_block(rl, block_map[4]);
7
+ void *b-1 = rl_new_block("// code -1");
8
+ block_map[-1] = b-1;
9
+ rl_relooper_add_block(rl, block_map[-1]);
10
+ void *b-1 = rl_new_block("// code -1");
11
+ block_map[-1] = b-1;
12
+ rl_relooper_add_block(rl, block_map[-1]);
13
+ void *b-1 = rl_new_block("// code -1");
14
+ block_map[-1] = b-1;
15
+ rl_relooper_add_block(rl, block_map[-1]);
16
+ void *b-1 = rl_new_block("// code -1");
17
+ block_map[-1] = b-1;
18
+ rl_relooper_add_block(rl, block_map[-1]);
19
19
  rl_block_add_branch_to(block_map[1], block_map[2], "ep -> LBB1", NULL);
20
20
  rl_block_add_branch_to(block_map[1], block_map[4], NULL, NULL);
21
21
  rl_block_add_branch_to(block_map[2], block_map[3], "LBB1 -> LBB2", NULL);
@@ -114,29 +114,29 @@ int main() {
114
114
  // Process() returning
115
115
  // === Optimizing shapes ===
116
116
  // Fusing Multiple to Simple
117
- ep
118
- L1: do {
119
- switch (the_var) {
120
- ep -> LBB1 {
121
- LBB1
117
+ ep
118
+ L1: do {
122
119
  switch (the_var) {
123
- LBB1 -> LBB2 {
120
+ ep -> LBB1 {
121
+ LBB1
122
+ switch (the_var) {
123
+ LBB1 -> LBB2 {
124
+ break;
125
+ }
126
+ default: {
127
+ break L1;
128
+ }
129
+ }
130
+ LBB2
131
+ switch (the_var) {
132
+ default: {
133
+ }
134
+ }
124
135
  break;
125
136
  }
126
137
  default: {
127
- break L1;
128
138
  }
129
139
  }
130
- LBB2
131
- switch (the_var) {
132
- default: {
133
- }
134
- }
135
- break;
136
- }
137
- default: {
138
- }
139
- }
140
- } while(0);
141
- LBB3
140
+ } while(0);
141
+ LBB3
142
142
 
@@ -1,72 +1,72 @@
1
1
 
2
2
 
3
- print('entry'); var label; var state; var decisions = [4, 1, 7, 2, 6, 6, 8]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
4
- switch (the_var) {
5
- default: {
6
- }
7
- }
8
- print(5); state = check();
9
- switch (the_var) {
10
- default: {
11
- }
12
- }
13
- print(6); state = check();
14
- switch (the_var) {
15
- state == 7 {
16
- print(7); state = check();
3
+ print('entry'); var label; var state; var decisions = [4, 1, 7, 2, 6, 6, 8]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
17
4
  switch (the_var) {
18
5
  default: {
19
- label = 3;
20
6
  }
21
7
  }
22
- break;
23
- }
24
- default: {
25
- }
26
- }
27
- L5: while(1) {
28
- if (label == 3) {
29
- label = 0;
30
- print(2); state = check();
8
+ print(5); state = check();
9
+ switch (the_var) {
10
+ default: {
11
+ }
12
+ }
13
+ print(6); state = check();
14
+ switch (the_var) {
15
+ state == 7 {
16
+ print(7); state = check();
31
17
  switch (the_var) {
32
18
  default: {
19
+ label = 3;
33
20
  }
34
21
  }
22
+ break;
35
23
  }
36
- print(1); state = check();
37
- switch (the_var) {
38
24
  default: {
39
25
  }
40
26
  }
41
- while(1) {
42
- print(3); state = check();
43
- switch (the_var) {
44
- state == 8 {
45
- break;
27
+ L5: while(1) {
28
+ if (label == 3) {
29
+ label = 0;
30
+ print(2); state = check();
31
+ switch (the_var) {
32
+ default: {
33
+ }
34
+ }
46
35
  }
47
- default: {
48
- continue L5;
49
- }
50
- }
51
- print(8); state = check();
36
+ print(1); state = check();
52
37
  switch (the_var) {
53
- state == 4 {
54
- break;
55
- }
56
38
  default: {
57
- label = 3;
58
- continue L5;
59
39
  }
60
40
  }
61
- print(4); state = check();
62
- switch (the_var) {
63
- state == 3 {
64
- break;
65
- }
66
- default: {
67
- continue L5;
68
- }
41
+ while(1) {
42
+ print(3); state = check();
43
+ switch (the_var) {
44
+ state == 8 {
45
+ break;
46
+ }
47
+ default: {
48
+ continue L5;
49
+ }
50
+ }
51
+ print(8); state = check();
52
+ switch (the_var) {
53
+ state == 4 {
54
+ break;
55
+ }
56
+ default: {
57
+ label = 3;
58
+ continue L5;
59
+ }
60
+ }
61
+ print(4); state = check();
62
+ switch (the_var) {
63
+ state == 3 {
64
+ break;
65
+ }
66
+ default: {
67
+ continue L5;
68
+ }
69
+ }
69
70
  }
70
71
  }
71
- }
72
72
 
@@ -1,30 +1,30 @@
1
1
 
2
2
 
3
- print('entry'); var label; var state; var decisions = [4, 1, 4, 3, 4, 1, 2, 5, 1, 3, 5, 5, 1, 5, 2, 4, 4, 3]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
4
- switch (the_var) {
5
- state == 1 {
6
- while(1) {
7
- print(1); state = check();
8
- switch (the_var) {
9
- default: {
10
- }
3
+ print('entry'); var label; var state; var decisions = [4, 1, 4, 3, 4, 1, 2, 5, 1, 3, 5, 5, 1, 5, 2, 4, 4, 3]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
4
+ switch (the_var) {
5
+ state == 1 {
6
+ while(1) {
7
+ print(1); state = check();
8
+ switch (the_var) {
9
+ default: {
10
+ }
11
+ }
11
12
  }
13
+ break;
12
14
  }
13
- break;
14
- }
15
- default: {
16
- }
17
- }
18
- while(1) {
19
- print(3); state = check();
20
- switch (the_var) {
21
15
  default: {
22
16
  }
23
17
  }
24
- print(2); state = check();
25
- switch (the_var) {
26
- default: {
27
- }
18
+ while(1) {
19
+ print(3); state = check();
20
+ switch (the_var) {
21
+ default: {
22
+ }
23
+ }
24
+ print(2); state = check();
25
+ switch (the_var) {
26
+ default: {
27
+ }
28
+ }
28
29
  }
29
- }
30
30
 
@@ -1,25 +1,25 @@
1
1
 
2
2
 
3
- print('entry'); var label; var state; var decisions = [3, 3, 4, 1, 2, 1, 2, 4, 4, 4, 2, 3, 3, 1, 2]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
4
- switch (the_var) {
5
- default: {
6
- }
7
- }
8
- print(1); state = check();
9
- switch (the_var) {
10
- default: {
11
- }
12
- }
13
- print(3); state = check();
14
- switch (the_var) {
15
- default: {
16
- }
17
- }
18
- while(1) {
19
- print(4); state = check();
3
+ print('entry'); var label; var state; var decisions = [3, 3, 4, 1, 2, 1, 2, 4, 4, 4, 2, 3, 3, 1, 2]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
20
4
  switch (the_var) {
21
5
  default: {
22
6
  }
23
7
  }
24
- }
8
+ print(1); state = check();
9
+ switch (the_var) {
10
+ default: {
11
+ }
12
+ }
13
+ print(3); state = check();
14
+ switch (the_var) {
15
+ default: {
16
+ }
17
+ }
18
+ while(1) {
19
+ print(4); state = check();
20
+ switch (the_var) {
21
+ default: {
22
+ }
23
+ }
24
+ }
25
25
 
@@ -1,41 +1,41 @@
1
1
 
2
2
 
3
- print('entry'); var label; var state; var decisions = [2, 2, 1, 3, 2, 2, 1, 3, 2, 3, 3, 1, 3, 2, 1]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
4
- switch (the_var) {
5
- state == 2 {
6
- while(1) {
7
- print(2); state = check();
8
- switch (the_var) {
9
- default: {
10
- }
11
- }
12
- }
13
- break;
14
- }
15
- default: {
16
- }
17
- }
18
- L4: while(1) {
19
- print(4); state = check();
3
+ print('entry'); var label; var state; var decisions = [2, 2, 1, 3, 2, 2, 1, 3, 2, 3, 3, 1, 3, 2, 1]; var index = 0; function check() { if (index == decisions.length) throw 'HALT'; return decisions[index++] }
20
4
  switch (the_var) {
21
- state == 4 {
5
+ state == 2 {
6
+ while(1) {
7
+ print(2); state = check();
8
+ switch (the_var) {
9
+ default: {
10
+ }
11
+ }
12
+ }
22
13
  break;
23
14
  }
24
15
  default: {
25
- break L4;
26
16
  }
27
17
  }
28
- }
29
- print(3); state = check();
30
- switch (the_var) {
31
- default: {
32
- }
33
- }
34
- while(1) {
35
- print(1); state = check();
18
+ L4: while(1) {
19
+ print(4); state = check();
20
+ switch (the_var) {
21
+ state == 4 {
22
+ break;
23
+ }
24
+ default: {
25
+ break L4;
26
+ }
27
+ }
28
+ }
29
+ print(3); state = check();
36
30
  switch (the_var) {
37
31
  default: {
38
32
  }
39
33
  }
40
- }
34
+ while(1) {
35
+ print(1); state = check();
36
+ switch (the_var) {
37
+ default: {
38
+ }
39
+ }
40
+ }
41
41