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
@@ -27,6 +27,8 @@
27
27
 
28
28
  #include "v8.h"
29
29
 
30
+ #if defined(V8_TARGET_ARCH_ARM)
31
+
30
32
  #include "constants-arm.h"
31
33
 
32
34
 
@@ -35,6 +37,26 @@ namespace arm {
35
37
 
36
38
  namespace v8i = v8::internal;
37
39
 
40
+ double Instr::DoubleImmedVmov() const {
41
+ // Reconstruct a double from the immediate encoded in the vmov instruction.
42
+ //
43
+ // instruction: [xxxxxxxx,xxxxabcd,xxxxxxxx,xxxxefgh]
44
+ // double: [aBbbbbbb,bbcdefgh,00000000,00000000,
45
+ // 00000000,00000000,00000000,00000000]
46
+ //
47
+ // where B = ~b. Only the high 16 bits are affected.
48
+ uint64_t high16;
49
+ high16 = (Bits(17, 16) << 4) | Bits(3, 0); // xxxxxxxx,xxcdefgh.
50
+ high16 |= (0xff * Bit(18)) << 6; // xxbbbbbb,bbxxxxxx.
51
+ high16 |= (Bit(18) ^ 1) << 14; // xBxxxxxx,xxxxxxxx.
52
+ high16 |= Bit(19) << 15; // axxxxxxx,xxxxxxxx.
53
+
54
+ uint64_t imm = high16 << 48;
55
+ double d;
56
+ memcpy(&d, &imm, 8);
57
+ return d;
58
+ }
59
+
38
60
 
39
61
  // These register names are defined in a way to match the native disassembler
40
62
  // formatting. See for example the command "objdump -d <binary file>".
@@ -83,7 +105,7 @@ const char* VFPRegisters::names_[kNumVFPRegisters] = {
83
105
 
84
106
  const char* VFPRegisters::Name(int reg, bool is_double) {
85
107
  ASSERT((0 <= reg) && (reg < kNumVFPRegisters));
86
- return names_[reg + is_double ? kNumVFPSingleRegisters : 0];
108
+ return names_[reg + (is_double ? kNumVFPSingleRegisters : 0)];
87
109
  }
88
110
 
89
111
 
@@ -128,3 +150,5 @@ int Registers::Number(const char* name) {
128
150
 
129
151
 
130
152
  } } // namespace assembler::arm
153
+
154
+ #endif // V8_TARGET_ARCH_ARM
@@ -66,10 +66,19 @@
66
66
  # define CAN_USE_THUMB_INSTRUCTIONS 1
67
67
  #endif
68
68
 
69
- // Simulator should support ARM5 instructions.
69
+ // Simulator should support ARM5 instructions and unaligned access by default.
70
70
  #if !defined(__arm__)
71
71
  # define CAN_USE_ARMV5_INSTRUCTIONS 1
72
72
  # define CAN_USE_THUMB_INSTRUCTIONS 1
73
+
74
+ # ifndef CAN_USE_UNALIGNED_ACCESSES
75
+ # define CAN_USE_UNALIGNED_ACCESSES 1
76
+ # endif
77
+
78
+ #endif
79
+
80
+ #if CAN_USE_UNALIGNED_ACCESSES
81
+ #define V8_TARGET_CAN_READ_UNALIGNED 1
73
82
  #endif
74
83
 
75
84
  // Using blx may yield better code, so use it when required or when available
@@ -275,6 +284,9 @@ class Instr {
275
284
  // with immediate
276
285
  inline int RotateField() const { return Bits(11, 8); }
277
286
  inline int Immed8Field() const { return Bits(7, 0); }
287
+ inline int Immed4Field() const { return Bits(19, 16); }
288
+ inline int ImmedMovwMovtField() const {
289
+ return Immed4Field() << 12 | Offset12Field(); }
278
290
 
279
291
  // Fields used in Load/Store instructions
280
292
  inline int PUField() const { return Bits(24, 23); }
@@ -321,6 +333,9 @@ class Instr {
321
333
  inline bool HasH() const { return HField() == 1; }
322
334
  inline bool HasLink() const { return LinkField() == 1; }
323
335
 
336
+ // Decoding the double immediate in the vmov instruction.
337
+ double DoubleImmedVmov() const;
338
+
324
339
  // Instructions are read of out a code stream. The only way to get a
325
340
  // reference to an instruction is to convert a pointer. There is no way
326
341
  // to allocate or create instances of class Instr.
@@ -32,6 +32,8 @@
32
32
 
33
33
  #include "v8.h"
34
34
 
35
+ #if defined(V8_TARGET_ARCH_ARM)
36
+
35
37
  #include "cpu.h"
36
38
  #include "macro-assembler.h"
37
39
 
@@ -136,3 +138,5 @@ void CPU::DebugBreak() {
136
138
  }
137
139
 
138
140
  } } // namespace v8::internal
141
+
142
+ #endif // V8_TARGET_ARCH_ARM
@@ -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
 
@@ -55,7 +57,7 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
55
57
  // #endif
56
58
  // <debug break return code entry point address>
57
59
  // bktp 0
58
- CodePatcher patcher(rinfo()->pc(), 4);
60
+ CodePatcher patcher(rinfo()->pc(), Assembler::kJSReturnSequenceInstructions);
59
61
  #ifdef USE_BLX
60
62
  patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0));
61
63
  patcher.masm()->blx(v8::internal::ip);
@@ -71,17 +73,59 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
71
73
  // Restore the JS frame exit code.
72
74
  void BreakLocationIterator::ClearDebugBreakAtReturn() {
73
75
  rinfo()->PatchCode(original_rinfo()->pc(),
74
- Assembler::kJSReturnSequenceLength);
76
+ Assembler::kJSReturnSequenceInstructions);
75
77
  }
76
78
 
77
79
 
78
- // A debug break in the exit code is identified by a call.
80
+ // A debug break in the frame exit code is identified by the JS frame exit code
81
+ // having been patched with a call instruction.
79
82
  bool Debug::IsDebugBreakAtReturn(RelocInfo* rinfo) {
80
83
  ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()));
81
84
  return rinfo->IsPatchedReturnSequence();
82
85
  }
83
86
 
84
87
 
88
+ bool BreakLocationIterator::IsDebugBreakAtSlot() {
89
+ ASSERT(IsDebugBreakSlot());
90
+ // Check whether the debug break slot instructions have been patched.
91
+ return rinfo()->IsPatchedDebugBreakSlotSequence();
92
+ }
93
+
94
+
95
+ void BreakLocationIterator::SetDebugBreakAtSlot() {
96
+ ASSERT(IsDebugBreakSlot());
97
+ // Patch the code changing the debug break slot code from
98
+ // mov r2, r2
99
+ // mov r2, r2
100
+ // mov r2, r2
101
+ // to a call to the debug break slot code.
102
+ // #if USE_BLX
103
+ // ldr ip, [pc, #0]
104
+ // blx ip
105
+ // #else
106
+ // mov lr, pc
107
+ // ldr pc, [pc, #-4]
108
+ // #endif
109
+ // <debug break slot code entry point address>
110
+ CodePatcher patcher(rinfo()->pc(), Assembler::kDebugBreakSlotInstructions);
111
+ #ifdef USE_BLX
112
+ patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0));
113
+ patcher.masm()->blx(v8::internal::ip);
114
+ #else
115
+ patcher.masm()->mov(v8::internal::lr, v8::internal::pc);
116
+ patcher.masm()->ldr(v8::internal::pc, MemOperand(v8::internal::pc, -4));
117
+ #endif
118
+ patcher.Emit(Debug::debug_break_return()->entry());
119
+ }
120
+
121
+
122
+ void BreakLocationIterator::ClearDebugBreakAtSlot() {
123
+ ASSERT(IsDebugBreakSlot());
124
+ rinfo()->PatchCode(original_rinfo()->pc(),
125
+ Assembler::kDebugBreakSlotInstructions);
126
+ }
127
+
128
+
85
129
  #define __ ACCESS_MASM(masm)
86
130
 
87
131
 
@@ -170,10 +214,11 @@ void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
170
214
 
171
215
  void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
172
216
  // ---------- S t a t e --------------
217
+ // -- r0 : value
218
+ // -- r1 : key
219
+ // -- r2 : receiver
173
220
  // -- lr : return address
174
- // -- sp[0] : key
175
- // -- sp[4] : receiver
176
- Generate_DebugBreakCallHelper(masm, 0);
221
+ Generate_DebugBreakCallHelper(masm, r0.bit() | r1.bit() | r2.bit());
177
222
  }
178
223
 
179
224
 
@@ -217,10 +262,33 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
217
262
  }
218
263
 
219
264
 
265
+ void Debug::GenerateSlot(MacroAssembler* masm) {
266
+ // Generate enough nop's to make space for a call instruction. Avoid emitting
267
+ // the constant pool in the debug break slot code.
268
+ Assembler::BlockConstPoolScope block_const_pool(masm);
269
+ Label check_codesize;
270
+ __ bind(&check_codesize);
271
+ __ RecordDebugBreakSlot();
272
+ for (int i = 0; i < Assembler::kDebugBreakSlotInstructions; i++) {
273
+ __ nop(2);
274
+ }
275
+ ASSERT_EQ(Assembler::kDebugBreakSlotInstructions,
276
+ masm->InstructionsGeneratedSince(&check_codesize));
277
+ }
278
+
279
+
280
+ void Debug::GenerateSlotDebugBreak(MacroAssembler* masm) {
281
+ // In the places where a debug break slot is inserted no registers can contain
282
+ // object pointers.
283
+ Generate_DebugBreakCallHelper(masm, 0);
284
+ }
285
+
286
+
220
287
  void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
221
288
  masm->Abort("LiveEdit frame dropping is not supported on arm");
222
289
  }
223
290
 
291
+
224
292
  void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
225
293
  masm->Abort("LiveEdit frame dropping is not supported on arm");
226
294
  }
@@ -237,3 +305,5 @@ const int Debug::kFrameDropperFrameSize = -1;
237
305
  #endif // ENABLE_DEBUGGER_SUPPORT
238
306
 
239
307
  } } // namespace v8::internal
308
+
309
+ #endif // V8_TARGET_ARCH_ARM
@@ -56,6 +56,8 @@
56
56
 
57
57
  #include "v8.h"
58
58
 
59
+ #if defined(V8_TARGET_ARCH_ARM)
60
+
59
61
  #include "constants-arm.h"
60
62
  #include "disasm.h"
61
63
  #include "macro-assembler.h"
@@ -99,10 +101,12 @@ class Decoder {
99
101
  void PrintSRegister(int reg);
100
102
  void PrintDRegister(int reg);
101
103
  int FormatVFPRegister(Instr* instr, const char* format);
104
+ void PrintMovwMovt(Instr* instr);
102
105
  int FormatVFPinstruction(Instr* instr, const char* format);
103
106
  void PrintCondition(Instr* instr);
104
107
  void PrintShiftRm(Instr* instr);
105
108
  void PrintShiftImm(Instr* instr);
109
+ void PrintShiftSat(Instr* instr);
106
110
  void PrintPU(Instr* instr);
107
111
  void PrintSoftwareInterrupt(SoftwareInterruptCodes swi);
108
112
 
@@ -245,6 +249,18 @@ void Decoder::PrintShiftImm(Instr* instr) {
245
249
  }
246
250
 
247
251
 
252
+ // Print the optional shift and immediate used by saturating instructions.
253
+ void Decoder::PrintShiftSat(Instr* instr) {
254
+ int shift = instr->Bits(11, 7);
255
+ if (shift > 0) {
256
+ out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
257
+ ", %s #%d",
258
+ shift_names[instr->Bit(6) * 2],
259
+ instr->Bits(11, 7));
260
+ }
261
+ }
262
+
263
+
248
264
  // Print PU formatting to reduce complexity of FormatOption.
249
265
  void Decoder::PrintPU(Instr* instr) {
250
266
  switch (instr->PUField()) {
@@ -373,6 +389,16 @@ int Decoder::FormatVFPinstruction(Instr* instr, const char* format) {
373
389
  }
374
390
 
375
391
 
392
+ // Print the movw or movt instruction.
393
+ void Decoder::PrintMovwMovt(Instr* instr) {
394
+ int imm = instr->ImmedMovwMovtField();
395
+ int rd = instr->RdField();
396
+ PrintRegister(rd);
397
+ out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
398
+ ", #%d", imm);
399
+ }
400
+
401
+
376
402
  // FormatOption takes a formatting string and interprets it based on
377
403
  // the current instructions. The format string points to the first
378
404
  // character of the option string (the option escape has already been
@@ -399,6 +425,26 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
399
425
  PrintCondition(instr);
400
426
  return 4;
401
427
  }
428
+ case 'd': { // 'd: vmov double immediate.
429
+ double d = instr->DoubleImmedVmov();
430
+ out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
431
+ "#%g", d);
432
+ return 1;
433
+ }
434
+ case 'f': { // 'f: bitfield instructions - v7 and above.
435
+ uint32_t lsbit = instr->Bits(11, 7);
436
+ uint32_t width = instr->Bits(20, 16) + 1;
437
+ if (instr->Bit(21) == 0) {
438
+ // BFC/BFI:
439
+ // Bits 20-16 represent most-significant bit. Covert to width.
440
+ width -= lsbit;
441
+ ASSERT(width > 0);
442
+ }
443
+ ASSERT((width + lsbit) <= 32);
444
+ out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
445
+ "#%d, #%d", lsbit, width);
446
+ return 1;
447
+ }
402
448
  case 'h': { // 'h: halfword operation for extra loads and stores
403
449
  if (instr->HasH()) {
404
450
  Print("h");
@@ -407,6 +453,20 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
407
453
  }
408
454
  return 1;
409
455
  }
456
+ case 'i': { // 'i: immediate value from adjacent bits.
457
+ // Expects tokens in the form imm%02d@%02d, ie. imm05@07, imm10@16
458
+ int width = (format[3] - '0') * 10 + (format[4] - '0');
459
+ int lsb = (format[6] - '0') * 10 + (format[7] - '0');
460
+
461
+ ASSERT((width >= 1) && (width <= 32));
462
+ ASSERT((lsb >= 0) && (lsb <= 31));
463
+ ASSERT((width + lsb) <= 32);
464
+
465
+ out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
466
+ "#%d",
467
+ instr->Bits(width + lsb - 1, lsb));
468
+ return 8;
469
+ }
410
470
  case 'l': { // 'l: branch and link
411
471
  if (instr->HasLink()) {
412
472
  Print("l");
@@ -414,10 +474,21 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
414
474
  return 1;
415
475
  }
416
476
  case 'm': {
417
- if (format[1] == 'e') { // 'memop: load/store instructions
477
+ if (format[1] == 'w') {
478
+ // 'mw: movt/movw instructions.
479
+ PrintMovwMovt(instr);
480
+ return 2;
481
+ }
482
+ if (format[1] == 'e') { // 'memop: load/store instructions.
418
483
  ASSERT(STRING_STARTS_WITH(format, "memop"));
419
484
  if (instr->HasL()) {
420
485
  Print("ldr");
486
+ } else if ((instr->Bits(27, 25) == 0) && (instr->Bit(20) == 0)) {
487
+ if (instr->Bits(7, 4) == 0xf) {
488
+ Print("strd");
489
+ } else {
490
+ Print("ldrd");
491
+ }
421
492
  } else {
422
493
  Print("str");
423
494
  }
@@ -438,16 +509,6 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
438
509
  out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
439
510
  "%d", instr->Offset12Field());
440
511
  return 5;
441
- } else if ((format[3] == '1') && (format[4] == '6')) {
442
- ASSERT(STRING_STARTS_WITH(format, "off16to20"));
443
- out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
444
- "%d", instr->Bits(20, 16) +1);
445
- return 9;
446
- } else if (format[3] == '7') {
447
- ASSERT(STRING_STARTS_WITH(format, "off7to11"));
448
- out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
449
- "%d", instr->ShiftAmountField());
450
- return 8;
451
512
  } else if (format[3] == '0') {
452
513
  // 'off0to3and8to19 16-bit immediate encoded in bits 19-8 and 3-0.
453
514
  ASSERT(STRING_STARTS_WITH(format, "off0to3and8to19"));
@@ -473,7 +534,7 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
473
534
  return FormatRegister(instr, format);
474
535
  }
475
536
  case 's': {
476
- if (format[1] == 'h') { // 'shift_op or 'shift_rm
537
+ if (format[1] == 'h') { // 'shift_op or 'shift_rm or 'shift_sat.
477
538
  if (format[6] == 'o') { // 'shift_op
478
539
  ASSERT(STRING_STARTS_WITH(format, "shift_op"));
479
540
  if (instr->TypeField() == 0) {
@@ -483,6 +544,10 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
483
544
  PrintShiftImm(instr);
484
545
  }
485
546
  return 8;
547
+ } else if (format[6] == 's') { // 'shift_sat.
548
+ ASSERT(STRING_STARTS_WITH(format, "shift_sat"));
549
+ PrintShiftSat(instr);
550
+ return 9;
486
551
  } else { // 'shift_rm
487
552
  ASSERT(STRING_STARTS_WITH(format, "shift_rm"));
488
553
  PrintShiftRm(instr);
@@ -614,6 +679,47 @@ void Decoder::DecodeType01(Instr* instr) {
614
679
  } else {
615
680
  Unknown(instr); // not used by V8
616
681
  }
682
+ } else if ((instr->Bit(20) == 0) && ((instr->Bits(7, 4) & 0xd) == 0xd)) {
683
+ // ldrd, strd
684
+ switch (instr->PUField()) {
685
+ case 0: {
686
+ if (instr->Bit(22) == 0) {
687
+ Format(instr, "'memop'cond's 'rd, ['rn], -'rm");
688
+ } else {
689
+ Format(instr, "'memop'cond's 'rd, ['rn], #-'off8");
690
+ }
691
+ break;
692
+ }
693
+ case 1: {
694
+ if (instr->Bit(22) == 0) {
695
+ Format(instr, "'memop'cond's 'rd, ['rn], +'rm");
696
+ } else {
697
+ Format(instr, "'memop'cond's 'rd, ['rn], #+'off8");
698
+ }
699
+ break;
700
+ }
701
+ case 2: {
702
+ if (instr->Bit(22) == 0) {
703
+ Format(instr, "'memop'cond's 'rd, ['rn, -'rm]'w");
704
+ } else {
705
+ Format(instr, "'memop'cond's 'rd, ['rn, #-'off8]'w");
706
+ }
707
+ break;
708
+ }
709
+ case 3: {
710
+ if (instr->Bit(22) == 0) {
711
+ Format(instr, "'memop'cond's 'rd, ['rn, +'rm]'w");
712
+ } else {
713
+ Format(instr, "'memop'cond's 'rd, ['rn, #+'off8]'w");
714
+ }
715
+ break;
716
+ }
717
+ default: {
718
+ // The PU field is a 2-bit field.
719
+ UNREACHABLE();
720
+ break;
721
+ }
722
+ }
617
723
  } else {
618
724
  // extra load/store instructions
619
725
  switch (instr->PUField()) {
@@ -723,7 +829,7 @@ void Decoder::DecodeType01(Instr* instr) {
723
829
  if (instr->HasS()) {
724
830
  Format(instr, "tst'cond 'rn, 'shift_op");
725
831
  } else {
726
- Unknown(instr); // not used by V8
832
+ Format(instr, "movw'cond 'mw");
727
833
  }
728
834
  break;
729
835
  }
@@ -741,7 +847,7 @@ void Decoder::DecodeType01(Instr* instr) {
741
847
  if (instr->HasS()) {
742
848
  Format(instr, "cmp'cond 'rn, 'shift_op");
743
849
  } else {
744
- Unknown(instr); // not used by V8
850
+ Format(instr, "movt'cond 'mw");
745
851
  }
746
852
  break;
747
853
  }
@@ -822,8 +928,16 @@ void Decoder::DecodeType3(Instr* instr) {
822
928
  break;
823
929
  }
824
930
  case 1: {
825
- ASSERT(!instr->HasW());
826
- Format(instr, "'memop'cond'b 'rd, ['rn], +'shift_rm");
931
+ if (instr->HasW()) {
932
+ ASSERT(instr->Bits(5, 4) == 0x1);
933
+ if (instr->Bit(22) == 0x1) {
934
+ Format(instr, "usat 'rd, 'imm05@16, 'rm'shift_sat");
935
+ } else {
936
+ UNREACHABLE(); // SSAT.
937
+ }
938
+ } else {
939
+ Format(instr, "'memop'cond'b 'rd, ['rn], +'shift_rm");
940
+ }
827
941
  break;
828
942
  }
829
943
  case 2: {
@@ -833,10 +947,26 @@ void Decoder::DecodeType3(Instr* instr) {
833
947
  case 3: {
834
948
  if (instr->HasW() && (instr->Bits(6, 4) == 0x5)) {
835
949
  uint32_t widthminus1 = static_cast<uint32_t>(instr->Bits(20, 16));
836
- uint32_t lsbit = static_cast<uint32_t>(instr->ShiftAmountField());
950
+ uint32_t lsbit = static_cast<uint32_t>(instr->Bits(11, 7));
837
951
  uint32_t msbit = widthminus1 + lsbit;
838
952
  if (msbit <= 31) {
839
- Format(instr, "ubfx'cond 'rd, 'rm, #'off7to11, #'off16to20");
953
+ if (instr->Bit(22)) {
954
+ Format(instr, "ubfx'cond 'rd, 'rm, 'f");
955
+ } else {
956
+ Format(instr, "sbfx'cond 'rd, 'rm, 'f");
957
+ }
958
+ } else {
959
+ UNREACHABLE();
960
+ }
961
+ } else if (!instr->HasW() && (instr->Bits(6, 4) == 0x1)) {
962
+ uint32_t lsbit = static_cast<uint32_t>(instr->Bits(11, 7));
963
+ uint32_t msbit = static_cast<uint32_t>(instr->Bits(20, 16));
964
+ if (msbit >= lsbit) {
965
+ if (instr->RmField() == 15) {
966
+ Format(instr, "bfc'cond 'rd, 'f");
967
+ } else {
968
+ Format(instr, "bfi'cond 'rd, 'rm, 'f");
969
+ }
840
970
  } else {
841
971
  UNREACHABLE();
842
972
  }
@@ -953,7 +1083,8 @@ void Decoder::DecodeUnconditional(Instr* instr) {
953
1083
  // Dd = vmul(Dn, Dm)
954
1084
  // Dd = vdiv(Dn, Dm)
955
1085
  // vcmp(Dd, Dm)
956
- // VMRS
1086
+ // vmrs
1087
+ // Dd = vsqrt(Dm)
957
1088
  void Decoder::DecodeTypeVFP(Instr* instr) {
958
1089
  ASSERT((instr->TypeField() == 7) && (instr->Bit(24) == 0x0) );
959
1090
  ASSERT(instr->Bits(11, 9) == 0x5);
@@ -961,7 +1092,14 @@ void Decoder::DecodeTypeVFP(Instr* instr) {
961
1092
  if (instr->Bit(4) == 0) {
962
1093
  if (instr->Opc1Field() == 0x7) {
963
1094
  // Other data processing instructions
964
- if ((instr->Opc2Field() == 0x7) && (instr->Opc3Field() == 0x3)) {
1095
+ if ((instr->Opc2Field() == 0x0) && (instr->Opc3Field() == 0x1)) {
1096
+ // vmov register to register.
1097
+ if (instr->SzField() == 0x1) {
1098
+ Format(instr, "vmov.f64'cond 'Dd, 'Dm");
1099
+ } else {
1100
+ Format(instr, "vmov.f32'cond 'Sd, 'Sm");
1101
+ }
1102
+ } else if ((instr->Opc2Field() == 0x7) && (instr->Opc3Field() == 0x3)) {
965
1103
  DecodeVCVTBetweenDoubleAndSingle(instr);
966
1104
  } else if ((instr->Opc2Field() == 0x8) && (instr->Opc3Field() & 0x1)) {
967
1105
  DecodeVCVTBetweenFloatingPointAndInteger(instr);
@@ -971,6 +1109,14 @@ void Decoder::DecodeTypeVFP(Instr* instr) {
971
1109
  } else if (((instr->Opc2Field() == 0x4) || (instr->Opc2Field() == 0x5)) &&
972
1110
  (instr->Opc3Field() & 0x1)) {
973
1111
  DecodeVCMP(instr);
1112
+ } else if (((instr->Opc2Field() == 0x1)) && (instr->Opc3Field() == 0x3)) {
1113
+ Format(instr, "vsqrt.f64'cond 'Dd, 'Dm");
1114
+ } else if (instr->Opc3Field() == 0x0) {
1115
+ if (instr->SzField() == 0x1) {
1116
+ Format(instr, "vmov.f64'cond 'Dd, 'd");
1117
+ } else {
1118
+ Unknown(instr); // Not used by V8.
1119
+ }
974
1120
  } else {
975
1121
  Unknown(instr); // Not used by V8.
976
1122
  }
@@ -1309,3 +1455,5 @@ void Disassembler::Disassemble(FILE* f, byte* begin, byte* end) {
1309
1455
 
1310
1456
 
1311
1457
  } // namespace disasm
1458
+
1459
+ #endif // V8_TARGET_ARCH_ARM