therubyracer 0.6.3 → 0.7.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of therubyracer might be problematic. Click here for more details.

Files changed (520) hide show
  1. data/Rakefile +10 -9
  2. data/ext/v8/callbacks.cpp +15 -8
  3. data/ext/v8/converters.cpp +7 -8
  4. data/ext/v8/converters.h +0 -2
  5. data/ext/v8/extconf.rb +2 -0
  6. data/ext/v8/rr.cpp +169 -0
  7. data/ext/v8/rr.h +34 -0
  8. data/ext/v8/upstream/{2.0.6 → 2.1.10}/AUTHORS +8 -1
  9. data/ext/v8/upstream/{2.0.6 → 2.1.10}/ChangeLog +198 -0
  10. data/ext/v8/upstream/{2.0.6 → 2.1.10}/LICENSE +0 -0
  11. data/ext/v8/upstream/{2.0.6 → 2.1.10}/SConstruct +152 -38
  12. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8-debug.h +52 -4
  13. data/ext/v8/upstream/2.1.10/include/v8-profiler.h +176 -0
  14. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8.h +227 -48
  15. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/SConscript +60 -10
  16. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.cc +5 -39
  17. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.h +0 -0
  18. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.cc +0 -0
  19. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.h +0 -0
  20. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.cc +477 -57
  21. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.h +8 -4
  22. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apinatives.js +1 -1
  23. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apiutils.h +0 -0
  24. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arguments.h +5 -6
  25. data/ext/v8/upstream/{2.0.6/src/arm/assembler-thumb2-inl.h → 2.1.10/src/arm/assembler-arm-inl.h} +42 -27
  26. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.cc +430 -216
  27. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.h +199 -110
  28. data/ext/v8/upstream/{2.0.6/src/arm/assembler-arm-inl.h → 2.1.10/src/arm/assembler-thumb2-inl.h} +4 -18
  29. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.cc +142 -85
  30. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.h +18 -9
  31. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/builtins-arm.cc +127 -87
  32. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm-inl.h +3 -5
  33. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm.cc +4634 -1427
  34. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm.h +946 -0
  35. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.cc +21 -3
  36. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.h +39 -13
  37. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/cpu-arm.cc +9 -3
  38. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/debug-arm.cc +34 -8
  39. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/disasm-arm.cc +262 -117
  40. data/ext/v8/upstream/2.1.10/src/arm/fast-codegen-arm.cc +238 -0
  41. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.cc +0 -0
  42. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.h +0 -0
  43. data/ext/v8/upstream/{2.0.6/src/arm/fast-codegen-arm.cc → 2.1.10/src/arm/full-codegen-arm.cc} +453 -283
  44. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +1833 -0
  45. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/jump-target-arm.cc +3 -29
  46. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.cc +564 -104
  47. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.h +255 -46
  48. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.cc +78 -104
  49. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.h +6 -22
  50. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm-inl.h +0 -3
  51. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.cc +0 -0
  52. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.h +2 -1
  53. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.cc +557 -180
  54. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.h +52 -4
  55. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/stub-cache-arm.cc +904 -240
  56. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.cc +668 -0
  57. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.h +503 -0
  58. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/array.js +82 -109
  59. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.cc +49 -13
  60. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.h +27 -5
  61. data/ext/v8/upstream/2.1.10/src/ast.cc +1138 -0
  62. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ast.h +354 -53
  63. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.cc +609 -501
  64. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.h +27 -8
  65. data/ext/v8/upstream/2.1.10/src/builtins.cc +1512 -0
  66. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/builtins.h +41 -25
  67. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bytecodes-irregexp.h +0 -0
  68. data/ext/v8/upstream/2.1.10/src/cached-powers.h +119 -0
  69. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates-inl.h +0 -0
  70. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates.h +0 -0
  71. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.cc +0 -0
  72. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.h +25 -1
  73. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +101 -0
  74. data/ext/v8/upstream/2.1.10/src/circular-queue.cc +121 -0
  75. data/ext/v8/upstream/2.1.10/src/circular-queue.h +129 -0
  76. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.cc +23 -8
  77. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.h +16 -4
  78. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code.h +0 -0
  79. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen-inl.h +6 -34
  80. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.cc +73 -92
  81. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.h +164 -68
  82. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.cc +117 -73
  83. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.h +18 -17
  84. data/ext/v8/upstream/2.1.10/src/compiler.cc +623 -0
  85. data/ext/v8/upstream/2.1.10/src/compiler.h +299 -0
  86. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.cc +0 -0
  87. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.h +8 -11
  88. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions-inl.h +28 -13
  89. data/ext/v8/upstream/2.1.10/src/conversions.cc +1105 -0
  90. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions.h +9 -4
  91. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.cc +0 -0
  92. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.h +1 -1
  93. data/ext/v8/upstream/2.1.10/src/cpu-profiler-inl.h +99 -0
  94. data/ext/v8/upstream/2.1.10/src/cpu-profiler.cc +494 -0
  95. data/ext/v8/upstream/2.1.10/src/cpu-profiler.h +277 -0
  96. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/cpu.h +0 -0
  97. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.cc +15 -4
  98. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.h +0 -0
  99. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-posix.cc +18 -0
  100. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-readline.cc +2 -2
  101. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-windows.cc +0 -0
  102. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.cc +10 -6
  103. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.h +2 -0
  104. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.js +43 -38
  105. data/ext/v8/upstream/2.1.10/src/data-flow.cc +755 -0
  106. data/ext/v8/upstream/2.1.10/src/data-flow.h +278 -0
  107. data/ext/v8/upstream/{2.0.6/src/date-delay.js → 2.1.10/src/date.js} +100 -110
  108. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser-inl.h +11 -2
  109. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.cc +24 -26
  110. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.h +8 -4
  111. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.cc +3 -1
  112. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.h +0 -0
  113. data/ext/v8/upstream/{2.0.6/src/debug-delay.js → 2.1.10/src/debug-debugger.js} +111 -15
  114. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.cc +156 -96
  115. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.h +53 -5
  116. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disasm.h +0 -0
  117. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.cc +2 -8
  118. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.h +0 -0
  119. data/ext/v8/upstream/2.1.10/src/diy-fp.cc +58 -0
  120. data/ext/v8/upstream/2.1.10/src/diy-fp.h +117 -0
  121. data/ext/v8/upstream/2.1.10/src/double.h +169 -0
  122. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dtoa-config.c +4 -3
  123. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.cc +22 -22
  124. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.h +17 -4
  125. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.cc +70 -46
  126. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.h +27 -17
  127. data/ext/v8/upstream/2.1.10/src/fast-codegen.cc +746 -0
  128. data/ext/v8/upstream/2.1.10/src/fast-codegen.h +161 -0
  129. data/ext/v8/upstream/2.1.10/src/fast-dtoa.cc +512 -0
  130. data/ext/v8/upstream/2.1.10/src/fast-dtoa.h +59 -0
  131. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flag-definitions.h +32 -11
  132. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.cc +0 -0
  133. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.h +0 -0
  134. data/ext/v8/upstream/2.1.10/src/flow-graph.cc +763 -0
  135. data/ext/v8/upstream/2.1.10/src/flow-graph.h +180 -0
  136. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.cc +1 -4
  137. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.h +49 -11
  138. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames-inl.h +2 -0
  139. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.cc +91 -17
  140. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.h +24 -2
  141. data/ext/v8/upstream/{2.0.6/src/fast-codegen.cc → 2.1.10/src/full-codegen.cc} +549 -198
  142. data/ext/v8/upstream/{2.0.6/src/fast-codegen.h → 2.1.10/src/full-codegen.h} +109 -29
  143. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.cc +0 -0
  146. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/globals.h +67 -43
  148. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.cc +124 -129
  150. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.h +33 -15
  151. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-inl.h +56 -12
  154. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.cc +2 -2
  155. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.h +2 -0
  156. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.cc +413 -221
  157. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.h +192 -67
  158. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32-inl.h +6 -0
  159. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.cc +187 -32
  160. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.h +31 -4
  161. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/builtins-ia32.cc +160 -133
  162. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32.cc +5533 -2177
  164. data/ext/v8/upstream/{2.0.6/src/x64/codegen-x64.h → 2.1.10/src/ia32/codegen-ia32.h} +453 -134
  165. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/cpu-ia32.cc +0 -0
  166. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/debug-ia32.cc +63 -8
  167. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/disasm-ia32.cc +99 -16
  168. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.cc +950 -0
  169. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.h +155 -0
  170. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.cc +0 -0
  171. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.0.6/src/ia32/fast-codegen-ia32.cc → 2.1.10/src/ia32/full-codegen-ia32.cc} +454 -253
  173. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/ic-ia32.cc +545 -390
  174. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/jump-target-ia32.cc +1 -0
  175. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.cc +330 -139
  176. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.h +96 -30
  177. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.cc +73 -89
  178. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.h +6 -21
  179. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.cc +59 -5
  181. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.h +2 -2
  184. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/stub-cache-ia32.cc +745 -303
  185. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.cc +278 -71
  186. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.h +78 -22
  187. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic-inl.h +0 -0
  188. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.cc +172 -89
  189. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.h +51 -20
  190. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.0.6/src/json-delay.js → 2.1.10/src/json.js} +26 -12
  193. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.cc +151 -118
  194. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.h +31 -7
  195. data/ext/v8/upstream/2.1.10/src/jump-target-heavy-inl.h +51 -0
  196. data/ext/v8/upstream/{2.0.6/src/jump-target.cc → 2.1.10/src/jump-target-heavy.cc} +164 -184
  197. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target-inl.h +8 -9
  198. data/ext/v8/upstream/{2.0.6/src/usage-analyzer.h → 2.1.10/src/jump-target-light-inl.h} +9 -7
  199. data/ext/v8/upstream/2.1.10/src/jump-target-light.cc +86 -0
  200. data/ext/v8/upstream/2.1.10/src/jump-target.cc +155 -0
  201. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target.h +6 -0
  202. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list-inl.h +0 -0
  203. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list.h +2 -1
  204. data/ext/v8/upstream/2.1.10/src/liveedit-debugger.js +944 -0
  205. data/ext/v8/upstream/2.1.10/src/liveedit.cc +1468 -0
  206. data/ext/v8/upstream/2.1.10/src/liveedit.h +170 -0
  207. data/ext/v8/upstream/2.1.10/src/log-inl.h +59 -0
  208. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.cc +3 -9
  209. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.h +1 -4
  210. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.cc +198 -95
  211. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.h +50 -49
  212. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macro-assembler.h +9 -0
  213. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macros.py +30 -11
  214. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.cc +464 -152
  215. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.h +41 -20
  216. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/math.js +9 -8
  217. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/memory.h +0 -0
  218. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.cc +1 -0
  219. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.h +0 -0
  220. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.js +46 -9
  221. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips-inl.h +215 -0
  222. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.cc +1208 -0
  223. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.h +665 -0
  224. data/ext/v8/upstream/2.1.10/src/mips/builtins-mips.cc +202 -0
  225. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips-inl.h +70 -0
  226. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips.cc +1428 -0
  227. data/ext/v8/upstream/{2.0.6/src/arm/codegen-arm.h → 2.1.10/src/mips/codegen-mips.h} +103 -205
  228. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.cc +323 -0
  229. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.h +525 -0
  230. data/ext/v8/upstream/2.1.10/src/mips/cpu-mips.cc +69 -0
  231. data/ext/v8/upstream/2.1.10/src/mips/debug-mips.cc +128 -0
  232. data/ext/v8/upstream/2.1.10/src/mips/disasm-mips.cc +784 -0
  233. data/ext/v8/upstream/2.1.10/src/mips/fast-codegen-mips.cc +74 -0
  234. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.cc +99 -0
  235. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.h +164 -0
  236. data/ext/v8/upstream/2.1.10/src/mips/full-codegen-mips.cc +273 -0
  237. data/ext/v8/upstream/2.1.10/src/mips/ic-mips.cc +217 -0
  238. data/ext/v8/upstream/2.1.10/src/mips/jump-target-mips.cc +172 -0
  239. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.cc +1323 -0
  240. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.h +461 -0
  241. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips-inl.h +137 -0
  242. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.cc +60 -0
  243. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.h +46 -0
  244. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.cc +1648 -0
  245. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.h +311 -0
  246. data/ext/v8/upstream/2.1.10/src/mips/stub-cache-mips.cc +400 -0
  247. data/ext/v8/upstream/2.1.10/src/mips/virtual-frame-mips.cc +316 -0
  248. data/ext/v8/upstream/{2.0.6/src/arm/virtual-frame-arm.h → 2.1.10/src/mips/virtual-frame-mips.h} +87 -71
  249. data/ext/v8/upstream/{2.0.6/src/mirror-delay.js → 2.1.10/src/mirror-debugger.js} +51 -45
  250. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mksnapshot.cc +97 -10
  251. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/natives.h +6 -6
  252. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-debug.cc +47 -5
  253. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-inl.h +154 -38
  254. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.cc +528 -280
  255. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.h +302 -95
  256. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.cc +25 -33
  257. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.h +9 -1
  258. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.cc +444 -72
  259. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.h +4 -2
  260. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-freebsd.cc +32 -13
  261. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-linux.cc +59 -25
  262. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-macos.cc +30 -13
  263. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-nullos.cc +0 -0
  264. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-openbsd.cc +21 -2
  265. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-posix.cc +0 -18
  266. data/ext/v8/upstream/2.1.10/src/platform-solaris.cc +607 -0
  267. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-win32.cc +16 -17
  268. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform.h +25 -8
  269. data/ext/v8/upstream/2.1.10/src/powers-ten.h +2461 -0
  270. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.cc +49 -29
  271. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.h +3 -1
  272. data/ext/v8/upstream/2.1.10/src/profile-generator-inl.h +124 -0
  273. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +583 -0
  274. data/ext/v8/upstream/2.1.10/src/profile-generator.h +364 -0
  275. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.cc +1 -1
  276. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.h +12 -24
  277. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp-inl.h +2 -2
  278. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.cc +2 -2
  279. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.h +2 -2
  280. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.cc +2 -2
  281. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.h +0 -0
  282. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.cc +33 -10
  283. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.h +12 -4
  284. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.cc +0 -0
  285. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.h +0 -0
  286. data/ext/v8/upstream/{2.0.6/src/regexp-delay.js → 2.1.10/src/regexp.js} +180 -58
  287. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator-inl.h +68 -1
  288. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.cc +5 -2
  289. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.h +42 -17
  290. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.cc +110 -4
  291. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.h +0 -0
  292. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.cc +2733 -623
  293. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.h +43 -20
  294. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.js +46 -35
  295. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.cc +278 -36
  296. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.h +97 -26
  297. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.cc +3 -3
  298. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.h +1 -0
  299. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.cc +11 -12
  300. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.h +0 -1
  301. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.cc +298 -175
  302. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.h +184 -40
  303. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/shell.h +0 -0
  304. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/simulator.h +2 -0
  305. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/smart-pointer.h +0 -0
  306. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot-common.cc +16 -31
  307. data/ext/v8/upstream/2.1.10/src/snapshot-empty.cc +50 -0
  308. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot.h +13 -1
  309. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces-inl.h +35 -27
  310. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.cc +256 -42
  311. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.h +136 -42
  312. data/ext/v8/upstream/{2.0.6/src/zone-inl.h → 2.1.10/src/splay-tree-inl.h} +102 -89
  313. data/ext/v8/upstream/2.1.10/src/splay-tree.h +203 -0
  314. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.cc +0 -0
  315. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.h +0 -0
  316. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string.js +260 -149
  317. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.cc +195 -69
  318. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.h +127 -12
  319. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/COPYING +0 -0
  320. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/dtoa.c +0 -0
  321. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/valgrind/valgrind.h +0 -0
  322. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.cc +0 -0
  323. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.h +0 -0
  324. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.cc +26 -31
  325. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.h +3 -4
  326. data/ext/v8/upstream/2.1.10/src/type-info.cc +53 -0
  327. data/ext/v8/upstream/2.1.10/src/type-info.h +244 -0
  328. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode-inl.h +0 -0
  329. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.cc +0 -0
  330. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.h +0 -0
  331. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/uri.js +6 -6
  332. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.cc +0 -37
  333. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.h +121 -50
  334. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.cc +0 -0
  335. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.h +130 -98
  336. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.cc +42 -11
  337. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.h +4 -2
  338. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8natives.js +202 -37
  339. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.cc +11 -0
  340. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.h +15 -0
  341. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.cc +7 -51
  342. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.h +5 -35
  343. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.cc +3 -3
  344. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.h +0 -0
  345. data/ext/v8/upstream/2.1.10/src/virtual-frame-heavy-inl.h +152 -0
  346. data/ext/v8/upstream/{2.0.6/src/virtual-frame.cc → 2.1.10/src/virtual-frame-heavy.cc} +107 -176
  347. data/ext/v8/upstream/2.1.10/src/virtual-frame-inl.h +39 -0
  348. data/ext/v8/upstream/2.1.10/src/virtual-frame-light-inl.h +69 -0
  349. data/ext/v8/upstream/2.1.10/src/virtual-frame-light.cc +49 -0
  350. data/ext/v8/upstream/2.1.10/src/virtual-frame.cc +49 -0
  351. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/virtual-frame.h +2 -0
  352. data/ext/v8/upstream/{2.0.6/src/log-inl.h → 2.1.10/src/vm-state-inl.h} +28 -20
  353. data/ext/v8/upstream/{2.0.6/src/snapshot-empty.cc → 2.1.10/src/vm-state.cc} +5 -6
  354. data/ext/v8/upstream/2.1.10/src/vm-state.h +75 -0
  355. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64-inl.h +11 -0
  356. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.cc +285 -93
  357. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.h +81 -78
  358. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/builtins-x64.cc +130 -87
  359. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64-inl.h +0 -0
  360. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64.cc +4520 -1317
  361. data/ext/v8/upstream/{2.0.6/src/ia32/codegen-ia32.h → 2.1.10/src/x64/codegen-x64.h} +362 -141
  362. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/cpu-x64.cc +0 -0
  363. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/debug-x64.cc +20 -4
  364. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/disasm-x64.cc +121 -44
  365. data/ext/v8/upstream/2.1.10/src/x64/fast-codegen-x64.cc +246 -0
  366. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.cc +0 -0
  367. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.h +0 -0
  368. data/ext/v8/upstream/{2.0.6/src/x64/fast-codegen-x64.cc → 2.1.10/src/x64/full-codegen-x64.cc} +404 -231
  369. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/ic-x64.cc +346 -117
  370. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/jump-target-x64.cc +1 -0
  371. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.cc +537 -181
  372. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.h +140 -34
  373. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.cc +74 -96
  374. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.h +8 -25
  375. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64-inl.h +1 -1
  376. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.cc +3 -0
  377. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.h +0 -0
  378. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.cc +0 -0
  379. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.h +2 -2
  380. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/stub-cache-x64.cc +785 -288
  381. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.cc +128 -52
  382. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.h +40 -19
  383. data/ext/v8/upstream/2.1.10/src/zone-inl.h +82 -0
  384. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.cc +1 -0
  385. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.h +6 -90
  386. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/codemap.js +12 -0
  387. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/consarray.js +0 -0
  388. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/csvparser.js +22 -37
  389. data/ext/v8/upstream/2.1.10/tools/generate-ten-powers.scm +286 -0
  390. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/gyp/v8.gyp +86 -24
  391. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/js2c.py +22 -22
  392. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/jsmin.py +0 -0
  393. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor +10 -1
  394. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor.py +0 -0
  395. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/logreader.js +34 -16
  396. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-nm +0 -0
  397. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-tick-processor +0 -0
  398. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/annotate +0 -0
  399. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/common +0 -0
  400. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/dump +0 -0
  401. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/report +0 -0
  402. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/reset +0 -0
  403. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/run +0 -0
  404. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/shutdown +0 -0
  405. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/start +0 -0
  406. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/presubmit.py +0 -0
  407. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/process-heap-prof.py +0 -0
  408. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile.js +70 -0
  409. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile_view.js +0 -0
  410. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/run-valgrind.py +0 -0
  411. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.js +0 -0
  412. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.py +0 -0
  413. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/stats-viewer.py +0 -0
  414. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/test.py +7 -7
  415. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor-driver.js +7 -1
  416. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.js +140 -9
  417. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.py +40 -4
  418. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/utils.py +6 -0
  419. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/README.txt +0 -0
  420. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/arm.vsprops +1 -1
  421. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/common.vsprops +1 -2
  422. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8.vcproj +0 -6
  423. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_arm.vcproj +193 -199
  424. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_x64.vcproj +16 -8
  425. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8js2c.cmd +0 -0
  426. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/debug.vsprops +0 -0
  427. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/ia32.vsprops +5 -1
  428. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/js2c.cmd +1 -1
  429. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/release.vsprops +0 -0
  430. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.sln +0 -0
  431. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.vcproj +11 -7
  432. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.sln +0 -0
  433. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.vcproj +227 -223
  434. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base.vcproj +137 -5
  435. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_arm.vcproj +116 -4
  436. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_x64.vcproj +125 -4
  437. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest.vcproj +12 -6
  438. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_arm.vcproj +12 -6
  439. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_x64.vcproj +11 -11
  440. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot.vcproj +0 -6
  441. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -6
  442. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample.vcproj +0 -6
  443. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_arm.vcproj +145 -151
  444. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_x64.vcproj +16 -6
  445. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample.vcproj +0 -6
  446. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -151
  447. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_x64.vcproj +16 -8
  448. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  449. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  450. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  451. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.sln +0 -0
  453. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.vcproj +11 -7
  454. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/x64.vsprops +5 -1
  455. data/ext/v8/upstream/2.1.10/tools/windows-tick-processor.bat +29 -0
  456. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/windows-tick-processor.py +0 -0
  457. data/ext/v8/upstream/Makefile +8 -2
  458. data/ext/v8/v8.cpp +21 -73
  459. data/ext/v8/v8_array.cpp +56 -0
  460. data/ext/v8/v8_array.h +8 -0
  461. data/ext/v8/v8_callbacks.cpp +121 -0
  462. data/ext/v8/v8_callbacks.h +8 -0
  463. data/ext/v8/v8_cxt.cpp +74 -77
  464. data/ext/v8/v8_cxt.h +2 -9
  465. data/ext/v8/v8_date.cpp +26 -0
  466. data/ext/v8/v8_date.h +6 -0
  467. data/ext/v8/v8_exception.cpp +55 -0
  468. data/ext/v8/v8_exception.h +6 -0
  469. data/ext/v8/v8_external.cpp +50 -0
  470. data/ext/v8/v8_external.h +8 -0
  471. data/ext/v8/v8_func.cpp +76 -18
  472. data/ext/v8/v8_func.h +5 -4
  473. data/ext/v8/v8_msg.cpp +55 -46
  474. data/ext/v8/v8_msg.h +3 -11
  475. data/ext/v8/v8_obj.cpp +67 -36
  476. data/ext/v8/v8_obj.h +6 -8
  477. data/ext/v8/v8_ref.cpp +25 -9
  478. data/ext/v8/v8_ref.h +3 -5
  479. data/ext/v8/v8_script.cpp +17 -10
  480. data/ext/v8/v8_script.h +3 -3
  481. data/ext/v8/v8_str.cpp +34 -6
  482. data/ext/v8/v8_str.h +4 -2
  483. data/ext/v8/v8_template.cpp +195 -33
  484. data/ext/v8/v8_template.h +4 -5
  485. data/ext/v8/v8_try_catch.cpp +99 -0
  486. data/ext/v8/v8_try_catch.h +5 -0
  487. data/ext/v8/v8_value.cpp +164 -0
  488. data/ext/v8/v8_value.h +10 -0
  489. data/lib/v8.rb +3 -1
  490. data/lib/v8/access.rb +60 -0
  491. data/lib/v8/array.rb +15 -0
  492. data/lib/v8/callbacks.rb +88 -0
  493. data/lib/v8/cli.rb +1 -1
  494. data/lib/v8/context.rb +55 -66
  495. data/lib/v8/function.rb +20 -2
  496. data/lib/v8/object.rb +14 -12
  497. data/lib/v8/ruby_error.rb +3 -0
  498. data/lib/v8/to.rb +59 -7
  499. data/spec/ext/cxt_spec.rb +2 -15
  500. data/spec/ext/func_spec.rb +17 -10
  501. data/spec/ext/try_catch_spec.rb +32 -0
  502. data/spec/foo.rb +17 -0
  503. data/spec/redjs/jsapi_spec.rb +173 -96
  504. data/spec/spec_helper.rb +7 -0
  505. data/spec/v8/to_spec.rb +0 -1
  506. data/therubyracer.gemspec +6 -6
  507. metadata +493 -386
  508. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
  509. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
  510. data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
  511. data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
  512. data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
  513. data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
  514. data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
  515. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
  516. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
  517. data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
  518. data/ext/v8/v8_standalone.cpp +0 -69
  519. data/ext/v8/v8_standalone.h +0 -31
  520. data/spec/ext/obj_spec.rb +0 -13
@@ -0,0 +1,316 @@
1
+ // Copyright 2010 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+
29
+
30
+ #include "v8.h"
31
+
32
+ #include "codegen-inl.h"
33
+ #include "register-allocator-inl.h"
34
+ #include "scopes.h"
35
+ #include "virtual-frame-inl.h"
36
+
37
+ namespace v8 {
38
+ namespace internal {
39
+
40
+ // -------------------------------------------------------------------------
41
+ // VirtualFrame implementation.
42
+
43
+ #define __ ACCESS_MASM(masm())
44
+
45
+ void VirtualFrame::SyncElementBelowStackPointer(int index) {
46
+ UNREACHABLE();
47
+ }
48
+
49
+
50
+ void VirtualFrame::SyncElementByPushing(int index) {
51
+ UNREACHABLE();
52
+ }
53
+
54
+
55
+ void VirtualFrame::SyncRange(int begin, int end) {
56
+ // All elements are in memory on MIPS (ie, synced).
57
+ #ifdef DEBUG
58
+ for (int i = begin; i <= end; i++) {
59
+ ASSERT(elements_[i].is_synced());
60
+ }
61
+ #endif
62
+ }
63
+
64
+
65
+ void VirtualFrame::MergeTo(VirtualFrame* expected) {
66
+ UNIMPLEMENTED_MIPS();
67
+ }
68
+
69
+
70
+ void VirtualFrame::Enter() {
71
+ // TODO(MIPS): Implement DEBUG
72
+
73
+ // We are about to push four values to the frame.
74
+ Adjust(4);
75
+ __ MultiPush(ra.bit() | fp.bit() | cp.bit() | a1.bit());
76
+ // Adjust FP to point to saved FP.
77
+ __ addiu(fp, sp, 2 * kPointerSize);
78
+ }
79
+
80
+
81
+ void VirtualFrame::Exit() {
82
+ UNIMPLEMENTED_MIPS();
83
+ }
84
+
85
+
86
+ void VirtualFrame::AllocateStackSlots() {
87
+ int count = local_count();
88
+ if (count > 0) {
89
+ Comment cmnt(masm(), "[ Allocate space for locals");
90
+ Adjust(count);
91
+ // Initialize stack slots with 'undefined' value.
92
+ __ LoadRoot(t0, Heap::kUndefinedValueRootIndex);
93
+ __ addiu(sp, sp, -count * kPointerSize);
94
+ for (int i = 0; i < count; i++) {
95
+ __ sw(t0, MemOperand(sp, (count-i-1)*kPointerSize));
96
+ }
97
+ }
98
+ }
99
+
100
+
101
+ void VirtualFrame::SaveContextRegister() {
102
+ UNIMPLEMENTED_MIPS();
103
+ }
104
+
105
+
106
+ void VirtualFrame::RestoreContextRegister() {
107
+ UNIMPLEMENTED_MIPS();
108
+ }
109
+
110
+
111
+ void VirtualFrame::PushReceiverSlotAddress() {
112
+ UNIMPLEMENTED_MIPS();
113
+ }
114
+
115
+
116
+ int VirtualFrame::InvalidateFrameSlotAt(int index) {
117
+ return kIllegalIndex;
118
+ }
119
+
120
+
121
+ void VirtualFrame::TakeFrameSlotAt(int index) {
122
+ UNIMPLEMENTED_MIPS();
123
+ }
124
+
125
+
126
+ void VirtualFrame::StoreToFrameSlotAt(int index) {
127
+ UNIMPLEMENTED_MIPS();
128
+ }
129
+
130
+
131
+ void VirtualFrame::PushTryHandler(HandlerType type) {
132
+ UNIMPLEMENTED_MIPS();
133
+ }
134
+
135
+
136
+ void VirtualFrame::RawCallStub(CodeStub* stub) {
137
+ UNIMPLEMENTED_MIPS();
138
+ }
139
+
140
+
141
+ void VirtualFrame::CallStub(CodeStub* stub, Result* arg) {
142
+ UNIMPLEMENTED_MIPS();
143
+ }
144
+
145
+
146
+ void VirtualFrame::CallStub(CodeStub* stub, Result* arg0, Result* arg1) {
147
+ UNIMPLEMENTED_MIPS();
148
+ }
149
+
150
+
151
+ void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
152
+ PrepareForCall(arg_count, arg_count);
153
+ ASSERT(cgen()->HasValidEntryRegisters());
154
+ __ CallRuntime(f, arg_count);
155
+ }
156
+
157
+
158
+ void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) {
159
+ PrepareForCall(arg_count, arg_count);
160
+ ASSERT(cgen()->HasValidEntryRegisters());
161
+ __ CallRuntime(id, arg_count);
162
+ }
163
+
164
+
165
+ void VirtualFrame::CallAlignedRuntime(Runtime::Function* f, int arg_count) {
166
+ UNIMPLEMENTED_MIPS();
167
+ }
168
+
169
+
170
+ void VirtualFrame::CallAlignedRuntime(Runtime::FunctionId id, int arg_count) {
171
+ UNIMPLEMENTED_MIPS();
172
+ }
173
+
174
+
175
+ void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id,
176
+ InvokeJSFlags flags,
177
+ Result* arg_count_register,
178
+ int arg_count) {
179
+ UNIMPLEMENTED_MIPS();
180
+ }
181
+
182
+
183
+ void VirtualFrame::CallCodeObject(Handle<Code> code,
184
+ RelocInfo::Mode rmode,
185
+ int dropped_args) {
186
+ switch (code->kind()) {
187
+ case Code::CALL_IC:
188
+ break;
189
+ case Code::FUNCTION:
190
+ UNIMPLEMENTED_MIPS();
191
+ break;
192
+ case Code::KEYED_LOAD_IC:
193
+ UNIMPLEMENTED_MIPS();
194
+ break;
195
+ case Code::LOAD_IC:
196
+ UNIMPLEMENTED_MIPS();
197
+ break;
198
+ case Code::KEYED_STORE_IC:
199
+ UNIMPLEMENTED_MIPS();
200
+ break;
201
+ case Code::STORE_IC:
202
+ UNIMPLEMENTED_MIPS();
203
+ break;
204
+ case Code::BUILTIN:
205
+ UNIMPLEMENTED_MIPS();
206
+ break;
207
+ default:
208
+ UNREACHABLE();
209
+ break;
210
+ }
211
+ Forget(dropped_args);
212
+ ASSERT(cgen()->HasValidEntryRegisters());
213
+ __ Call(code, rmode);
214
+ }
215
+
216
+
217
+ void VirtualFrame::CallCodeObject(Handle<Code> code,
218
+ RelocInfo::Mode rmode,
219
+ Result* arg,
220
+ int dropped_args) {
221
+ UNIMPLEMENTED_MIPS();
222
+ }
223
+
224
+
225
+ void VirtualFrame::CallCodeObject(Handle<Code> code,
226
+ RelocInfo::Mode rmode,
227
+ Result* arg0,
228
+ Result* arg1,
229
+ int dropped_args,
230
+ bool set_auto_args_slots) {
231
+ UNIMPLEMENTED_MIPS();
232
+ }
233
+
234
+
235
+ void VirtualFrame::Drop(int count) {
236
+ ASSERT(count >= 0);
237
+ ASSERT(height() >= count);
238
+ int num_virtual_elements = (element_count() - 1) - stack_pointer_;
239
+
240
+ // Emit code to lower the stack pointer if necessary.
241
+ if (num_virtual_elements < count) {
242
+ int num_dropped = count - num_virtual_elements;
243
+ stack_pointer_ -= num_dropped;
244
+ __ addiu(sp, sp, num_dropped * kPointerSize);
245
+ }
246
+
247
+ // Discard elements from the virtual frame and free any registers.
248
+ for (int i = 0; i < count; i++) {
249
+ FrameElement dropped = elements_.RemoveLast();
250
+ if (dropped.is_register()) {
251
+ Unuse(dropped.reg());
252
+ }
253
+ }
254
+ }
255
+
256
+
257
+ void VirtualFrame::DropFromVFrameOnly(int count) {
258
+ UNIMPLEMENTED_MIPS();
259
+ }
260
+
261
+
262
+ Result VirtualFrame::Pop() {
263
+ UNIMPLEMENTED_MIPS();
264
+ Result res = Result();
265
+ return res; // UNIMPLEMENTED RETURN
266
+ }
267
+
268
+
269
+ void VirtualFrame::EmitPop(Register reg) {
270
+ ASSERT(stack_pointer_ == element_count() - 1);
271
+ stack_pointer_--;
272
+ elements_.RemoveLast();
273
+ __ Pop(reg);
274
+ }
275
+
276
+
277
+ void VirtualFrame::EmitMultiPop(RegList regs) {
278
+ ASSERT(stack_pointer_ == element_count() - 1);
279
+ for (int16_t i = 0; i < kNumRegisters; i++) {
280
+ if ((regs & (1 << i)) != 0) {
281
+ stack_pointer_--;
282
+ elements_.RemoveLast();
283
+ }
284
+ }
285
+ __ MultiPop(regs);
286
+ }
287
+
288
+
289
+ void VirtualFrame::EmitPush(Register reg) {
290
+ ASSERT(stack_pointer_ == element_count() - 1);
291
+ elements_.Add(FrameElement::MemoryElement(NumberInfo::Unknown()));
292
+ stack_pointer_++;
293
+ __ Push(reg);
294
+ }
295
+
296
+
297
+ void VirtualFrame::EmitMultiPush(RegList regs) {
298
+ ASSERT(stack_pointer_ == element_count() - 1);
299
+ for (int16_t i = kNumRegisters; i > 0; i--) {
300
+ if ((regs & (1 << i)) != 0) {
301
+ elements_.Add(FrameElement::MemoryElement(NumberInfo::Unknown()));
302
+ stack_pointer_++;
303
+ }
304
+ }
305
+ __ MultiPush(regs);
306
+ }
307
+
308
+
309
+ void VirtualFrame::EmitArgumentSlots(RegList reglist) {
310
+ UNIMPLEMENTED_MIPS();
311
+ }
312
+
313
+ #undef __
314
+
315
+ } } // namespace v8::internal
316
+
@@ -1,4 +1,4 @@
1
- // Copyright 2009 the V8 project authors. All rights reserved.
1
+ // Copyright 2010 the V8 project authors. All rights reserved.
2
2
  // Redistribution and use in source and binary forms, with or without
3
3
  // modification, are permitted provided that the following conditions are
4
4
  // met:
@@ -25,8 +25,9 @@
25
25
  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
26
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
- #ifndef V8_ARM_VIRTUAL_FRAME_ARM_H_
29
- #define V8_ARM_VIRTUAL_FRAME_ARM_H_
28
+
29
+ #ifndef V8_MIPS_VIRTUAL_FRAME_MIPS_H_
30
+ #define V8_MIPS_VIRTUAL_FRAME_MIPS_H_
30
31
 
31
32
  #include "register-allocator.h"
32
33
  #include "scopes.h"
@@ -34,21 +35,22 @@
34
35
  namespace v8 {
35
36
  namespace internal {
36
37
 
38
+
37
39
  // -------------------------------------------------------------------------
38
40
  // Virtual frames
39
41
  //
40
- // The virtual frame is an abstraction of the physical stack frame. It
42
+ // The virtual frame is an abstraction of the physical stack frame. It
41
43
  // encapsulates the parameters, frame-allocated locals, and the expression
42
- // stack. It supports push/pop operations on the expression stack, as well
44
+ // stack. It supports push/pop operations on the expression stack, as well
43
45
  // as random access to the expression stack elements, locals, and
44
46
  // parameters.
45
47
 
46
48
  class VirtualFrame : public ZoneObject {
47
49
  public:
48
50
  // A utility class to introduce a scope where the virtual frame is
49
- // expected to remain spilled. The constructor spills the code
51
+ // expected to remain spilled. The constructor spills the code
50
52
  // generator's current frame, but no attempt is made to require it
51
- // to stay spilled. It is intended as documentation while the code
53
+ // to stay spilled. It is intended as documentation while the code
52
54
  // generator is being transformed.
53
55
  class SpilledScope BASE_EMBEDDED {
54
56
  public:
@@ -59,16 +61,17 @@ class VirtualFrame : public ZoneObject {
59
61
  static const int kIllegalIndex = -1;
60
62
 
61
63
  // Construct an initial virtual frame on entry to a JS function.
62
- VirtualFrame();
64
+ inline VirtualFrame();
63
65
 
64
66
  // Construct a virtual frame as a clone of an existing one.
65
- explicit VirtualFrame(VirtualFrame* original);
67
+ explicit inline VirtualFrame(VirtualFrame* original);
66
68
 
67
69
  CodeGenerator* cgen() { return CodeGeneratorScope::Current(); }
68
70
  MacroAssembler* masm() { return cgen()->masm(); }
69
71
 
70
72
  // Create a duplicate of an existing valid frame element.
71
- FrameElement CopyElementAt(int index);
73
+ FrameElement CopyElementAt(int index,
74
+ NumberInfo info = NumberInfo::Unknown());
72
75
 
73
76
  // The number of elements on the virtual frame.
74
77
  int element_count() { return elements_.length(); }
@@ -102,23 +105,23 @@ class VirtualFrame : public ZoneObject {
102
105
  }
103
106
 
104
107
  // Add extra in-memory elements to the top of the frame to match an actual
105
- // frame (eg, the frame after an exception handler is pushed). No code is
108
+ // frame (eg, the frame after an exception handler is pushed). No code is
106
109
  // emitted.
107
110
  void Adjust(int count);
108
111
 
109
112
  // Forget elements from the top of the frame to match an actual frame (eg,
110
- // the frame after a runtime call). No code is emitted.
113
+ // the frame after a runtime call). No code is emitted.
111
114
  void Forget(int count) {
112
115
  ASSERT(count >= 0);
113
116
  ASSERT(stack_pointer_ == element_count() - 1);
114
117
  stack_pointer_ -= count;
115
- // On ARM, all elements are in memory, so there is no extra bookkeeping
118
+ // On mips, all elements are in memory, so there is no extra bookkeeping
116
119
  // (registers, copies, etc.) beyond dropping the elements.
117
120
  elements_.Rewind(stack_pointer_ + 1);
118
121
  }
119
122
 
120
123
  // Forget count elements from the top of the frame and adjust the stack
121
- // pointer downward. This is used, for example, before merging frames at
124
+ // pointer downward. This is used, for example, before merging frames at
122
125
  // break, continue, and return targets.
123
126
  void ForgetElements(int count);
124
127
 
@@ -130,24 +133,24 @@ class VirtualFrame : public ZoneObject {
130
133
  if (is_used(reg)) SpillElementAt(register_location(reg));
131
134
  }
132
135
 
133
- // Spill all occurrences of an arbitrary register if possible. Return the
136
+ // Spill all occurrences of an arbitrary register if possible. Return the
134
137
  // register spilled or no_reg if it was not possible to free any register
135
138
  // (ie, they all have frame-external references).
136
139
  Register SpillAnyRegister();
137
140
 
138
141
  // Prepare this virtual frame for merging to an expected frame by
139
142
  // performing some state changes that do not require generating
140
- // code. It is guaranteed that no code will be generated.
143
+ // code. It is guaranteed that no code will be generated.
141
144
  void PrepareMergeTo(VirtualFrame* expected);
142
145
 
143
146
  // Make this virtual frame have a state identical to an expected virtual
144
- // frame. As a side effect, code may be emitted to make this frame match
147
+ // frame. As a side effect, code may be emitted to make this frame match
145
148
  // the expected one.
146
149
  void MergeTo(VirtualFrame* expected);
147
150
 
148
- // Detach a frame from its code generator, perhaps temporarily. This
151
+ // Detach a frame from its code generator, perhaps temporarily. This
149
152
  // tells the register allocator that it is free to use frame-internal
150
- // registers. Used when the code generator's frame is switched from this
153
+ // registers. Used when the code generator's frame is switched from this
151
154
  // one to NULL by an unconditional jump.
152
155
  void DetachFromCodeGenerator() {
153
156
  RegisterAllocator* cgen_allocator = cgen()->allocator();
@@ -156,7 +159,7 @@ class VirtualFrame : public ZoneObject {
156
159
  }
157
160
  }
158
161
 
159
- // (Re)attach a frame to its code generator. This informs the register
162
+ // (Re)attach a frame to its code generator. This informs the register
160
163
  // allocator that the frame-internal register references are active again.
161
164
  // Used when a code generator's frame is switched from NULL to this one by
162
165
  // binding a label.
@@ -167,22 +170,19 @@ class VirtualFrame : public ZoneObject {
167
170
  }
168
171
  }
169
172
 
170
- // Emit code for the physical JS entry and exit frame sequences. After
173
+ // Emit code for the physical JS entry and exit frame sequences. After
171
174
  // calling Enter, the virtual frame is ready for use; and after calling
172
- // Exit it should not be used. Note that Enter does not allocate space in
175
+ // Exit it should not be used. Note that Enter does not allocate space in
173
176
  // the physical frame for storing frame-allocated locals.
174
177
  void Enter();
175
178
  void Exit();
176
179
 
177
180
  // Prepare for returning from the frame by spilling locals and
178
- // dropping all non-locals elements in the virtual frame. This
181
+ // dropping all non-locals elements in the virtual frame. This
179
182
  // avoids generating unnecessary merge code when jumping to the
180
- // shared return site. Emits code for spills.
183
+ // shared return site. Emits code for spills.
181
184
  void PrepareForReturn();
182
185
 
183
- // Number of local variables after when we use a loop for allocating.
184
- static const int kLocalVarBound = 5;
185
-
186
186
  // Allocate and initialize the frame-allocated locals.
187
187
  void AllocateStackSlots();
188
188
 
@@ -194,11 +194,11 @@ class VirtualFrame : public ZoneObject {
194
194
  return MemOperand(sp, index * kPointerSize);
195
195
  }
196
196
 
197
- // Random-access store to a frame-top relative frame element. The result
197
+ // Random-access store to a frame-top relative frame element. The result
198
198
  // becomes owned by the frame and is invalidated.
199
199
  void SetElementAt(int index, Result* value);
200
200
 
201
- // Set a frame element to a constant. The index is frame-top relative.
201
+ // Set a frame element to a constant. The index is frame-top relative.
202
202
  void SetElementAt(int index, Handle<Object> value) {
203
203
  Result temp(value);
204
204
  SetElementAt(index, &temp);
@@ -212,7 +212,7 @@ class VirtualFrame : public ZoneObject {
212
212
  MemOperand LocalAt(int index) {
213
213
  ASSERT(0 <= index);
214
214
  ASSERT(index < local_count());
215
- return MemOperand(fp, kLocal0Offset - index * kPointerSize);
215
+ return MemOperand(s8_fp, kLocal0Offset - index * kPointerSize);
216
216
  }
217
217
 
218
218
  // Push a copy of the value of a local frame slot on top of the frame.
@@ -221,13 +221,13 @@ class VirtualFrame : public ZoneObject {
221
221
  }
222
222
 
223
223
  // Push the value of a local frame slot on top of the frame and invalidate
224
- // the local slot. The slot should be written to before trying to read
224
+ // the local slot. The slot should be written to before trying to read
225
225
  // from it again.
226
226
  void TakeLocalAt(int index) {
227
227
  TakeFrameSlotAt(local0_index() + index);
228
228
  }
229
229
 
230
- // Store the top value on the virtual frame into a local frame slot. The
230
+ // Store the top value on the virtual frame into a local frame slot. The
231
231
  // value is left in place on top of the frame.
232
232
  void StoreToLocalAt(int index) {
233
233
  StoreToFrameSlotAt(local0_index() + index);
@@ -237,18 +237,18 @@ class VirtualFrame : public ZoneObject {
237
237
  void PushReceiverSlotAddress();
238
238
 
239
239
  // The function frame slot.
240
- MemOperand Function() { return MemOperand(fp, kFunctionOffset); }
240
+ MemOperand Function() { return MemOperand(s8_fp, kFunctionOffset); }
241
241
 
242
242
  // Push the function on top of the frame.
243
243
  void PushFunction() { PushFrameSlotAt(function_index()); }
244
244
 
245
245
  // The context frame slot.
246
- MemOperand Context() { return MemOperand(fp, kContextOffset); }
246
+ MemOperand Context() { return MemOperand(s8_fp, kContextOffset); }
247
247
 
248
- // Save the value of the esi register to the context frame slot.
248
+ // Save the value of the cp register to the context frame slot.
249
249
  void SaveContextRegister();
250
250
 
251
- // Restore the esi register from the value of the context frame
251
+ // Restore the cp register from the value of the context frame
252
252
  // slot.
253
253
  void RestoreContextRegister();
254
254
 
@@ -257,7 +257,8 @@ class VirtualFrame : public ZoneObject {
257
257
  // Index -1 corresponds to the receiver.
258
258
  ASSERT(-1 <= index); // -1 is the receiver.
259
259
  ASSERT(index <= parameter_count());
260
- return MemOperand(fp, (1 + parameter_count() - index) * kPointerSize);
260
+ uint16_t a = 0; // Number of argument slots.
261
+ return MemOperand(s8_fp, (1 + parameter_count() + a - index) *kPointerSize);
261
262
  }
262
263
 
263
264
  // Push a copy of the value of a parameter frame slot on top of the frame.
@@ -266,7 +267,7 @@ class VirtualFrame : public ZoneObject {
266
267
  }
267
268
 
268
269
  // Push the value of a paramter frame slot on top of the frame and
269
- // invalidate the parameter slot. The slot should be written to before
270
+ // invalidate the parameter slot. The slot should be written to before
270
271
  // trying to read from it again.
271
272
  void TakeParameterAt(int index) {
272
273
  TakeFrameSlotAt(param0_index() + index);
@@ -291,12 +292,8 @@ class VirtualFrame : public ZoneObject {
291
292
  RawCallStub(stub);
292
293
  }
293
294
 
294
- // Call stub that expects its argument in r0. The argument is given
295
- // as a result which must be the register r0.
296
295
  void CallStub(CodeStub* stub, Result* arg);
297
296
 
298
- // Call stub that expects its arguments in r1 and r0. The arguments
299
- // are given as results which must be the appropriate registers.
300
297
  void CallStub(CodeStub* stub, Result* arg0, Result* arg1);
301
298
 
302
299
  // Call runtime given the number of arguments expected on (and
@@ -304,14 +301,19 @@ class VirtualFrame : public ZoneObject {
304
301
  void CallRuntime(Runtime::Function* f, int arg_count);
305
302
  void CallRuntime(Runtime::FunctionId id, int arg_count);
306
303
 
304
+ // Call runtime with sp aligned to 8 bytes.
305
+ void CallAlignedRuntime(Runtime::Function* f, int arg_count);
306
+ void CallAlignedRuntime(Runtime::FunctionId id, int arg_count);
307
+
307
308
  // Invoke builtin given the number of arguments it expects on (and
308
309
  // removes from) the stack.
309
310
  void InvokeBuiltin(Builtins::JavaScript id,
310
311
  InvokeJSFlags flag,
312
+ Result* arg_count_register,
311
313
  int arg_count);
312
314
 
313
315
  // Call into an IC stub given the number of arguments it removes
314
- // from the stack. Register arguments are passed as results and
316
+ // from the stack. Register arguments are passed as results and
315
317
  // consumed by the call.
316
318
  void CallCodeObject(Handle<Code> ic,
317
319
  RelocInfo::Mode rmode,
@@ -324,40 +326,46 @@ class VirtualFrame : public ZoneObject {
324
326
  RelocInfo::Mode rmode,
325
327
  Result* arg0,
326
328
  Result* arg1,
327
- int dropped_args);
329
+ int dropped_args,
330
+ bool set_auto_args_slots = false);
328
331
 
329
- // Drop a number of elements from the top of the expression stack. May
330
- // emit code to affect the physical frame. Does not clobber any registers
332
+ // Drop a number of elements from the top of the expression stack. May
333
+ // emit code to affect the physical frame. Does not clobber any registers
331
334
  // excepting possibly the stack pointer.
332
335
  void Drop(int count);
336
+ // Similar to VirtualFrame::Drop but we don't modify the actual stack.
337
+ // This is because we need to manually restore sp to the correct position.
338
+ void DropFromVFrameOnly(int count);
333
339
 
334
340
  // Drop one element.
335
341
  void Drop() { Drop(1); }
342
+ void DropFromVFrameOnly() { DropFromVFrameOnly(1); }
336
343
 
337
344
  // Duplicate the top element of the frame.
338
345
  void Dup() { PushFrameSlotAt(element_count() - 1); }
339
346
 
340
- // Pop an element from the top of the expression stack. Returns a
347
+ // Pop an element from the top of the expression stack. Returns a
341
348
  // Result, which may be a constant or a register.
342
349
  Result Pop();
343
350
 
344
351
  // Pop and save an element from the top of the expression stack and
345
352
  // emit a corresponding pop instruction.
346
353
  void EmitPop(Register reg);
354
+ // Same but for multiple registers
355
+ void EmitMultiPop(RegList regs);
356
+ void EmitMultiPopReversed(RegList regs);
347
357
 
348
358
  // Push an element on top of the expression stack and emit a
349
359
  // corresponding push instruction.
350
360
  void EmitPush(Register reg);
351
-
352
- // Push multiple registers on the stack and the virtual frame
353
- // Register are selected by setting bit in src_regs and
354
- // are pushed in decreasing order: r15 .. r0.
355
- void EmitPushMultiple(int count, int src_regs);
361
+ // Same but for multiple registers.
362
+ void EmitMultiPush(RegList regs);
363
+ void EmitMultiPushReversed(RegList regs);
356
364
 
357
365
  // Push an element on the virtual frame.
358
- void Push(Register reg);
359
- void Push(Handle<Object> value);
360
- void Push(Smi* value) { Push(Handle<Object>(value)); }
366
+ inline void Push(Register reg, NumberInfo info = NumberInfo::Unknown());
367
+ inline void Push(Handle<Object> value);
368
+ inline void Push(Smi* value);
361
369
 
362
370
  // Pushing a result invalidates it (its contents become owned by the frame).
363
371
  void Push(Result* result) {
@@ -372,8 +380,15 @@ class VirtualFrame : public ZoneObject {
372
380
 
373
381
  // Nip removes zero or more elements from immediately below the top
374
382
  // of the frame, leaving the previous top-of-frame value on top of
375
- // the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x).
376
- void Nip(int num_dropped);
383
+ // the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x).
384
+ inline void Nip(int num_dropped);
385
+
386
+ // This pushes 4 arguments slots on the stack and saves asked 'a' registers
387
+ // 'a' registers are arguments register a0 to a3.
388
+ void EmitArgumentSlots(RegList reglist);
389
+
390
+ inline void SetTypeForLocalAt(int index, NumberInfo info);
391
+ inline void SetTypeForParamAt(int index, NumberInfo info);
377
392
 
378
393
  private:
379
394
  static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset;
@@ -398,23 +413,23 @@ class VirtualFrame : public ZoneObject {
398
413
  int local_count() { return cgen()->scope()->num_stack_slots(); }
399
414
 
400
415
  // The index of the element that is at the processor's frame pointer
401
- // (the fp register). The parameters, receiver, function, and context
416
+ // (the fp register). The parameters, receiver, function, and context
402
417
  // are below the frame pointer.
403
418
  int frame_pointer() { return parameter_count() + 3; }
404
419
 
405
- // The index of the first parameter. The receiver lies below the first
420
+ // The index of the first parameter. The receiver lies below the first
406
421
  // parameter.
407
422
  int param0_index() { return 1; }
408
423
 
409
- // The index of the context slot in the frame. It is immediately
424
+ // The index of the context slot in the frame. It is immediately
410
425
  // below the frame pointer.
411
426
  int context_index() { return frame_pointer() - 1; }
412
427
 
413
- // The index of the function slot in the frame. It is below the frame
428
+ // The index of the function slot in the frame. It is below the frame
414
429
  // pointer and context slot.
415
430
  int function_index() { return frame_pointer() - 2; }
416
431
 
417
- // The index of the first local. Between the frame pointer and the
432
+ // The index of the first local. Between the frame pointer and the
418
433
  // locals lies the return address.
419
434
  int local0_index() { return frame_pointer() + 2; }
420
435
 
@@ -429,7 +444,7 @@ class VirtualFrame : public ZoneObject {
429
444
  return (frame_pointer() - index) * kPointerSize;
430
445
  }
431
446
 
432
- // Record an occurrence of a register in the virtual frame. This has the
447
+ // Record an occurrence of a register in the virtual frame. This has the
433
448
  // effect of incrementing the register's external reference count and
434
449
  // of updating the index of the register's location in the frame.
435
450
  void Use(Register reg, int index) {
@@ -438,7 +453,7 @@ class VirtualFrame : public ZoneObject {
438
453
  cgen()->allocator()->Use(reg);
439
454
  }
440
455
 
441
- // Record that a register reference has been dropped from the frame. This
456
+ // Record that a register reference has been dropped from the frame. This
442
457
  // decrements the register's external reference count and invalidates the
443
458
  // index of the register's location in the frame.
444
459
  void Unuse(Register reg) {
@@ -452,7 +467,7 @@ class VirtualFrame : public ZoneObject {
452
467
  // constant.
453
468
  void SpillElementAt(int index);
454
469
 
455
- // Sync the element at a particular index. If it is a register or
470
+ // Sync the element at a particular index. If it is a register or
456
471
  // constant that disagrees with the value on the stack, write it to memory.
457
472
  // Keep the element type as register or constant, and clear the dirty bit.
458
473
  void SyncElementAt(int index);
@@ -468,7 +483,7 @@ class VirtualFrame : public ZoneObject {
468
483
 
469
484
  // Push a copy of a frame slot (typically a local or parameter) on top of
470
485
  // the frame.
471
- void PushFrameSlotAt(int index);
486
+ inline void PushFrameSlotAt(int index);
472
487
 
473
488
  // Push a the value of a frame slot (typically a local or parameter) on
474
489
  // top of the frame and invalidate the slot.
@@ -479,7 +494,7 @@ class VirtualFrame : public ZoneObject {
479
494
  void StoreToFrameSlotAt(int index);
480
495
 
481
496
  // Spill all elements in registers. Spill the top spilled_args elements
482
- // on the frame. Sync all other frame elements.
497
+ // on the frame. Sync all other frame elements.
483
498
  // Then drop dropped_args elements from the virtual frame, to match
484
499
  // the effect of an upcoming call that will drop them from the stack.
485
500
  void PrepareForCall(int spilled_args, int dropped_args);
@@ -500,14 +515,14 @@ class VirtualFrame : public ZoneObject {
500
515
  // Make the memory-to-register and constant-to-register moves
501
516
  // needed to make this frame equal the expected frame.
502
517
  // Called after all register-to-memory and register-to-register
503
- // moves have been made. After this function returns, the frames
518
+ // moves have been made. After this function returns, the frames
504
519
  // should be equal.
505
520
  void MergeMoveMemoryToRegisters(VirtualFrame* expected);
506
521
 
507
522
  // Invalidates a frame slot (puts an invalid frame element in it).
508
523
  // Copies on the frame are correctly handled, and if this slot was
509
524
  // the backing store of copies, the index of the new backing store
510
- // is returned. Otherwise, returns kIllegalIndex.
525
+ // is returned. Otherwise, returns kIllegalIndex.
511
526
  // Register counts are correctly updated.
512
527
  int InvalidateFrameSlotAt(int index);
513
528
 
@@ -519,7 +534,7 @@ class VirtualFrame : public ZoneObject {
519
534
  // (via PrepareForCall).
520
535
  void RawCallCodeObject(Handle<Code> code, RelocInfo::Mode rmode);
521
536
 
522
- bool Equals(VirtualFrame* other);
537
+ inline bool Equals(VirtualFrame* other);
523
538
 
524
539
  // Classes that need raw access to the elements_ array.
525
540
  friend class DeferredCode;
@@ -529,4 +544,5 @@ class VirtualFrame : public ZoneObject {
529
544
 
530
545
  } } // namespace v8::internal
531
546
 
532
- #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_
547
+ #endif // V8_MIPS_VIRTUAL_FRAME_MIPS_H_
548
+