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
@@ -28,7 +28,9 @@
28
28
  #ifndef V8_X64_CODEGEN_X64_H_
29
29
  #define V8_X64_CODEGEN_X64_H_
30
30
 
31
+ #include "ast.h"
31
32
  #include "ic-inl.h"
33
+ #include "jump-target-heavy.h"
32
34
 
33
35
  namespace v8 {
34
36
  namespace internal {
@@ -312,7 +314,9 @@ class CodeGenerator: public AstVisitor {
312
314
  static bool ShouldGenerateLog(Expression* type);
313
315
  #endif
314
316
 
315
- static void RecordPositions(MacroAssembler* masm, int pos);
317
+ static bool RecordPositions(MacroAssembler* masm,
318
+ int pos,
319
+ bool right_here = false);
316
320
 
317
321
  // Accessors
318
322
  MacroAssembler* masm() { return masm_; }
@@ -389,6 +393,9 @@ class CodeGenerator: public AstVisitor {
389
393
  // target (which can not be done more than once).
390
394
  void GenerateReturnSequence(Result* return_value);
391
395
 
396
+ // Generate code for a fast smi loop.
397
+ void GenerateFastSmiLoop(ForStatement* node);
398
+
392
399
  // Returns the arguments allocation mode.
393
400
  ArgumentsAllocationMode ArgumentsMode();
394
401
 
@@ -433,14 +440,39 @@ class CodeGenerator: public AstVisitor {
433
440
  TypeofState typeof_state,
434
441
  JumpTarget* slow);
435
442
 
443
+ // Support for loading from local/global variables and arguments
444
+ // whose location is known unless they are shadowed by
445
+ // eval-introduced bindings. Generates no code for unsupported slot
446
+ // types and therefore expects to fall through to the slow jump target.
447
+ void EmitDynamicLoadFromSlotFastCase(Slot* slot,
448
+ TypeofState typeof_state,
449
+ Result* result,
450
+ JumpTarget* slow,
451
+ JumpTarget* done);
452
+
436
453
  // Store the value on top of the expression stack into a slot, leaving the
437
454
  // value in place.
438
455
  void StoreToSlot(Slot* slot, InitState init_state);
439
456
 
457
+ // Support for compiling assignment expressions.
458
+ void EmitSlotAssignment(Assignment* node);
459
+ void EmitNamedPropertyAssignment(Assignment* node);
460
+ void EmitKeyedPropertyAssignment(Assignment* node);
461
+
462
+ // Receiver is passed on the frame and not consumed.
463
+ Result EmitNamedLoad(Handle<String> name, bool is_contextual);
464
+
465
+ // If the store is contextual, value is passed on the frame and consumed.
466
+ // Otherwise, receiver and value are passed on the frame and consumed.
467
+ Result EmitNamedStore(Handle<String> name, bool is_contextual);
468
+
440
469
  // Load a property of an object, returning it in a Result.
441
470
  // The object and the property name are passed on the stack, and
442
471
  // not changed.
443
- Result EmitKeyedLoad(bool is_global);
472
+ Result EmitKeyedLoad();
473
+
474
+ // Receiver, key, and value are passed on the frame and consumed.
475
+ Result EmitKeyedStore(StaticType* key_type);
444
476
 
445
477
  // Special code for typeof expressions: Unfortunately, we must
446
478
  // be careful when loading the expression in 'typeof'
@@ -460,6 +492,29 @@ class CodeGenerator: public AstVisitor {
460
492
  void GenericBinaryOperation(BinaryOperation* expr,
461
493
  OverwriteMode overwrite_mode);
462
494
 
495
+ // Emits code sequence that jumps to a JumpTarget if the inputs
496
+ // are both smis. Cannot be in MacroAssembler because it takes
497
+ // advantage of TypeInfo to skip unneeded checks.
498
+ void JumpIfBothSmiUsingTypeInfo(Result* left,
499
+ Result* right,
500
+ JumpTarget* both_smi);
501
+
502
+ // Emits code sequence that jumps to deferred code if the input
503
+ // is not a smi. Cannot be in MacroAssembler because it takes
504
+ // advantage of TypeInfo to skip unneeded checks.
505
+ void JumpIfNotSmiUsingTypeInfo(Register reg,
506
+ TypeInfo type,
507
+ DeferredCode* deferred);
508
+
509
+ // Emits code sequence that jumps to deferred code if the inputs
510
+ // are not both smis. Cannot be in MacroAssembler because it takes
511
+ // advantage of TypeInfo to skip unneeded checks.
512
+ void JumpIfNotBothSmiUsingTypeInfo(Register left,
513
+ Register right,
514
+ TypeInfo left_info,
515
+ TypeInfo right_info,
516
+ DeferredCode* deferred);
517
+
463
518
  // If possible, combine two constant smi values using op to produce
464
519
  // a smi result, and push it on the virtual frame, all at compile time.
465
520
  // Returns true if it succeeds. Otherwise it has no effect.
@@ -485,6 +540,17 @@ class CodeGenerator: public AstVisitor {
485
540
  Condition cc,
486
541
  bool strict,
487
542
  ControlDestination* destination);
543
+
544
+ // If at least one of the sides is a constant smi, generate optimized code.
545
+ void ConstantSmiComparison(Condition cc,
546
+ bool strict,
547
+ ControlDestination* destination,
548
+ Result* left_side,
549
+ Result* right_side,
550
+ bool left_side_constant_smi,
551
+ bool right_side_constant_smi,
552
+ bool is_loop_condition);
553
+
488
554
  void GenerateInlineNumberComparison(Result* left_side,
489
555
  Result* right_side,
490
556
  Condition cc,
@@ -527,6 +593,8 @@ class CodeGenerator: public AstVisitor {
527
593
 
528
594
  static Handle<Code> ComputeCallInitialize(int argc, InLoopFlag in_loop);
529
595
 
596
+ static Handle<Code> ComputeKeyedCallInitialize(int argc, InLoopFlag in_loop);
597
+
530
598
  // Declare global variables and functions in the given array of
531
599
  // name/value pairs.
532
600
  void DeclareGlobals(Handle<FixedArray> pairs);
@@ -540,6 +608,7 @@ class CodeGenerator: public AstVisitor {
540
608
  void GenerateIsArray(ZoneList<Expression*>* args);
541
609
  void GenerateIsRegExp(ZoneList<Expression*>* args);
542
610
  void GenerateIsObject(ZoneList<Expression*>* args);
611
+ void GenerateIsSpecObject(ZoneList<Expression*>* args);
543
612
  void GenerateIsFunction(ZoneList<Expression*>* args);
544
613
  void GenerateIsUndetectableObject(ZoneList<Expression*>* args);
545
614
 
@@ -556,10 +625,13 @@ class CodeGenerator: public AstVisitor {
556
625
  void GenerateSetValueOf(ZoneList<Expression*>* args);
557
626
 
558
627
  // Fast support for charCodeAt(n).
559
- void GenerateFastCharCodeAt(ZoneList<Expression*>* args);
628
+ void GenerateStringCharCodeAt(ZoneList<Expression*>* args);
560
629
 
561
630
  // Fast support for string.charAt(n) and string[n].
562
- void GenerateCharFromCode(ZoneList<Expression*>* args);
631
+ void GenerateStringCharFromCode(ZoneList<Expression*>* args);
632
+
633
+ // Fast support for string.charAt(n) and string[n].
634
+ void GenerateStringCharAt(ZoneList<Expression*>* args);
563
635
 
564
636
  // Fast support for object equality testing.
565
637
  void GenerateObjectEquals(ZoneList<Expression*>* args);
@@ -711,7 +783,6 @@ class GenericBinaryOpStub: public CodeStub {
711
783
  static_operands_type_(operands_type),
712
784
  runtime_operands_type_(BinaryOpIC::DEFAULT),
713
785
  name_(NULL) {
714
- use_sse3_ = CpuFeatures::IsSupported(SSE3);
715
786
  ASSERT(OpBits::is_valid(Token::NUM_TOKENS));
716
787
  }
717
788
 
@@ -721,7 +792,6 @@ class GenericBinaryOpStub: public CodeStub {
721
792
  flags_(FlagBits::decode(key)),
722
793
  args_in_registers_(ArgsInRegistersBits::decode(key)),
723
794
  args_reversed_(ArgsReversedBits::decode(key)),
724
- use_sse3_(SSE3Bits::decode(key)),
725
795
  static_operands_type_(TypeInfo::ExpandedRepresentation(
726
796
  StaticTypeInfoBits::decode(key))),
727
797
  runtime_operands_type_(type_info),
@@ -746,7 +816,6 @@ class GenericBinaryOpStub: public CodeStub {
746
816
  GenericBinaryFlags flags_;
747
817
  bool args_in_registers_; // Arguments passed in registers not on the stack.
748
818
  bool args_reversed_; // Left and right argument are swapped.
749
- bool use_sse3_;
750
819
 
751
820
  // Number type information of operands, determined by code generator.
752
821
  TypeInfo static_operands_type_;
@@ -772,15 +841,14 @@ class GenericBinaryOpStub: public CodeStub {
772
841
  }
773
842
  #endif
774
843
 
775
- // Minor key encoding in 18 bits TTNNNFRASOOOOOOOMM.
844
+ // Minor key encoding in 17 bits TTNNNFRAOOOOOOOMM.
776
845
  class ModeBits: public BitField<OverwriteMode, 0, 2> {};
777
846
  class OpBits: public BitField<Token::Value, 2, 7> {};
778
- class SSE3Bits: public BitField<bool, 9, 1> {};
779
- class ArgsInRegistersBits: public BitField<bool, 10, 1> {};
780
- class ArgsReversedBits: public BitField<bool, 11, 1> {};
781
- class FlagBits: public BitField<GenericBinaryFlags, 12, 1> {};
782
- class StaticTypeInfoBits: public BitField<int, 13, 3> {};
783
- class RuntimeTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 16, 2> {};
847
+ class ArgsInRegistersBits: public BitField<bool, 9, 1> {};
848
+ class ArgsReversedBits: public BitField<bool, 10, 1> {};
849
+ class FlagBits: public BitField<GenericBinaryFlags, 11, 1> {};
850
+ class StaticTypeInfoBits: public BitField<int, 12, 3> {};
851
+ class RuntimeTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 15, 2> {};
784
852
 
785
853
  Major MajorKey() { return GenericBinaryOp; }
786
854
  int MinorKey() {
@@ -788,7 +856,6 @@ class GenericBinaryOpStub: public CodeStub {
788
856
  return OpBits::encode(op_)
789
857
  | ModeBits::encode(mode_)
790
858
  | FlagBits::encode(flags_)
791
- | SSE3Bits::encode(use_sse3_)
792
859
  | ArgsInRegistersBits::encode(args_in_registers_)
793
860
  | ArgsReversedBits::encode(args_reversed_)
794
861
  | StaticTypeInfoBits::encode(
@@ -836,38 +903,6 @@ class GenericBinaryOpStub: public CodeStub {
836
903
 
837
904
  class StringHelper : public AllStatic {
838
905
  public:
839
- // Generates fast code for getting a char code out of a string
840
- // object at the given index. May bail out for four reasons (in the
841
- // listed order):
842
- // * Receiver is not a string (receiver_not_string label).
843
- // * Index is not a smi (index_not_smi label).
844
- // * Index is out of range (index_out_of_range).
845
- // * Some other reason (slow_case label). In this case it's
846
- // guaranteed that the above conditions are not violated,
847
- // e.g. it's safe to assume the receiver is a string and the
848
- // index is a non-negative smi < length.
849
- // When successful, object, index, and scratch are clobbered.
850
- // Otherwise, scratch and result are clobbered.
851
- static void GenerateFastCharCodeAt(MacroAssembler* masm,
852
- Register object,
853
- Register index,
854
- Register scratch,
855
- Register result,
856
- Label* receiver_not_string,
857
- Label* index_not_smi,
858
- Label* index_out_of_range,
859
- Label* slow_case);
860
-
861
- // Generates code for creating a one-char string from the given char
862
- // code. May do a runtime call, so any register can be clobbered
863
- // and, if the given invoke flag specifies a call, an internal frame
864
- // is required. In tail call mode the result must be rax register.
865
- static void GenerateCharFromCode(MacroAssembler* masm,
866
- Register code,
867
- Register result,
868
- Register scratch,
869
- InvokeFlag flag);
870
-
871
906
  // Generate code for copying characters using a simple loop. This should only
872
907
  // be used in places where the number of characters is small and the
873
908
  // additional setup and checking in GenerateCopyCharactersREP adds too much
@@ -33,6 +33,8 @@
33
33
 
34
34
  #include "v8.h"
35
35
 
36
+ #if defined(V8_TARGET_ARCH_X64)
37
+
36
38
  #include "cpu.h"
37
39
  #include "macro-assembler.h"
38
40
 
@@ -77,3 +79,5 @@ void CPU::DebugBreak() {
77
79
  }
78
80
 
79
81
  } } // namespace v8::internal
82
+
83
+ #endif // V8_TARGET_ARCH_X64
@@ -28,6 +28,8 @@
28
28
 
29
29
  #include "v8.h"
30
30
 
31
+ #if defined(V8_TARGET_ARCH_X64)
32
+
31
33
  #include "codegen-inl.h"
32
34
  #include "debug.h"
33
35
 
@@ -122,9 +124,10 @@ void Debug::GenerateConstructCallDebugBreak(MacroAssembler* masm) {
122
124
  void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
123
125
  // Register state for keyed IC load call (from ic-x64.cc).
124
126
  // ----------- S t a t e -------------
125
- // No registers used on entry.
127
+ // -- rax : key
128
+ // -- rdx : receiver
126
129
  // -----------------------------------
127
- Generate_DebugBreakCallHelper(masm, 0, false);
130
+ Generate_DebugBreakCallHelper(masm, rax.bit() | rdx.bit(), false);
128
131
  }
129
132
 
130
133
 
@@ -132,19 +135,20 @@ void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
132
135
  // Register state for keyed IC load call (from ic-x64.cc).
133
136
  // ----------- S t a t e -------------
134
137
  // -- rax : value
138
+ // -- rcx : key
139
+ // -- rdx : receiver
135
140
  // -----------------------------------
136
- // Register rax contains an object that needs to be pushed on the
137
- // expression stack of the fake JS frame.
138
- Generate_DebugBreakCallHelper(masm, rax.bit(), false);
141
+ Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit() | rdx.bit(), false);
139
142
  }
140
143
 
141
144
 
142
145
  void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) {
143
146
  // Register state for IC load call (from ic-x64.cc).
144
147
  // ----------- S t a t e -------------
148
+ // -- rax : receiver
145
149
  // -- rcx : name
146
150
  // -----------------------------------
147
- Generate_DebugBreakCallHelper(masm, rcx.bit(), false);
151
+ Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit(), false);
148
152
  }
149
153
 
150
154
 
@@ -177,10 +181,31 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
177
181
  }
178
182
 
179
183
 
184
+ void Debug::GenerateSlot(MacroAssembler* masm) {
185
+ // Generate enough nop's to make space for a call instruction.
186
+ Label check_codesize;
187
+ __ bind(&check_codesize);
188
+ __ RecordDebugBreakSlot();
189
+ for (int i = 0; i < Assembler::kDebugBreakSlotLength; i++) {
190
+ __ nop();
191
+ }
192
+ ASSERT_EQ(Assembler::kDebugBreakSlotLength,
193
+ masm->SizeOfCodeGeneratedSince(&check_codesize));
194
+ }
195
+
196
+
197
+ void Debug::GenerateSlotDebugBreak(MacroAssembler* masm) {
198
+ // In the places where a debug break slot is inserted no registers can contain
199
+ // object pointers.
200
+ Generate_DebugBreakCallHelper(masm, 0, true);
201
+ }
202
+
203
+
180
204
  void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
181
205
  masm->Abort("LiveEdit frame dropping is not supported on x64");
182
206
  }
183
207
 
208
+
184
209
  void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
185
210
  masm->Abort("LiveEdit frame dropping is not supported on x64");
186
211
  }
@@ -213,6 +238,30 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
213
238
  Assembler::kJSReturnSequenceLength - Assembler::kCallInstructionLength);
214
239
  }
215
240
 
241
+
242
+ bool BreakLocationIterator::IsDebugBreakAtSlot() {
243
+ ASSERT(IsDebugBreakSlot());
244
+ // Check whether the debug break slot instructions have been patched.
245
+ return !Assembler::IsNop(rinfo()->pc());
246
+ }
247
+
248
+
249
+ void BreakLocationIterator::SetDebugBreakAtSlot() {
250
+ ASSERT(IsDebugBreakSlot());
251
+ rinfo()->PatchCodeWithCall(
252
+ Debug::debug_break_slot()->entry(),
253
+ Assembler::kDebugBreakSlotLength - Assembler::kCallInstructionLength);
254
+ }
255
+
256
+
257
+ void BreakLocationIterator::ClearDebugBreakAtSlot() {
258
+ ASSERT(IsDebugBreakSlot());
259
+ rinfo()->PatchCode(original_rinfo()->pc(), Assembler::kDebugBreakSlotLength);
260
+ }
261
+
262
+
216
263
  #endif // ENABLE_DEBUGGER_SUPPORT
217
264
 
218
265
  } } // namespace v8::internal
266
+
267
+ #endif // V8_TARGET_ARCH_X64
@@ -30,6 +30,9 @@
30
30
  #include <stdarg.h>
31
31
 
32
32
  #include "v8.h"
33
+
34
+ #if defined(V8_TARGET_ARCH_X64)
35
+
33
36
  #include "disasm.h"
34
37
 
35
38
  namespace disasm {
@@ -465,20 +468,20 @@ int DisassemblerX64::PrintRightOperandHelper(
465
468
  if (index == 4 && (base & 7) == 4 && scale == 0 /*times_1*/) {
466
469
  // index == rsp means no index. Only use sib byte with no index for
467
470
  // rsp and r12 base.
468
- AppendToBuffer("[%s]", (this->*register_name)(base));
471
+ AppendToBuffer("[%s]", NameOfCPURegister(base));
469
472
  return 2;
470
473
  } else if (base == 5) {
471
474
  // base == rbp means no base register (when mod == 0).
472
475
  int32_t disp = *reinterpret_cast<int32_t*>(modrmp + 2);
473
476
  AppendToBuffer("[%s*%d+0x%x]",
474
- (this->*register_name)(index),
477
+ NameOfCPURegister(index),
475
478
  1 << scale, disp);
476
479
  return 6;
477
480
  } else if (index != 4 && base != 5) {
478
481
  // [base+index*scale]
479
482
  AppendToBuffer("[%s+%s*%d]",
480
- (this->*register_name)(base),
481
- (this->*register_name)(index),
483
+ NameOfCPURegister(base),
484
+ NameOfCPURegister(index),
482
485
  1 << scale);
483
486
  return 2;
484
487
  } else {
@@ -486,7 +489,7 @@ int DisassemblerX64::PrintRightOperandHelper(
486
489
  return 1;
487
490
  }
488
491
  } else {
489
- AppendToBuffer("[%s]", (this->*register_name)(rm));
492
+ AppendToBuffer("[%s]", NameOfCPURegister(rm));
490
493
  return 1;
491
494
  }
492
495
  break;
@@ -500,21 +503,21 @@ int DisassemblerX64::PrintRightOperandHelper(
500
503
  : *reinterpret_cast<char*>(modrmp + 2);
501
504
  if (index == 4 && (base & 7) == 4 && scale == 0 /*times_1*/) {
502
505
  if (-disp > 0) {
503
- AppendToBuffer("[%s-0x%x]", (this->*register_name)(base), -disp);
506
+ AppendToBuffer("[%s-0x%x]", NameOfCPURegister(base), -disp);
504
507
  } else {
505
- AppendToBuffer("[%s+0x%x]", (this->*register_name)(base), disp);
508
+ AppendToBuffer("[%s+0x%x]", NameOfCPURegister(base), disp);
506
509
  }
507
510
  } else {
508
511
  if (-disp > 0) {
509
512
  AppendToBuffer("[%s+%s*%d-0x%x]",
510
- (this->*register_name)(base),
511
- (this->*register_name)(index),
513
+ NameOfCPURegister(base),
514
+ NameOfCPURegister(index),
512
515
  1 << scale,
513
516
  -disp);
514
517
  } else {
515
518
  AppendToBuffer("[%s+%s*%d+0x%x]",
516
- (this->*register_name)(base),
517
- (this->*register_name)(index),
519
+ NameOfCPURegister(base),
520
+ NameOfCPURegister(index),
518
521
  1 << scale,
519
522
  disp);
520
523
  }
@@ -525,9 +528,9 @@ int DisassemblerX64::PrintRightOperandHelper(
525
528
  int disp = (mod == 2) ? *reinterpret_cast<int32_t*>(modrmp + 1)
526
529
  : *reinterpret_cast<char*>(modrmp + 1);
527
530
  if (-disp > 0) {
528
- AppendToBuffer("[%s-0x%x]", (this->*register_name)(rm), -disp);
531
+ AppendToBuffer("[%s-0x%x]", NameOfCPURegister(rm), -disp);
529
532
  } else {
530
- AppendToBuffer("[%s+0x%x]", (this->*register_name)(rm), disp);
533
+ AppendToBuffer("[%s+0x%x]", NameOfCPURegister(rm), disp);
531
534
  }
532
535
  return (mod == 2) ? 5 : 2;
533
536
  }
@@ -1025,9 +1028,9 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
1025
1028
  if (opcode == 0x57) {
1026
1029
  mnemonic = "xorpd";
1027
1030
  } else if (opcode == 0x2E) {
1028
- mnemonic = "comisd";
1029
- } else if (opcode == 0x2F) {
1030
1031
  mnemonic = "ucomisd";
1032
+ } else if (opcode == 0x2F) {
1033
+ mnemonic = "comisd";
1031
1034
  } else {
1032
1035
  UnimplementedInstruction();
1033
1036
  }
@@ -1054,7 +1057,7 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
1054
1057
  // CVTSI2SD: integer to XMM double conversion.
1055
1058
  int mod, regop, rm;
1056
1059
  get_modrm(*current, &mod, &regop, &rm);
1057
- AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop));
1060
+ AppendToBuffer("%sd %s,", mnemonic, NameOfXMMRegister(regop));
1058
1061
  current += PrintRightOperand(current);
1059
1062
  } else if ((opcode & 0xF8) == 0x58 || opcode == 0x51) {
1060
1063
  // XMM arithmetic. Mnemonic was retrieved at the start of this function.
@@ -1067,7 +1070,25 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
1067
1070
  }
1068
1071
  } else if (group_1_prefix_ == 0xF3) {
1069
1072
  // Instructions with prefix 0xF3.
1070
- if (opcode == 0x2C) {
1073
+ if (opcode == 0x11 || opcode == 0x10) {
1074
+ // MOVSS: Move scalar double-precision fp to/from/between XMM registers.
1075
+ AppendToBuffer("movss ");
1076
+ int mod, regop, rm;
1077
+ get_modrm(*current, &mod, &regop, &rm);
1078
+ if (opcode == 0x11) {
1079
+ current += PrintRightOperand(current);
1080
+ AppendToBuffer(",%s", NameOfXMMRegister(regop));
1081
+ } else {
1082
+ AppendToBuffer("%s,", NameOfXMMRegister(regop));
1083
+ current += PrintRightOperand(current);
1084
+ }
1085
+ } else if (opcode == 0x2A) {
1086
+ // CVTSI2SS: integer to XMM single conversion.
1087
+ int mod, regop, rm;
1088
+ get_modrm(*current, &mod, &regop, &rm);
1089
+ AppendToBuffer("%ss %s,", mnemonic, NameOfXMMRegister(regop));
1090
+ current += PrintRightOperand(current);
1091
+ } else if (opcode == 0x2C) {
1071
1092
  // CVTTSS2SI: Convert scalar single-precision FP to dword integer.
1072
1093
  // Assert that mod is not 3, so source is memory, not an XMM register.
1073
1094
  ASSERT_NE(0xC0, *current & 0xC0);
@@ -1143,8 +1164,8 @@ const char* DisassemblerX64::TwoByteMnemonic(byte opcode) {
1143
1164
  switch (opcode) {
1144
1165
  case 0x1F:
1145
1166
  return "nop";
1146
- case 0x2A: // F2 prefix.
1147
- return "cvtsi2sd";
1167
+ case 0x2A: // F2/F3 prefix.
1168
+ return "cvtsi2s";
1148
1169
  case 0x31:
1149
1170
  return "rdtsc";
1150
1171
  case 0x51: // F2 prefix.
@@ -1671,3 +1692,5 @@ void Disassembler::Disassemble(FILE* f, byte* begin, byte* end) {
1671
1692
  }
1672
1693
 
1673
1694
  } // namespace disasm
1695
+
1696
+ #endif // V8_TARGET_ARCH_X64