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
@@ -80,6 +80,11 @@ struct Register {
80
80
  return 1 << code_;
81
81
  }
82
82
 
83
+ void set_code(int code) {
84
+ code_ = code;
85
+ ASSERT(is_valid());
86
+ }
87
+
83
88
  // Unfortunately we can't make this private in a struct.
84
89
  int code_;
85
90
  };
@@ -125,6 +130,20 @@ struct DwVfpRegister {
125
130
  // Supporting d0 to d15, can be later extended to d31.
126
131
  bool is_valid() const { return 0 <= code_ && code_ < 16; }
127
132
  bool is(DwVfpRegister reg) const { return code_ == reg.code_; }
133
+ SwVfpRegister low() const {
134
+ SwVfpRegister reg;
135
+ reg.code_ = code_ * 2;
136
+
137
+ ASSERT(reg.is_valid());
138
+ return reg;
139
+ }
140
+ SwVfpRegister high() const {
141
+ SwVfpRegister reg;
142
+ reg.code_ = (code_ * 2) + 1;
143
+
144
+ ASSERT(reg.is_valid());
145
+ return reg;
146
+ }
128
147
  int code() const {
129
148
  ASSERT(is_valid());
130
149
  return code_;
@@ -274,7 +293,10 @@ enum Condition {
274
293
 
275
294
 
276
295
  // Returns the equivalent of !cc.
277
- INLINE(Condition NegateCondition(Condition cc));
296
+ inline Condition NegateCondition(Condition cc) {
297
+ ASSERT(cc != al);
298
+ return static_cast<Condition>(cc ^ ne);
299
+ }
278
300
 
279
301
 
280
302
  // Corresponds to transposing the operands of a comparison.
@@ -413,7 +435,18 @@ class Operand BASE_EMBEDDED {
413
435
  // Return true if this is a register operand.
414
436
  INLINE(bool is_reg() const);
415
437
 
438
+ // Return true of this operand fits in one instruction so that no
439
+ // 2-instruction solution with a load into the ip register is necessary.
440
+ bool is_single_instruction() const;
441
+
442
+ inline int32_t immediate() const {
443
+ ASSERT(!rm_.is_valid());
444
+ return imm32_;
445
+ }
446
+
416
447
  Register rm() const { return rm_; }
448
+ Register rs() const { return rs_; }
449
+ ShiftOp shift_op() const { return shift_op_; }
417
450
 
418
451
  private:
419
452
  Register rm_;
@@ -448,6 +481,19 @@ class MemOperand BASE_EMBEDDED {
448
481
  explicit MemOperand(Register rn, Register rm,
449
482
  ShiftOp shift_op, int shift_imm, AddrMode am = Offset);
450
483
 
484
+ void set_offset(int32_t offset) {
485
+ ASSERT(rm_.is(no_reg));
486
+ offset_ = offset;
487
+ }
488
+
489
+ uint32_t offset() {
490
+ ASSERT(rm_.is(no_reg));
491
+ return offset_;
492
+ }
493
+
494
+ Register rn() const { return rn_; }
495
+ Register rm() const { return rm_; }
496
+
451
497
  private:
452
498
  Register rn_; // base
453
499
  Register rm_; // register offset
@@ -514,6 +560,27 @@ extern const Instr kLdrPCPattern;
514
560
  extern const Instr kBlxRegMask;
515
561
  extern const Instr kBlxRegPattern;
516
562
 
563
+ extern const Instr kMovMvnMask;
564
+ extern const Instr kMovMvnPattern;
565
+ extern const Instr kMovMvnFlip;
566
+
567
+ extern const Instr kMovLeaveCCMask;
568
+ extern const Instr kMovLeaveCCPattern;
569
+ extern const Instr kMovwMask;
570
+ extern const Instr kMovwPattern;
571
+ extern const Instr kMovwLeaveCCFlip;
572
+
573
+ extern const Instr kCmpCmnMask;
574
+ extern const Instr kCmpCmnPattern;
575
+ extern const Instr kCmpCmnFlip;
576
+
577
+ extern const Instr kALUMask;
578
+ extern const Instr kAddPattern;
579
+ extern const Instr kSubPattern;
580
+ extern const Instr kAndPattern;
581
+ extern const Instr kBicPattern;
582
+ extern const Instr kAddSubFlip;
583
+ extern const Instr kAndBicFlip;
517
584
 
518
585
  class Assembler : public Malloced {
519
586
  public:
@@ -611,22 +678,39 @@ class Assembler : public Malloced {
611
678
  // Distance between start of patched return sequence and the emitted address
612
679
  // to jump to.
613
680
  #ifdef USE_BLX
614
- // Return sequence is:
681
+ // Patched return sequence is:
615
682
  // ldr ip, [pc, #0] @ emited address and start
616
683
  // blx ip
617
684
  static const int kPatchReturnSequenceAddressOffset = 0 * kInstrSize;
618
685
  #else
619
- // Return sequence is:
686
+ // Patched return sequence is:
620
687
  // mov lr, pc @ start of sequence
621
688
  // ldr pc, [pc, #-4] @ emited address
622
689
  static const int kPatchReturnSequenceAddressOffset = kInstrSize;
623
690
  #endif
624
691
 
692
+ // Distance between start of patched debug break slot and the emitted address
693
+ // to jump to.
694
+ #ifdef USE_BLX
695
+ // Patched debug break slot code is:
696
+ // ldr ip, [pc, #0] @ emited address and start
697
+ // blx ip
698
+ static const int kPatchDebugBreakSlotAddressOffset = 0 * kInstrSize;
699
+ #else
700
+ // Patched debug break slot code is:
701
+ // mov lr, pc @ start of sequence
702
+ // ldr pc, [pc, #-4] @ emited address
703
+ static const int kPatchDebugBreakSlotAddressOffset = kInstrSize;
704
+ #endif
705
+
625
706
  // Difference between address of current opcode and value read from pc
626
707
  // register.
627
708
  static const int kPcLoadDelta = 8;
628
709
 
629
- static const int kJSReturnSequenceLength = 4;
710
+ static const int kJSReturnSequenceInstructions = 4;
711
+ static const int kDebugBreakSlotInstructions = 3;
712
+ static const int kDebugBreakSlotLength =
713
+ kDebugBreakSlotInstructions * kInstrSize;
630
714
 
631
715
  // ---------------------------------------------------------------------------
632
716
  // Code generation
@@ -635,6 +719,8 @@ class Assembler : public Malloced {
635
719
  // possible to align the pc offset to a multiple
636
720
  // of m. m must be a power of 2 (>= 4).
637
721
  void Align(int m);
722
+ // Aligns code to something that's optimal for a jump target for the platform.
723
+ void CodeTargetAlign();
638
724
 
639
725
  // Branch instructions
640
726
  void b(int branch_offset, Condition cond = al);
@@ -653,8 +739,6 @@ class Assembler : public Malloced {
653
739
  void blx(Label* L) { blx(branch_offset(L, false)); } // v5 and above
654
740
 
655
741
  // Data-processing instructions
656
- void ubfx(Register dst, Register src1, const Operand& src2,
657
- const Operand& src3, Condition cond = al);
658
742
 
659
743
  void and_(Register dst, Register src1, const Operand& src2,
660
744
  SBit s = LeaveCC, Condition cond = al);
@@ -674,6 +758,10 @@ class Assembler : public Malloced {
674
758
 
675
759
  void add(Register dst, Register src1, const Operand& src2,
676
760
  SBit s = LeaveCC, Condition cond = al);
761
+ void add(Register dst, Register src1, Register src2,
762
+ SBit s = LeaveCC, Condition cond = al) {
763
+ add(dst, src1, Operand(src2), s, cond);
764
+ }
677
765
 
678
766
  void adc(Register dst, Register src1, const Operand& src2,
679
767
  SBit s = LeaveCC, Condition cond = al);
@@ -711,6 +799,13 @@ class Assembler : public Malloced {
711
799
  mov(dst, Operand(src), s, cond);
712
800
  }
713
801
 
802
+ // ARMv7 instructions for loading a 32 bit immediate in two instructions.
803
+ // This may actually emit a different mov instruction, but on an ARMv7 it
804
+ // is guaranteed to only emit one instruction.
805
+ void movw(Register reg, uint32_t immediate, Condition cond = al);
806
+ // The constant for movt should be in the range 0-0xffff.
807
+ void movt(Register reg, uint32_t immediate, Condition cond = al);
808
+
714
809
  void bic(Register dst, Register src1, const Operand& src2,
715
810
  SBit s = LeaveCC, Condition cond = al);
716
811
 
@@ -741,6 +836,38 @@ class Assembler : public Malloced {
741
836
 
742
837
  void clz(Register dst, Register src, Condition cond = al); // v5 and above
743
838
 
839
+ // Saturating instructions. v6 and above.
840
+
841
+ // Unsigned saturate.
842
+ //
843
+ // Saturate an optionally shifted signed value to an unsigned range.
844
+ //
845
+ // usat dst, #satpos, src
846
+ // usat dst, #satpos, src, lsl #sh
847
+ // usat dst, #satpos, src, asr #sh
848
+ //
849
+ // Register dst will contain:
850
+ //
851
+ // 0, if s < 0
852
+ // (1 << satpos) - 1, if s > ((1 << satpos) - 1)
853
+ // s, otherwise
854
+ //
855
+ // where s is the contents of src after shifting (if used.)
856
+ void usat(Register dst, int satpos, const Operand& src, Condition cond = al);
857
+
858
+ // Bitfield manipulation instructions. v7 and above.
859
+
860
+ void ubfx(Register dst, Register src, int lsb, int width,
861
+ Condition cond = al);
862
+
863
+ void sbfx(Register dst, Register src, int lsb, int width,
864
+ Condition cond = al);
865
+
866
+ void bfc(Register dst, int lsb, int width, Condition cond = al);
867
+
868
+ void bfi(Register dst, Register src, int lsb, int width,
869
+ Condition cond = al);
870
+
744
871
  // Status register access instructions
745
872
 
746
873
  void mrs(Register dst, SRegister s, Condition cond = al);
@@ -755,15 +882,17 @@ class Assembler : public Malloced {
755
882
  void strh(Register src, const MemOperand& dst, Condition cond = al);
756
883
  void ldrsb(Register dst, const MemOperand& src, Condition cond = al);
757
884
  void ldrsh(Register dst, const MemOperand& src, Condition cond = al);
885
+ void ldrd(Register dst1,
886
+ Register dst2,
887
+ const MemOperand& src, Condition cond = al);
888
+ void strd(Register src1,
889
+ Register src2,
890
+ const MemOperand& dst, Condition cond = al);
758
891
 
759
892
  // Load/Store multiple instructions
760
893
  void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond = al);
761
894
  void stm(BlockAddrMode am, Register base, RegList src, Condition cond = al);
762
895
 
763
- // Semaphore instructions
764
- void swp(Register dst, Register src, Register base, Condition cond = al);
765
- void swpb(Register dst, Register src, Register base, Condition cond = al);
766
-
767
896
  // Exception-generating instructions and debugging support
768
897
  void stop(const char* msg);
769
898
 
@@ -836,6 +965,16 @@ class Assembler : public Malloced {
836
965
  const Register base,
837
966
  int offset, // Offset must be a multiple of 4.
838
967
  const Condition cond = al);
968
+
969
+ void vmov(const DwVfpRegister dst,
970
+ double imm,
971
+ const Condition cond = al);
972
+ void vmov(const SwVfpRegister dst,
973
+ const SwVfpRegister src,
974
+ const Condition cond = al);
975
+ void vmov(const DwVfpRegister dst,
976
+ const DwVfpRegister src,
977
+ const Condition cond = al);
839
978
  void vmov(const DwVfpRegister dst,
840
979
  const Register src1,
841
980
  const Register src2,
@@ -894,6 +1033,9 @@ class Assembler : public Malloced {
894
1033
  const Condition cond = al);
895
1034
  void vmrs(const Register dst,
896
1035
  const Condition cond = al);
1036
+ void vsqrt(const DwVfpRegister dst,
1037
+ const DwVfpRegister src,
1038
+ const Condition cond = al);
897
1039
 
898
1040
  // Pseudo instructions
899
1041
  void nop(int type = 0);
@@ -910,10 +1052,6 @@ class Assembler : public Malloced {
910
1052
  add(sp, sp, Operand(kPointerSize));
911
1053
  }
912
1054
 
913
- // Load effective address of memory operand x into register dst
914
- void lea(Register dst, const MemOperand& x,
915
- SBit s = LeaveCC, Condition cond = al);
916
-
917
1055
  // Jump unconditionally to given label.
918
1056
  void jmp(Label* L) { b(L, al); }
919
1057
 
@@ -950,18 +1088,27 @@ class Assembler : public Malloced {
950
1088
  // Mark address of the ExitJSFrame code.
951
1089
  void RecordJSReturn();
952
1090
 
1091
+ // Mark address of a debug break slot.
1092
+ void RecordDebugBreakSlot();
1093
+
953
1094
  // Record a comment relocation entry that can be used by a disassembler.
954
1095
  // Use --debug_code to enable.
955
1096
  void RecordComment(const char* msg);
956
1097
 
957
1098
  void RecordPosition(int pos);
958
1099
  void RecordStatementPosition(int pos);
959
- void WriteRecordedPositions();
1100
+ bool WriteRecordedPositions();
960
1101
 
961
1102
  int pc_offset() const { return pc_ - buffer_; }
962
1103
  int current_position() const { return current_position_; }
963
1104
  int current_statement_position() const { return current_statement_position_; }
964
1105
 
1106
+ bool can_peephole_optimize(int instructions) {
1107
+ if (!FLAG_peephole_optimization) return false;
1108
+ if (last_bound_pos_ > pc_offset() - instructions * kInstrSize) return false;
1109
+ return reloc_info_writer.last_pc() <= pc_ - instructions * kInstrSize;
1110
+ }
1111
+
965
1112
  // Read/patch instructions
966
1113
  static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); }
967
1114
  static void instr_at_put(byte* pc, Instr instr) {
@@ -973,6 +1120,17 @@ class Assembler : public Malloced {
973
1120
  static bool IsLdrRegisterImmediate(Instr instr);
974
1121
  static int GetLdrRegisterImmediateOffset(Instr instr);
975
1122
  static Instr SetLdrRegisterImmediateOffset(Instr instr, int offset);
1123
+ static bool IsStrRegisterImmediate(Instr instr);
1124
+ static Instr SetStrRegisterImmediateOffset(Instr instr, int offset);
1125
+ static bool IsAddRegisterImmediate(Instr instr);
1126
+ static Instr SetAddRegisterImmediateOffset(Instr instr, int offset);
1127
+ static Register GetRd(Instr instr);
1128
+ static bool IsPush(Instr instr);
1129
+ static bool IsPop(Instr instr);
1130
+ static bool IsStrRegFpOffset(Instr instr);
1131
+ static bool IsLdrRegFpOffset(Instr instr);
1132
+ static bool IsStrRegFpNegOffset(Instr instr);
1133
+ static bool IsLdrRegFpNegOffset(Instr instr);
976
1134
 
977
1135
 
978
1136
  protected:
@@ -1004,6 +1162,7 @@ class Assembler : public Malloced {
1004
1162
  void EndBlockConstPool() {
1005
1163
  const_pool_blocked_nesting_--;
1006
1164
  }
1165
+ bool is_const_pool_blocked() const { return const_pool_blocked_nesting_ > 0; }
1007
1166
 
1008
1167
  private:
1009
1168
  // Code buffer:
@@ -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 "debug.h"
32
34
  #include "runtime.h"
@@ -107,7 +109,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm,
107
109
  // Allocate the JSArray object together with space for a fixed array with the
108
110
  // requested elements.
109
111
  int size = JSArray::kSize + FixedArray::SizeFor(initial_capacity);
110
- __ AllocateInNewSpace(size / kPointerSize,
112
+ __ AllocateInNewSpace(size,
111
113
  result,
112
114
  scratch2,
113
115
  scratch3,
@@ -130,13 +132,14 @@ static void AllocateEmptyJSArray(MacroAssembler* masm,
130
132
  // of the JSArray.
131
133
  // result: JSObject
132
134
  // scratch2: start of next object
133
- __ lea(scratch1, MemOperand(result, JSArray::kSize));
135
+ __ add(scratch1, result, Operand(JSArray::kSize));
134
136
  __ str(scratch1, FieldMemOperand(result, JSArray::kElementsOffset));
135
137
 
136
138
  // Clear the heap tag on the elements array.
137
- __ and_(scratch1, scratch1, Operand(~kHeapObjectTagMask));
139
+ ASSERT(kSmiTag == 0);
140
+ __ sub(scratch1, scratch1, Operand(kHeapObjectTag));
138
141
 
139
- // Initialize the FixedArray and fill it with holes. FixedArray length is not
142
+ // Initialize the FixedArray and fill it with holes. FixedArray length is
140
143
  // stored as a smi.
141
144
  // result: JSObject
142
145
  // scratch1: elements array (untagged)
@@ -144,7 +147,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm,
144
147
  __ LoadRoot(scratch3, Heap::kFixedArrayMapRootIndex);
145
148
  ASSERT_EQ(0 * kPointerSize, FixedArray::kMapOffset);
146
149
  __ str(scratch3, MemOperand(scratch1, kPointerSize, PostIndex));
147
- __ mov(scratch3, Operand(initial_capacity));
150
+ __ mov(scratch3, Operand(Smi::FromInt(initial_capacity)));
148
151
  ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
149
152
  __ str(scratch3, MemOperand(scratch1, kPointerSize, PostIndex));
150
153
 
@@ -191,7 +194,7 @@ static void AllocateJSArray(MacroAssembler* masm,
191
194
  // keeps the code below free of special casing for the empty array.
192
195
  int size = JSArray::kSize +
193
196
  FixedArray::SizeFor(JSArray::kPreallocatedArrayElements);
194
- __ AllocateInNewSpace(size / kPointerSize,
197
+ __ AllocateInNewSpace(size,
195
198
  result,
196
199
  elements_array_end,
197
200
  scratch1,
@@ -208,12 +211,13 @@ static void AllocateJSArray(MacroAssembler* masm,
208
211
  __ add(elements_array_end,
209
212
  elements_array_end,
210
213
  Operand(array_size, ASR, kSmiTagSize));
211
- __ AllocateInNewSpace(elements_array_end,
212
- result,
213
- scratch1,
214
- scratch2,
215
- gc_required,
216
- TAG_OBJECT);
214
+ __ AllocateInNewSpace(
215
+ elements_array_end,
216
+ result,
217
+ scratch1,
218
+ scratch2,
219
+ gc_required,
220
+ static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS));
217
221
 
218
222
  // Allocated the JSArray. Now initialize the fields except for the elements
219
223
  // array.
@@ -237,26 +241,27 @@ static void AllocateJSArray(MacroAssembler* masm,
237
241
  FieldMemOperand(result, JSArray::kElementsOffset));
238
242
 
239
243
  // Clear the heap tag on the elements array.
240
- __ and_(elements_array_storage,
241
- elements_array_storage,
242
- Operand(~kHeapObjectTagMask));
243
- // Initialize the fixed array and fill it with holes. FixedArray length is not
244
+ ASSERT(kSmiTag == 0);
245
+ __ sub(elements_array_storage,
246
+ elements_array_storage,
247
+ Operand(kHeapObjectTag));
248
+ // Initialize the fixed array and fill it with holes. FixedArray length is
244
249
  // stored as a smi.
245
250
  // result: JSObject
246
251
  // elements_array_storage: elements array (untagged)
247
252
  // array_size: size of array (smi)
248
- ASSERT(kSmiTag == 0);
249
253
  __ LoadRoot(scratch1, Heap::kFixedArrayMapRootIndex);
250
254
  ASSERT_EQ(0 * kPointerSize, FixedArray::kMapOffset);
251
255
  __ str(scratch1, MemOperand(elements_array_storage, kPointerSize, PostIndex));
252
- // Convert array_size from smi to value.
253
- __ mov(array_size,
254
- Operand(array_size, ASR, kSmiTagSize));
256
+ ASSERT(kSmiTag == 0);
255
257
  __ tst(array_size, array_size);
256
258
  // Length of the FixedArray is the number of pre-allocated elements if
257
259
  // the actual JSArray has length 0 and the size of the JSArray for non-empty
258
- // JSArrays. The length of a FixedArray is not stored as a smi.
259
- __ mov(array_size, Operand(JSArray::kPreallocatedArrayElements), LeaveCC, eq);
260
+ // JSArrays. The length of a FixedArray is stored as a smi.
261
+ __ mov(array_size,
262
+ Operand(Smi::FromInt(JSArray::kPreallocatedArrayElements)),
263
+ LeaveCC,
264
+ eq);
260
265
  ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
261
266
  __ str(array_size,
262
267
  MemOperand(elements_array_storage, kPointerSize, PostIndex));
@@ -264,10 +269,11 @@ static void AllocateJSArray(MacroAssembler* masm,
264
269
  // Calculate elements array and elements array end.
265
270
  // result: JSObject
266
271
  // elements_array_storage: elements array element storage
267
- // array_size: size of elements array
272
+ // array_size: smi-tagged size of elements array
273
+ ASSERT(kSmiTag == 0 && kSmiTagSize < kPointerSizeLog2);
268
274
  __ add(elements_array_end,
269
275
  elements_array_storage,
270
- Operand(array_size, LSL, kPointerSizeLog2));
276
+ Operand(array_size, LSL, kPointerSizeLog2 - kSmiTagSize));
271
277
 
272
278
  // Fill the allocated FixedArray with the hole value if requested.
273
279
  // result: JSObject
@@ -540,7 +546,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
540
546
 
541
547
  // Load the initial map and verify that it is in fact a map.
542
548
  // r1: constructor function
543
- // r7: undefined
549
+ // r7: undefined value
544
550
  __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
545
551
  __ tst(r2, Operand(kSmiTagMask));
546
552
  __ b(eq, &rt_call);
@@ -552,16 +558,16 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
552
558
  // instance type would be JS_FUNCTION_TYPE.
553
559
  // r1: constructor function
554
560
  // r2: initial map
555
- // r7: undefined
561
+ // r7: undefined value
556
562
  __ CompareInstanceType(r2, r3, JS_FUNCTION_TYPE);
557
563
  __ b(eq, &rt_call);
558
564
 
559
565
  // Now allocate the JSObject on the heap.
560
566
  // r1: constructor function
561
567
  // r2: initial map
562
- // r7: undefined
568
+ // r7: undefined value
563
569
  __ ldrb(r3, FieldMemOperand(r2, Map::kInstanceSizeOffset));
564
- __ AllocateInNewSpace(r3, r4, r5, r6, &rt_call, NO_ALLOCATION_FLAGS);
570
+ __ AllocateInNewSpace(r3, r4, r5, r6, &rt_call, SIZE_IN_WORDS);
565
571
 
566
572
  // Allocated the JSObject, now initialize the fields. Map is set to initial
567
573
  // map and properties and elements are set to empty fixed array.
@@ -569,7 +575,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
569
575
  // r2: initial map
570
576
  // r3: object size
571
577
  // r4: JSObject (not tagged)
572
- // r7: undefined
578
+ // r7: undefined value
573
579
  __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex);
574
580
  __ mov(r5, r4);
575
581
  ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
@@ -585,7 +591,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
585
591
  // r3: object size (in words)
586
592
  // r4: JSObject (not tagged)
587
593
  // r5: First in-object property of JSObject (not tagged)
588
- // r7: undefined
594
+ // r7: undefined value
589
595
  __ add(r6, r4, Operand(r3, LSL, kPointerSizeLog2)); // End of object.
590
596
  ASSERT_EQ(3 * kPointerSize, JSObject::kHeaderSize);
591
597
  { Label loop, entry;
@@ -608,17 +614,15 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
608
614
  // r1: constructor function
609
615
  // r4: JSObject
610
616
  // r5: start of next object (not tagged)
611
- // r7: undefined
617
+ // r7: undefined value
612
618
  __ ldrb(r3, FieldMemOperand(r2, Map::kUnusedPropertyFieldsOffset));
613
619
  // The field instance sizes contains both pre-allocated property fields and
614
620
  // in-object properties.
615
621
  __ ldr(r0, FieldMemOperand(r2, Map::kInstanceSizesOffset));
616
- __ and_(r6,
617
- r0,
618
- Operand(0x000000FF << Map::kPreAllocatedPropertyFieldsByte * 8));
619
- __ add(r3, r3, Operand(r6, LSR, Map::kPreAllocatedPropertyFieldsByte * 8));
620
- __ and_(r6, r0, Operand(0x000000FF << Map::kInObjectPropertiesByte * 8));
621
- __ sub(r3, r3, Operand(r6, LSR, Map::kInObjectPropertiesByte * 8), SetCC);
622
+ __ Ubfx(r6, r0, Map::kPreAllocatedPropertyFieldsByte * 8, 8);
623
+ __ add(r3, r3, Operand(r6));
624
+ __ Ubfx(r6, r0, Map::kInObjectPropertiesByte * 8, 8);
625
+ __ sub(r3, r3, Operand(r6), SetCC);
622
626
 
623
627
  // Done if no extra properties are to be allocated.
624
628
  __ b(eq, &allocated);
@@ -630,27 +634,29 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
630
634
  // r3: number of elements in properties array
631
635
  // r4: JSObject
632
636
  // r5: start of next object
633
- // r7: undefined
637
+ // r7: undefined value
634
638
  __ add(r0, r3, Operand(FixedArray::kHeaderSize / kPointerSize));
635
- __ AllocateInNewSpace(r0,
636
- r5,
637
- r6,
638
- r2,
639
- &undo_allocation,
640
- RESULT_CONTAINS_TOP);
639
+ __ AllocateInNewSpace(
640
+ r0,
641
+ r5,
642
+ r6,
643
+ r2,
644
+ &undo_allocation,
645
+ static_cast<AllocationFlags>(RESULT_CONTAINS_TOP | SIZE_IN_WORDS));
641
646
 
642
647
  // Initialize the FixedArray.
643
648
  // r1: constructor
644
649
  // r3: number of elements in properties array
645
650
  // r4: JSObject
646
651
  // r5: FixedArray (not tagged)
647
- // r7: undefined
652
+ // r7: undefined value
648
653
  __ LoadRoot(r6, Heap::kFixedArrayMapRootIndex);
649
654
  __ mov(r2, r5);
650
655
  ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
651
656
  __ str(r6, MemOperand(r2, kPointerSize, PostIndex));
652
- ASSERT_EQ(1 * kPointerSize, Array::kLengthOffset);
653
- __ str(r3, MemOperand(r2, kPointerSize, PostIndex));
657
+ ASSERT_EQ(1 * kPointerSize, FixedArray::kLengthOffset);
658
+ __ mov(r0, Operand(r3, LSL, kSmiTagSize));
659
+ __ str(r0, MemOperand(r2, kPointerSize, PostIndex));
654
660
 
655
661
  // Initialize the fields to undefined.
656
662
  // r1: constructor function
@@ -1043,6 +1049,7 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
1043
1049
  __ ldr(r3, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
1044
1050
  __ ldr(r2,
1045
1051
  FieldMemOperand(r3, SharedFunctionInfo::kFormalParameterCountOffset));
1052
+ __ mov(r2, Operand(r2, ASR, kSmiTagSize));
1046
1053
  __ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kCodeOffset));
1047
1054
  __ add(r3, r3, Operand(Code::kHeaderSize - kHeapObjectTag));
1048
1055
  __ cmp(r2, r0); // Check formal and actual parameter counts.
@@ -1309,3 +1316,5 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
1309
1316
  #undef __
1310
1317
 
1311
1318
  } } // namespace v8::internal
1319
+
1320
+ #endif // V8_TARGET_ARCH_ARM