therubyracer 0.7.4 → 0.7.5

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 (482) hide show
  1. data/History.txt +11 -0
  2. data/Rakefile +1 -1
  3. data/ext/v8/extconf.rb +0 -18
  4. data/ext/v8/rr.cpp +2 -2
  5. data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
  6. data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
  7. data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
  8. data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
  9. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
  10. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
  11. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
  12. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
  13. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
  14. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
  15. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
  16. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
  17. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
  18. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
  19. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
  20. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
  21. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
  22. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
  23. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
  24. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
  25. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
  26. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
  27. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
  28. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
  29. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
  30. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
  31. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
  32. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
  33. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
  34. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
  35. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
  36. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
  37. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
  38. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
  39. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
  40. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
  41. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
  42. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
  43. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
  44. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
  45. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
  46. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
  47. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
  48. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
  49. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
  50. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
  51. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
  52. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
  53. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
  54. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
  55. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
  56. data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
  57. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
  58. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
  59. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
  60. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
  61. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
  62. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
  63. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
  64. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
  65. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
  66. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
  67. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
  68. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
  69. data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
  70. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
  71. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
  72. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
  73. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
  74. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
  75. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
  76. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
  77. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
  78. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
  79. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
  80. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
  81. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
  82. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
  83. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
  84. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
  85. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
  86. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
  87. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
  88. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
  89. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
  90. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
  91. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
  92. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
  93. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
  94. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
  95. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
  96. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
  97. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
  98. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
  99. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
  100. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
  101. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
  102. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
  103. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
  104. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
  105. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
  106. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
  107. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
  108. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
  109. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
  110. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
  111. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
  112. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
  113. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
  114. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
  115. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
  116. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
  117. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
  118. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
  119. data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
  120. data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
  121. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
  122. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
  123. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
  124. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
  125. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
  126. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
  127. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
  128. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
  129. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
  130. data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
  131. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
  132. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
  133. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
  134. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
  135. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
  136. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
  137. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
  138. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
  139. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
  140. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
  141. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
  142. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
  143. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
  146. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
  148. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
  150. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
  151. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
  154. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
  155. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
  156. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
  157. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
  158. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
  159. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
  160. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
  161. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
  162. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
  164. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
  165. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
  166. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
  167. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
  168. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
  169. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
  170. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
  171. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
  173. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
  174. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
  175. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
  176. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
  177. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
  178. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
  179. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
  181. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
  184. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
  185. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
  186. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
  187. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
  188. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
  189. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
  190. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
  193. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
  194. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
  195. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
  196. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
  197. data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
  198. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
  199. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
  200. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
  201. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
  202. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
  203. data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
  204. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
  205. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
  206. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
  207. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
  208. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
  209. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
  210. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
  211. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
  212. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
  213. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
  214. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
  215. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
  216. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
  217. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
  218. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
  219. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
  220. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
  221. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
  222. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
  223. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
  224. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
  225. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
  226. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
  227. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
  228. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
  229. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
  230. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
  231. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
  232. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
  233. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
  234. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
  235. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
  236. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
  237. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
  238. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
  239. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
  240. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
  241. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
  242. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
  243. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
  244. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
  245. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
  246. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
  247. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
  248. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
  249. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
  250. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
  251. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
  252. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
  253. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
  254. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
  255. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
  256. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
  257. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
  258. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
  259. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
  260. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
  261. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
  262. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
  263. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
  264. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
  265. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
  266. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
  267. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
  268. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
  269. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
  270. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
  271. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
  272. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
  273. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
  274. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
  275. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
  276. data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
  277. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
  278. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
  279. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  280. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
  281. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
  282. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
  283. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
  284. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
  285. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
  286. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
  287. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
  288. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
  289. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
  290. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
  291. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
  292. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
  293. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
  294. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
  295. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
  296. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
  297. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
  298. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
  299. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
  300. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
  301. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
  302. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
  303. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
  304. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
  305. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
  306. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
  307. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
  308. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
  309. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
  310. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
  311. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
  312. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
  313. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
  314. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
  315. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
  316. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
  317. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
  318. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
  319. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
  320. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
  321. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
  322. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
  323. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
  324. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
  325. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
  326. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
  327. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
  328. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
  329. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
  330. data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
  331. data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
  332. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
  333. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
  334. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
  335. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
  336. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
  337. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
  338. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
  339. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
  340. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
  341. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
  342. data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
  343. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
  344. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
  345. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
  346. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
  347. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
  348. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
  349. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
  350. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
  351. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
  352. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
  353. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
  354. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
  355. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
  356. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
  357. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
  358. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
  359. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
  360. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
  361. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
  362. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
  363. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
  364. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
  365. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
  366. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
  367. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
  368. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
  369. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
  370. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
  371. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
  372. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
  373. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
  374. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
  375. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
  376. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
  377. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
  378. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
  379. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
  380. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
  381. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
  382. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
  383. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
  384. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
  385. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
  386. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
  387. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
  388. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
  389. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
  390. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
  391. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
  392. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
  393. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
  394. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
  395. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
  396. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
  397. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
  398. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
  399. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
  400. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
  401. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
  402. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
  403. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
  404. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
  405. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
  406. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
  407. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
  408. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
  409. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
  410. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
  411. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
  412. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
  413. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
  414. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
  415. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
  416. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
  417. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
  418. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
  419. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
  420. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
  421. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
  422. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
  423. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
  424. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
  425. data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
  426. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
  427. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
  428. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
  429. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
  430. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
  431. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
  432. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
  433. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
  434. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
  435. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
  436. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
  437. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
  438. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
  439. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
  440. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
  441. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
  442. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
  443. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
  444. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
  445. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  446. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  447. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  448. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  449. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  450. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  451. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
  453. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
  454. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
  455. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  456. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  457. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  458. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  459. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
  460. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
  461. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
  462. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
  463. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
  464. data/ext/v8/upstream/Makefile +1 -1
  465. data/ext/v8/v8_template.cpp +94 -2
  466. data/ext/v8/v8_try_catch.cpp +2 -2
  467. data/lib/v8.rb +1 -1
  468. data/lib/v8/access.rb +93 -40
  469. data/lib/v8/cli.rb +1 -1
  470. data/lib/v8/function.rb +14 -2
  471. data/spec/redjs/jsapi_spec.rb +231 -42
  472. data/therubyracer.gemspec +3 -3
  473. metadata +463 -453
  474. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
  475. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
  476. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
  477. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
  478. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
  479. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
  480. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
  481. data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
  482. data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
@@ -0,0 +1,59 @@
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
+ #ifndef V8_VIRTUAL_FRAME_ARM_INL_H_
29
+ #define V8_VIRTUAL_FRAME_ARM_INL_H_
30
+
31
+ #include "assembler-arm.h"
32
+ #include "virtual-frame-arm.h"
33
+
34
+ namespace v8 {
35
+ namespace internal {
36
+
37
+ // These VirtualFrame methods should actually be in a virtual-frame-arm-inl.h
38
+ // file if such a thing existed.
39
+ MemOperand VirtualFrame::ParameterAt(int index) {
40
+ // Index -1 corresponds to the receiver.
41
+ ASSERT(-1 <= index); // -1 is the receiver.
42
+ ASSERT(index <= parameter_count());
43
+ return MemOperand(fp, (1 + parameter_count() - index) * kPointerSize);
44
+ }
45
+
46
+ // The receiver frame slot.
47
+ MemOperand VirtualFrame::Receiver() {
48
+ return ParameterAt(-1);
49
+ }
50
+
51
+
52
+ void VirtualFrame::Forget(int count) {
53
+ SpillAll();
54
+ LowerHeight(count);
55
+ }
56
+
57
+ } } // namespace v8::internal
58
+
59
+ #endif // V8_VIRTUAL_FRAME_ARM_INL_H_
@@ -27,6 +27,8 @@
27
27
 
28
28
  #include "v8.h"
29
29
 
30
+ #if defined(V8_TARGET_ARCH_ARM)
31
+
30
32
  #include "codegen-inl.h"
31
33
  #include "register-allocator-inl.h"
32
34
  #include "scopes.h"
@@ -38,115 +40,125 @@ namespace internal {
38
40
  #define __ ACCESS_MASM(masm())
39
41
 
40
42
  void VirtualFrame::PopToR1R0() {
41
- VirtualFrame where_to_go = *this;
42
43
  // Shuffle things around so the top of stack is in r0 and r1.
43
- where_to_go.top_of_stack_state_ = R0_R1_TOS;
44
- MergeTo(&where_to_go);
44
+ MergeTOSTo(R0_R1_TOS);
45
45
  // Pop the two registers off the stack so they are detached from the frame.
46
- element_count_ -= 2;
46
+ LowerHeight(2);
47
47
  top_of_stack_state_ = NO_TOS_REGISTERS;
48
48
  }
49
49
 
50
50
 
51
51
  void VirtualFrame::PopToR1() {
52
- VirtualFrame where_to_go = *this;
53
52
  // Shuffle things around so the top of stack is only in r1.
54
- where_to_go.top_of_stack_state_ = R1_TOS;
55
- MergeTo(&where_to_go);
53
+ MergeTOSTo(R1_TOS);
56
54
  // Pop the register off the stack so it is detached from the frame.
57
- element_count_ -= 1;
55
+ LowerHeight(1);
58
56
  top_of_stack_state_ = NO_TOS_REGISTERS;
59
57
  }
60
58
 
61
59
 
62
60
  void VirtualFrame::PopToR0() {
63
- VirtualFrame where_to_go = *this;
64
61
  // Shuffle things around so the top of stack only in r0.
65
- where_to_go.top_of_stack_state_ = R0_TOS;
66
- MergeTo(&where_to_go);
62
+ MergeTOSTo(R0_TOS);
67
63
  // Pop the register off the stack so it is detached from the frame.
68
- element_count_ -= 1;
64
+ LowerHeight(1);
69
65
  top_of_stack_state_ = NO_TOS_REGISTERS;
70
66
  }
71
67
 
72
68
 
73
- void VirtualFrame::MergeTo(VirtualFrame* expected) {
69
+ void VirtualFrame::MergeTo(const VirtualFrame* expected, Condition cond) {
70
+ if (Equals(expected)) return;
71
+ ASSERT(expected->IsCompatibleWith(this));
72
+ MergeTOSTo(expected->top_of_stack_state_, cond);
73
+ ASSERT(register_allocation_map_ == expected->register_allocation_map_);
74
+ }
75
+
76
+
77
+ void VirtualFrame::MergeTo(VirtualFrame* expected, Condition cond) {
74
78
  if (Equals(expected)) return;
79
+ expected->tos_known_smi_map_ &= tos_known_smi_map_;
80
+ MergeTOSTo(expected->top_of_stack_state_, cond);
81
+ ASSERT(register_allocation_map_ == expected->register_allocation_map_);
82
+ }
83
+
84
+
85
+ void VirtualFrame::MergeTOSTo(
86
+ VirtualFrame::TopOfStack expected_top_of_stack_state, Condition cond) {
75
87
  #define CASE_NUMBER(a, b) ((a) * TOS_STATES + (b))
76
- switch (CASE_NUMBER(top_of_stack_state_, expected->top_of_stack_state_)) {
88
+ switch (CASE_NUMBER(top_of_stack_state_, expected_top_of_stack_state)) {
77
89
  case CASE_NUMBER(NO_TOS_REGISTERS, NO_TOS_REGISTERS):
78
90
  break;
79
91
  case CASE_NUMBER(NO_TOS_REGISTERS, R0_TOS):
80
- __ pop(r0);
92
+ __ pop(r0, cond);
81
93
  break;
82
94
  case CASE_NUMBER(NO_TOS_REGISTERS, R1_TOS):
83
- __ pop(r1);
95
+ __ pop(r1, cond);
84
96
  break;
85
97
  case CASE_NUMBER(NO_TOS_REGISTERS, R0_R1_TOS):
86
- __ pop(r0);
87
- __ pop(r1);
98
+ __ pop(r0, cond);
99
+ __ pop(r1, cond);
88
100
  break;
89
101
  case CASE_NUMBER(NO_TOS_REGISTERS, R1_R0_TOS):
90
- __ pop(r1);
91
- __ pop(r0);
102
+ __ pop(r1, cond);
103
+ __ pop(r0, cond);
92
104
  break;
93
105
  case CASE_NUMBER(R0_TOS, NO_TOS_REGISTERS):
94
- __ push(r0);
106
+ __ push(r0, cond);
95
107
  break;
96
108
  case CASE_NUMBER(R0_TOS, R0_TOS):
97
109
  break;
98
110
  case CASE_NUMBER(R0_TOS, R1_TOS):
99
- __ mov(r1, r0);
111
+ __ mov(r1, r0, LeaveCC, cond);
100
112
  break;
101
113
  case CASE_NUMBER(R0_TOS, R0_R1_TOS):
102
- __ pop(r1);
114
+ __ pop(r1, cond);
103
115
  break;
104
116
  case CASE_NUMBER(R0_TOS, R1_R0_TOS):
105
- __ mov(r1, r0);
106
- __ pop(r0);
117
+ __ mov(r1, r0, LeaveCC, cond);
118
+ __ pop(r0, cond);
107
119
  break;
108
120
  case CASE_NUMBER(R1_TOS, NO_TOS_REGISTERS):
109
- __ push(r1);
121
+ __ push(r1, cond);
110
122
  break;
111
123
  case CASE_NUMBER(R1_TOS, R0_TOS):
112
- __ mov(r0, r1);
124
+ __ mov(r0, r1, LeaveCC, cond);
113
125
  break;
114
126
  case CASE_NUMBER(R1_TOS, R1_TOS):
115
127
  break;
116
128
  case CASE_NUMBER(R1_TOS, R0_R1_TOS):
117
- __ mov(r0, r1);
118
- __ pop(r1);
129
+ __ mov(r0, r1, LeaveCC, cond);
130
+ __ pop(r1, cond);
119
131
  break;
120
132
  case CASE_NUMBER(R1_TOS, R1_R0_TOS):
121
- __ pop(r0);
133
+ __ pop(r0, cond);
122
134
  break;
123
135
  case CASE_NUMBER(R0_R1_TOS, NO_TOS_REGISTERS):
124
- __ Push(r1, r0);
136
+ __ Push(r1, r0, cond);
125
137
  break;
126
138
  case CASE_NUMBER(R0_R1_TOS, R0_TOS):
127
- __ push(r1);
139
+ __ push(r1, cond);
128
140
  break;
129
141
  case CASE_NUMBER(R0_R1_TOS, R1_TOS):
130
- __ push(r1);
131
- __ mov(r1, r0);
142
+ __ push(r1, cond);
143
+ __ mov(r1, r0, LeaveCC, cond);
132
144
  break;
133
145
  case CASE_NUMBER(R0_R1_TOS, R0_R1_TOS):
134
146
  break;
135
147
  case CASE_NUMBER(R0_R1_TOS, R1_R0_TOS):
136
- __ Swap(r0, r1, ip);
148
+ __ Swap(r0, r1, ip, cond);
137
149
  break;
138
150
  case CASE_NUMBER(R1_R0_TOS, NO_TOS_REGISTERS):
139
- __ Push(r0, r1);
151
+ __ Push(r0, r1, cond);
140
152
  break;
141
153
  case CASE_NUMBER(R1_R0_TOS, R0_TOS):
142
- __ push(r0);
143
- __ mov(r0, r1);
154
+ __ push(r0, cond);
155
+ __ mov(r0, r1, LeaveCC, cond);
144
156
  break;
145
157
  case CASE_NUMBER(R1_R0_TOS, R1_TOS):
146
- __ push(r0);
158
+ __ push(r0, cond);
147
159
  break;
148
160
  case CASE_NUMBER(R1_R0_TOS, R0_R1_TOS):
149
- __ Swap(r0, r1, ip);
161
+ __ Swap(r0, r1, ip, cond);
150
162
  break;
151
163
  case CASE_NUMBER(R1_R0_TOS, R1_R0_TOS):
152
164
  break;
@@ -154,7 +166,16 @@ void VirtualFrame::MergeTo(VirtualFrame* expected) {
154
166
  UNREACHABLE();
155
167
  #undef CASE_NUMBER
156
168
  }
157
- ASSERT(register_allocation_map_ == expected->register_allocation_map_);
169
+ // A conditional merge will be followed by a conditional branch and the
170
+ // fall-through code will have an unchanged virtual frame state. If the
171
+ // merge is unconditional ('al'ways) then it might be followed by a fall
172
+ // through. We need to update the virtual frame state to match the code we
173
+ // are falling into. The final case is an unconditional merge followed by an
174
+ // unconditional branch, in which case it doesn't matter what we do to the
175
+ // virtual frame state, because the virtual frame will be invalidated.
176
+ if (cond == al) {
177
+ top_of_stack_state_ = expected_top_of_stack_state;
178
+ }
158
179
  }
159
180
 
160
181
 
@@ -255,7 +276,8 @@ void VirtualFrame::PushTryHandler(HandlerType type) {
255
276
 
256
277
  void VirtualFrame::CallJSFunction(int arg_count) {
257
278
  // InvokeFunction requires function in r1.
258
- EmitPop(r1);
279
+ PopToR1();
280
+ SpillAll();
259
281
 
260
282
  // +1 for receiver.
261
283
  Forget(arg_count + 1);
@@ -268,7 +290,7 @@ void VirtualFrame::CallJSFunction(int arg_count) {
268
290
 
269
291
 
270
292
  void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
271
- ASSERT(SpilledScope::is_spilled());
293
+ SpillAll();
272
294
  Forget(arg_count);
273
295
  ASSERT(cgen()->HasValidEntryRegisters());
274
296
  __ CallRuntime(f, arg_count);
@@ -276,6 +298,7 @@ void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
276
298
 
277
299
 
278
300
  void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) {
301
+ SpillAll();
279
302
  Forget(arg_count);
280
303
  ASSERT(cgen()->HasValidEntryRegisters());
281
304
  __ CallRuntime(id, arg_count);
@@ -300,7 +323,8 @@ void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id,
300
323
 
301
324
  void VirtualFrame::CallLoadIC(Handle<String> name, RelocInfo::Mode mode) {
302
325
  Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
303
- SpillAllButCopyTOSToR0();
326
+ PopToR0();
327
+ SpillAll();
304
328
  __ mov(r2, Operand(name));
305
329
  CallCodeObject(ic, mode, 0);
306
330
  }
@@ -323,14 +347,17 @@ void VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) {
323
347
 
324
348
  void VirtualFrame::CallKeyedLoadIC() {
325
349
  Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
326
- SpillAllButCopyTOSToR0();
350
+ PopToR1R0();
351
+ SpillAll();
327
352
  CallCodeObject(ic, RelocInfo::CODE_TARGET, 0);
328
353
  }
329
354
 
330
355
 
331
356
  void VirtualFrame::CallKeyedStoreIC() {
332
- ASSERT(SpilledScope::is_spilled());
333
357
  Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
358
+ PopToR1R0();
359
+ SpillAll();
360
+ EmitPop(r2);
334
361
  CallCodeObject(ic, RelocInfo::CODE_TARGET, 0);
335
362
  }
336
363
 
@@ -340,6 +367,7 @@ void VirtualFrame::CallCodeObject(Handle<Code> code,
340
367
  int dropped_args) {
341
368
  switch (code->kind()) {
342
369
  case Code::CALL_IC:
370
+ case Code::KEYED_CALL_IC:
343
371
  case Code::FUNCTION:
344
372
  break;
345
373
  case Code::KEYED_LOAD_IC:
@@ -402,7 +430,7 @@ void VirtualFrame::Drop(int count) {
402
430
  }
403
431
  if (count == 0) return;
404
432
  __ add(sp, sp, Operand(count * kPointerSize));
405
- element_count_ -= count;
433
+ LowerHeight(count);
406
434
  }
407
435
 
408
436
 
@@ -412,19 +440,19 @@ void VirtualFrame::Pop() {
412
440
  } else {
413
441
  top_of_stack_state_ = kStateAfterPop[top_of_stack_state_];
414
442
  }
415
- element_count_--;
443
+ LowerHeight(1);
416
444
  }
417
445
 
418
446
 
419
447
  void VirtualFrame::EmitPop(Register reg) {
420
- ASSERT(!is_used(reg));
448
+ ASSERT(!is_used(RegisterAllocator::ToNumber(reg)));
421
449
  if (top_of_stack_state_ == NO_TOS_REGISTERS) {
422
450
  __ pop(reg);
423
451
  } else {
424
452
  __ mov(reg, kTopRegister[top_of_stack_state_]);
425
453
  top_of_stack_state_ = kStateAfterPop[top_of_stack_state_];
426
454
  }
427
- element_count_--;
455
+ LowerHeight(1);
428
456
  }
429
457
 
430
458
 
@@ -454,6 +482,32 @@ void VirtualFrame::SpillAllButCopyTOSToR0() {
454
482
  }
455
483
 
456
484
 
485
+ void VirtualFrame::SpillAllButCopyTOSToR1() {
486
+ switch (top_of_stack_state_) {
487
+ case NO_TOS_REGISTERS:
488
+ __ ldr(r1, MemOperand(sp, 0));
489
+ break;
490
+ case R0_TOS:
491
+ __ push(r0);
492
+ __ mov(r1, r0);
493
+ break;
494
+ case R1_TOS:
495
+ __ push(r1);
496
+ break;
497
+ case R0_R1_TOS:
498
+ __ Push(r1, r0);
499
+ __ mov(r1, r0);
500
+ break;
501
+ case R1_R0_TOS:
502
+ __ Push(r0, r1);
503
+ break;
504
+ default:
505
+ UNREACHABLE();
506
+ }
507
+ top_of_stack_state_ = NO_TOS_REGISTERS;
508
+ }
509
+
510
+
457
511
  void VirtualFrame::SpillAllButCopyTOSToR1R0() {
458
512
  switch (top_of_stack_state_) {
459
513
  case NO_TOS_REGISTERS:
@@ -496,35 +550,100 @@ Register VirtualFrame::Peek() {
496
550
  }
497
551
 
498
552
 
499
- void VirtualFrame::Dup() {
553
+ Register VirtualFrame::Peek2() {
500
554
  AssertIsNotSpilled();
501
555
  switch (top_of_stack_state_) {
502
556
  case NO_TOS_REGISTERS:
503
- __ ldr(r0, MemOperand(sp, 0));
504
- top_of_stack_state_ = R0_TOS;
505
- break;
506
557
  case R0_TOS:
507
- __ mov(r1, r0);
508
- top_of_stack_state_ = R0_R1_TOS;
509
- break;
510
- case R1_TOS:
511
- __ mov(r0, r1);
512
- top_of_stack_state_ = R0_R1_TOS;
513
- break;
514
558
  case R0_R1_TOS:
515
- __ push(r1);
516
- __ mov(r1, r0);
517
- // No need to change state as r0 and r1 now contains the same value.
518
- break;
559
+ MergeTOSTo(R0_R1_TOS);
560
+ return r1;
561
+ case R1_TOS:
519
562
  case R1_R0_TOS:
520
- __ push(r0);
521
- __ mov(r0, r1);
522
- // No need to change state as r0 and r1 now contains the same value.
523
- break;
524
- default:
525
- UNREACHABLE();
563
+ MergeTOSTo(R1_R0_TOS);
564
+ return r0;
565
+ }
566
+ UNREACHABLE();
567
+ return no_reg;
568
+ }
569
+
570
+
571
+ void VirtualFrame::Dup() {
572
+ if (SpilledScope::is_spilled()) {
573
+ __ ldr(ip, MemOperand(sp, 0));
574
+ __ push(ip);
575
+ } else {
576
+ switch (top_of_stack_state_) {
577
+ case NO_TOS_REGISTERS:
578
+ __ ldr(r0, MemOperand(sp, 0));
579
+ top_of_stack_state_ = R0_TOS;
580
+ break;
581
+ case R0_TOS:
582
+ __ mov(r1, r0);
583
+ // r0 and r1 contains the same value. Prefer state with r0 holding TOS.
584
+ top_of_stack_state_ = R0_R1_TOS;
585
+ break;
586
+ case R1_TOS:
587
+ __ mov(r0, r1);
588
+ // r0 and r1 contains the same value. Prefer state with r0 holding TOS.
589
+ top_of_stack_state_ = R0_R1_TOS;
590
+ break;
591
+ case R0_R1_TOS:
592
+ __ push(r1);
593
+ __ mov(r1, r0);
594
+ // r0 and r1 contains the same value. Prefer state with r0 holding TOS.
595
+ top_of_stack_state_ = R0_R1_TOS;
596
+ break;
597
+ case R1_R0_TOS:
598
+ __ push(r0);
599
+ __ mov(r0, r1);
600
+ // r0 and r1 contains the same value. Prefer state with r0 holding TOS.
601
+ top_of_stack_state_ = R0_R1_TOS;
602
+ break;
603
+ default:
604
+ UNREACHABLE();
605
+ }
526
606
  }
527
- element_count_++;
607
+ RaiseHeight(1, tos_known_smi_map_ & 1);
608
+ }
609
+
610
+
611
+ void VirtualFrame::Dup2() {
612
+ if (SpilledScope::is_spilled()) {
613
+ __ ldr(ip, MemOperand(sp, kPointerSize));
614
+ __ push(ip);
615
+ __ ldr(ip, MemOperand(sp, kPointerSize));
616
+ __ push(ip);
617
+ } else {
618
+ switch (top_of_stack_state_) {
619
+ case NO_TOS_REGISTERS:
620
+ __ ldr(r0, MemOperand(sp, 0));
621
+ __ ldr(r1, MemOperand(sp, kPointerSize));
622
+ top_of_stack_state_ = R0_R1_TOS;
623
+ break;
624
+ case R0_TOS:
625
+ __ push(r0);
626
+ __ ldr(r1, MemOperand(sp, kPointerSize));
627
+ top_of_stack_state_ = R0_R1_TOS;
628
+ break;
629
+ case R1_TOS:
630
+ __ push(r1);
631
+ __ ldr(r0, MemOperand(sp, kPointerSize));
632
+ top_of_stack_state_ = R1_R0_TOS;
633
+ break;
634
+ case R0_R1_TOS:
635
+ __ Push(r1, r0);
636
+ top_of_stack_state_ = R0_R1_TOS;
637
+ break;
638
+ case R1_R0_TOS:
639
+ __ Push(r0, r1);
640
+ top_of_stack_state_ = R1_R0_TOS;
641
+ break;
642
+ default:
643
+ UNREACHABLE();
644
+ }
645
+ }
646
+ RaiseHeight(2, tos_known_smi_map_ & 3);
528
647
  }
529
648
 
530
649
 
@@ -532,8 +651,7 @@ Register VirtualFrame::PopToRegister(Register but_not_to_this_one) {
532
651
  ASSERT(but_not_to_this_one.is(r0) ||
533
652
  but_not_to_this_one.is(r1) ||
534
653
  but_not_to_this_one.is(no_reg));
535
- AssertIsNotSpilled();
536
- element_count_--;
654
+ LowerHeight(1);
537
655
  if (top_of_stack_state_ == NO_TOS_REGISTERS) {
538
656
  if (but_not_to_this_one.is(r0)) {
539
657
  __ pop(r1);
@@ -561,9 +679,19 @@ void VirtualFrame::EnsureOneFreeTOSRegister() {
561
679
  }
562
680
 
563
681
 
564
- void VirtualFrame::EmitPush(Register reg) {
565
- element_count_++;
682
+ void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
683
+ RaiseHeight(1, info.IsSmi() ? 1 : 0);
684
+ if (reg.is(cp)) {
685
+ // If we are pushing cp then we are about to make a call and things have to
686
+ // be pushed to the physical stack. There's nothing to be gained my moving
687
+ // to a TOS register and then pushing that, we might as well push to the
688
+ // physical stack immediately.
689
+ MergeTOSTo(NO_TOS_REGISTERS);
690
+ __ push(reg);
691
+ return;
692
+ }
566
693
  if (SpilledScope::is_spilled()) {
694
+ ASSERT(top_of_stack_state_ == NO_TOS_REGISTERS);
567
695
  __ push(reg);
568
696
  return;
569
697
  }
@@ -584,6 +712,42 @@ void VirtualFrame::EmitPush(Register reg) {
584
712
  }
585
713
 
586
714
 
715
+ void VirtualFrame::SetElementAt(Register reg, int this_far_down) {
716
+ if (this_far_down < kTOSKnownSmiMapSize) {
717
+ tos_known_smi_map_ &= ~(1 << this_far_down);
718
+ }
719
+ if (this_far_down == 0) {
720
+ Pop();
721
+ Register dest = GetTOSRegister();
722
+ if (dest.is(reg)) {
723
+ // We already popped one item off the top of the stack. If the only
724
+ // free register is the one we were asked to push then we have been
725
+ // asked to push a register that was already in use, which cannot
726
+ // happen. It therefore folows that there are two free TOS registers:
727
+ ASSERT(top_of_stack_state_ == NO_TOS_REGISTERS);
728
+ dest = dest.is(r0) ? r1 : r0;
729
+ }
730
+ __ mov(dest, reg);
731
+ EmitPush(dest);
732
+ } else if (this_far_down == 1) {
733
+ int virtual_elements = kVirtualElements[top_of_stack_state_];
734
+ if (virtual_elements < 2) {
735
+ __ str(reg, ElementAt(this_far_down));
736
+ } else {
737
+ ASSERT(virtual_elements == 2);
738
+ ASSERT(!reg.is(r0));
739
+ ASSERT(!reg.is(r1));
740
+ Register dest = kBottomRegister[top_of_stack_state_];
741
+ __ mov(dest, reg);
742
+ }
743
+ } else {
744
+ ASSERT(this_far_down >= 2);
745
+ ASSERT(kVirtualElements[top_of_stack_state_] <= 2);
746
+ __ str(reg, ElementAt(this_far_down));
747
+ }
748
+ }
749
+
750
+
587
751
  Register VirtualFrame::GetTOSRegister() {
588
752
  if (SpilledScope::is_spilled()) return r0;
589
753
 
@@ -592,8 +756,8 @@ Register VirtualFrame::GetTOSRegister() {
592
756
  }
593
757
 
594
758
 
595
- void VirtualFrame::EmitPush(Operand operand) {
596
- element_count_++;
759
+ void VirtualFrame::EmitPush(Operand operand, TypeInfo info) {
760
+ RaiseHeight(1, info.IsSmi() ? 1 : 0);
597
761
  if (SpilledScope::is_spilled()) {
598
762
  __ mov(r0, operand);
599
763
  __ push(r0);
@@ -605,8 +769,8 @@ void VirtualFrame::EmitPush(Operand operand) {
605
769
  }
606
770
 
607
771
 
608
- void VirtualFrame::EmitPush(MemOperand operand) {
609
- element_count_++;
772
+ void VirtualFrame::EmitPush(MemOperand operand, TypeInfo info) {
773
+ RaiseHeight(1, info.IsSmi() ? 1 : 0);
610
774
  if (SpilledScope::is_spilled()) {
611
775
  __ ldr(r0, operand);
612
776
  __ push(r0);
@@ -619,7 +783,7 @@ void VirtualFrame::EmitPush(MemOperand operand) {
619
783
 
620
784
 
621
785
  void VirtualFrame::EmitPushRoot(Heap::RootListIndex index) {
622
- element_count_++;
786
+ RaiseHeight(1, 0);
623
787
  if (SpilledScope::is_spilled()) {
624
788
  __ LoadRoot(r0, index);
625
789
  __ push(r0);
@@ -666,3 +830,5 @@ void VirtualFrame::SpillAll() {
666
830
  #undef __
667
831
 
668
832
  } } // namespace v8::internal
833
+
834
+ #endif // V8_TARGET_ARCH_ARM