therubyracer 0.6.3 → 0.7.0.pre

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

Potentially problematic release.


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

Files changed (520) hide show
  1. data/Rakefile +10 -9
  2. data/ext/v8/callbacks.cpp +15 -8
  3. data/ext/v8/converters.cpp +7 -8
  4. data/ext/v8/converters.h +0 -2
  5. data/ext/v8/extconf.rb +2 -0
  6. data/ext/v8/rr.cpp +169 -0
  7. data/ext/v8/rr.h +34 -0
  8. data/ext/v8/upstream/{2.0.6 → 2.1.10}/AUTHORS +8 -1
  9. data/ext/v8/upstream/{2.0.6 → 2.1.10}/ChangeLog +198 -0
  10. data/ext/v8/upstream/{2.0.6 → 2.1.10}/LICENSE +0 -0
  11. data/ext/v8/upstream/{2.0.6 → 2.1.10}/SConstruct +152 -38
  12. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8-debug.h +52 -4
  13. data/ext/v8/upstream/2.1.10/include/v8-profiler.h +176 -0
  14. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8.h +227 -48
  15. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/SConscript +60 -10
  16. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.cc +5 -39
  17. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.h +0 -0
  18. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.cc +0 -0
  19. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.h +0 -0
  20. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.cc +477 -57
  21. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.h +8 -4
  22. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apinatives.js +1 -1
  23. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apiutils.h +0 -0
  24. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arguments.h +5 -6
  25. data/ext/v8/upstream/{2.0.6/src/arm/assembler-thumb2-inl.h → 2.1.10/src/arm/assembler-arm-inl.h} +42 -27
  26. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.cc +430 -216
  27. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.h +199 -110
  28. data/ext/v8/upstream/{2.0.6/src/arm/assembler-arm-inl.h → 2.1.10/src/arm/assembler-thumb2-inl.h} +4 -18
  29. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.cc +142 -85
  30. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.h +18 -9
  31. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/builtins-arm.cc +127 -87
  32. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm-inl.h +3 -5
  33. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm.cc +4634 -1427
  34. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm.h +946 -0
  35. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.cc +21 -3
  36. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.h +39 -13
  37. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/cpu-arm.cc +9 -3
  38. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/debug-arm.cc +34 -8
  39. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/disasm-arm.cc +262 -117
  40. data/ext/v8/upstream/2.1.10/src/arm/fast-codegen-arm.cc +238 -0
  41. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.cc +0 -0
  42. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.h +0 -0
  43. data/ext/v8/upstream/{2.0.6/src/arm/fast-codegen-arm.cc → 2.1.10/src/arm/full-codegen-arm.cc} +453 -283
  44. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +1833 -0
  45. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/jump-target-arm.cc +3 -29
  46. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.cc +564 -104
  47. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.h +255 -46
  48. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.cc +78 -104
  49. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.h +6 -22
  50. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm-inl.h +0 -3
  51. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.cc +0 -0
  52. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.h +2 -1
  53. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.cc +557 -180
  54. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.h +52 -4
  55. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/stub-cache-arm.cc +904 -240
  56. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.cc +668 -0
  57. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.h +503 -0
  58. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/array.js +82 -109
  59. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.cc +49 -13
  60. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.h +27 -5
  61. data/ext/v8/upstream/2.1.10/src/ast.cc +1138 -0
  62. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ast.h +354 -53
  63. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.cc +609 -501
  64. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.h +27 -8
  65. data/ext/v8/upstream/2.1.10/src/builtins.cc +1512 -0
  66. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/builtins.h +41 -25
  67. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bytecodes-irregexp.h +0 -0
  68. data/ext/v8/upstream/2.1.10/src/cached-powers.h +119 -0
  69. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates-inl.h +0 -0
  70. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates.h +0 -0
  71. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.cc +0 -0
  72. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.h +25 -1
  73. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +101 -0
  74. data/ext/v8/upstream/2.1.10/src/circular-queue.cc +121 -0
  75. data/ext/v8/upstream/2.1.10/src/circular-queue.h +129 -0
  76. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.cc +23 -8
  77. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.h +16 -4
  78. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code.h +0 -0
  79. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen-inl.h +6 -34
  80. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.cc +73 -92
  81. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.h +164 -68
  82. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.cc +117 -73
  83. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.h +18 -17
  84. data/ext/v8/upstream/2.1.10/src/compiler.cc +623 -0
  85. data/ext/v8/upstream/2.1.10/src/compiler.h +299 -0
  86. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.cc +0 -0
  87. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.h +8 -11
  88. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions-inl.h +28 -13
  89. data/ext/v8/upstream/2.1.10/src/conversions.cc +1105 -0
  90. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions.h +9 -4
  91. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.cc +0 -0
  92. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.h +1 -1
  93. data/ext/v8/upstream/2.1.10/src/cpu-profiler-inl.h +99 -0
  94. data/ext/v8/upstream/2.1.10/src/cpu-profiler.cc +494 -0
  95. data/ext/v8/upstream/2.1.10/src/cpu-profiler.h +277 -0
  96. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/cpu.h +0 -0
  97. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.cc +15 -4
  98. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.h +0 -0
  99. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-posix.cc +18 -0
  100. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-readline.cc +2 -2
  101. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-windows.cc +0 -0
  102. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.cc +10 -6
  103. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.h +2 -0
  104. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.js +43 -38
  105. data/ext/v8/upstream/2.1.10/src/data-flow.cc +755 -0
  106. data/ext/v8/upstream/2.1.10/src/data-flow.h +278 -0
  107. data/ext/v8/upstream/{2.0.6/src/date-delay.js → 2.1.10/src/date.js} +100 -110
  108. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser-inl.h +11 -2
  109. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.cc +24 -26
  110. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.h +8 -4
  111. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.cc +3 -1
  112. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.h +0 -0
  113. data/ext/v8/upstream/{2.0.6/src/debug-delay.js → 2.1.10/src/debug-debugger.js} +111 -15
  114. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.cc +156 -96
  115. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.h +53 -5
  116. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disasm.h +0 -0
  117. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.cc +2 -8
  118. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.h +0 -0
  119. data/ext/v8/upstream/2.1.10/src/diy-fp.cc +58 -0
  120. data/ext/v8/upstream/2.1.10/src/diy-fp.h +117 -0
  121. data/ext/v8/upstream/2.1.10/src/double.h +169 -0
  122. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dtoa-config.c +4 -3
  123. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.cc +22 -22
  124. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.h +17 -4
  125. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.cc +70 -46
  126. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.h +27 -17
  127. data/ext/v8/upstream/2.1.10/src/fast-codegen.cc +746 -0
  128. data/ext/v8/upstream/2.1.10/src/fast-codegen.h +161 -0
  129. data/ext/v8/upstream/2.1.10/src/fast-dtoa.cc +512 -0
  130. data/ext/v8/upstream/2.1.10/src/fast-dtoa.h +59 -0
  131. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flag-definitions.h +32 -11
  132. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.cc +0 -0
  133. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.h +0 -0
  134. data/ext/v8/upstream/2.1.10/src/flow-graph.cc +763 -0
  135. data/ext/v8/upstream/2.1.10/src/flow-graph.h +180 -0
  136. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.cc +1 -4
  137. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.h +49 -11
  138. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames-inl.h +2 -0
  139. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.cc +91 -17
  140. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.h +24 -2
  141. data/ext/v8/upstream/{2.0.6/src/fast-codegen.cc → 2.1.10/src/full-codegen.cc} +549 -198
  142. data/ext/v8/upstream/{2.0.6/src/fast-codegen.h → 2.1.10/src/full-codegen.h} +109 -29
  143. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.cc +0 -0
  146. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/globals.h +67 -43
  148. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.cc +124 -129
  150. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.h +33 -15
  151. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-inl.h +56 -12
  154. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.cc +2 -2
  155. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.h +2 -0
  156. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.cc +413 -221
  157. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.h +192 -67
  158. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32-inl.h +6 -0
  159. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.cc +187 -32
  160. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.h +31 -4
  161. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/builtins-ia32.cc +160 -133
  162. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32.cc +5533 -2177
  164. data/ext/v8/upstream/{2.0.6/src/x64/codegen-x64.h → 2.1.10/src/ia32/codegen-ia32.h} +453 -134
  165. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/cpu-ia32.cc +0 -0
  166. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/debug-ia32.cc +63 -8
  167. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/disasm-ia32.cc +99 -16
  168. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.cc +950 -0
  169. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.h +155 -0
  170. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.cc +0 -0
  171. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.0.6/src/ia32/fast-codegen-ia32.cc → 2.1.10/src/ia32/full-codegen-ia32.cc} +454 -253
  173. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/ic-ia32.cc +545 -390
  174. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/jump-target-ia32.cc +1 -0
  175. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.cc +330 -139
  176. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.h +96 -30
  177. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.cc +73 -89
  178. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.h +6 -21
  179. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.cc +59 -5
  181. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.h +2 -2
  184. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/stub-cache-ia32.cc +745 -303
  185. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.cc +278 -71
  186. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.h +78 -22
  187. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic-inl.h +0 -0
  188. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.cc +172 -89
  189. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.h +51 -20
  190. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.0.6/src/json-delay.js → 2.1.10/src/json.js} +26 -12
  193. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.cc +151 -118
  194. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.h +31 -7
  195. data/ext/v8/upstream/2.1.10/src/jump-target-heavy-inl.h +51 -0
  196. data/ext/v8/upstream/{2.0.6/src/jump-target.cc → 2.1.10/src/jump-target-heavy.cc} +164 -184
  197. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target-inl.h +8 -9
  198. data/ext/v8/upstream/{2.0.6/src/usage-analyzer.h → 2.1.10/src/jump-target-light-inl.h} +9 -7
  199. data/ext/v8/upstream/2.1.10/src/jump-target-light.cc +86 -0
  200. data/ext/v8/upstream/2.1.10/src/jump-target.cc +155 -0
  201. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target.h +6 -0
  202. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list-inl.h +0 -0
  203. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list.h +2 -1
  204. data/ext/v8/upstream/2.1.10/src/liveedit-debugger.js +944 -0
  205. data/ext/v8/upstream/2.1.10/src/liveedit.cc +1468 -0
  206. data/ext/v8/upstream/2.1.10/src/liveedit.h +170 -0
  207. data/ext/v8/upstream/2.1.10/src/log-inl.h +59 -0
  208. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.cc +3 -9
  209. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.h +1 -4
  210. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.cc +198 -95
  211. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.h +50 -49
  212. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macro-assembler.h +9 -0
  213. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macros.py +30 -11
  214. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.cc +464 -152
  215. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.h +41 -20
  216. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/math.js +9 -8
  217. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/memory.h +0 -0
  218. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.cc +1 -0
  219. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.h +0 -0
  220. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.js +46 -9
  221. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips-inl.h +215 -0
  222. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.cc +1208 -0
  223. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.h +665 -0
  224. data/ext/v8/upstream/2.1.10/src/mips/builtins-mips.cc +202 -0
  225. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips-inl.h +70 -0
  226. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips.cc +1428 -0
  227. data/ext/v8/upstream/{2.0.6/src/arm/codegen-arm.h → 2.1.10/src/mips/codegen-mips.h} +103 -205
  228. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.cc +323 -0
  229. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.h +525 -0
  230. data/ext/v8/upstream/2.1.10/src/mips/cpu-mips.cc +69 -0
  231. data/ext/v8/upstream/2.1.10/src/mips/debug-mips.cc +128 -0
  232. data/ext/v8/upstream/2.1.10/src/mips/disasm-mips.cc +784 -0
  233. data/ext/v8/upstream/2.1.10/src/mips/fast-codegen-mips.cc +74 -0
  234. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.cc +99 -0
  235. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.h +164 -0
  236. data/ext/v8/upstream/2.1.10/src/mips/full-codegen-mips.cc +273 -0
  237. data/ext/v8/upstream/2.1.10/src/mips/ic-mips.cc +217 -0
  238. data/ext/v8/upstream/2.1.10/src/mips/jump-target-mips.cc +172 -0
  239. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.cc +1323 -0
  240. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.h +461 -0
  241. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips-inl.h +137 -0
  242. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.cc +60 -0
  243. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.h +46 -0
  244. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.cc +1648 -0
  245. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.h +311 -0
  246. data/ext/v8/upstream/2.1.10/src/mips/stub-cache-mips.cc +400 -0
  247. data/ext/v8/upstream/2.1.10/src/mips/virtual-frame-mips.cc +316 -0
  248. data/ext/v8/upstream/{2.0.6/src/arm/virtual-frame-arm.h → 2.1.10/src/mips/virtual-frame-mips.h} +87 -71
  249. data/ext/v8/upstream/{2.0.6/src/mirror-delay.js → 2.1.10/src/mirror-debugger.js} +51 -45
  250. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mksnapshot.cc +97 -10
  251. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/natives.h +6 -6
  252. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-debug.cc +47 -5
  253. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-inl.h +154 -38
  254. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.cc +528 -280
  255. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.h +302 -95
  256. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.cc +25 -33
  257. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.h +9 -1
  258. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.cc +444 -72
  259. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.h +4 -2
  260. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-freebsd.cc +32 -13
  261. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-linux.cc +59 -25
  262. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-macos.cc +30 -13
  263. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-nullos.cc +0 -0
  264. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-openbsd.cc +21 -2
  265. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-posix.cc +0 -18
  266. data/ext/v8/upstream/2.1.10/src/platform-solaris.cc +607 -0
  267. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-win32.cc +16 -17
  268. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform.h +25 -8
  269. data/ext/v8/upstream/2.1.10/src/powers-ten.h +2461 -0
  270. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.cc +49 -29
  271. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.h +3 -1
  272. data/ext/v8/upstream/2.1.10/src/profile-generator-inl.h +124 -0
  273. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +583 -0
  274. data/ext/v8/upstream/2.1.10/src/profile-generator.h +364 -0
  275. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.cc +1 -1
  276. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.h +12 -24
  277. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp-inl.h +2 -2
  278. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.cc +2 -2
  279. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.h +2 -2
  280. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.cc +2 -2
  281. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.h +0 -0
  282. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.cc +33 -10
  283. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.h +12 -4
  284. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.cc +0 -0
  285. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.h +0 -0
  286. data/ext/v8/upstream/{2.0.6/src/regexp-delay.js → 2.1.10/src/regexp.js} +180 -58
  287. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator-inl.h +68 -1
  288. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.cc +5 -2
  289. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.h +42 -17
  290. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.cc +110 -4
  291. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.h +0 -0
  292. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.cc +2733 -623
  293. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.h +43 -20
  294. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.js +46 -35
  295. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.cc +278 -36
  296. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.h +97 -26
  297. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.cc +3 -3
  298. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.h +1 -0
  299. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.cc +11 -12
  300. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.h +0 -1
  301. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.cc +298 -175
  302. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.h +184 -40
  303. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/shell.h +0 -0
  304. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/simulator.h +2 -0
  305. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/smart-pointer.h +0 -0
  306. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot-common.cc +16 -31
  307. data/ext/v8/upstream/2.1.10/src/snapshot-empty.cc +50 -0
  308. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot.h +13 -1
  309. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces-inl.h +35 -27
  310. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.cc +256 -42
  311. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.h +136 -42
  312. data/ext/v8/upstream/{2.0.6/src/zone-inl.h → 2.1.10/src/splay-tree-inl.h} +102 -89
  313. data/ext/v8/upstream/2.1.10/src/splay-tree.h +203 -0
  314. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.cc +0 -0
  315. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.h +0 -0
  316. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string.js +260 -149
  317. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.cc +195 -69
  318. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.h +127 -12
  319. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/COPYING +0 -0
  320. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/dtoa.c +0 -0
  321. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/valgrind/valgrind.h +0 -0
  322. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.cc +0 -0
  323. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.h +0 -0
  324. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.cc +26 -31
  325. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.h +3 -4
  326. data/ext/v8/upstream/2.1.10/src/type-info.cc +53 -0
  327. data/ext/v8/upstream/2.1.10/src/type-info.h +244 -0
  328. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode-inl.h +0 -0
  329. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.cc +0 -0
  330. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.h +0 -0
  331. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/uri.js +6 -6
  332. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.cc +0 -37
  333. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.h +121 -50
  334. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.cc +0 -0
  335. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.h +130 -98
  336. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.cc +42 -11
  337. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.h +4 -2
  338. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8natives.js +202 -37
  339. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.cc +11 -0
  340. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.h +15 -0
  341. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.cc +7 -51
  342. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.h +5 -35
  343. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.cc +3 -3
  344. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.h +0 -0
  345. data/ext/v8/upstream/2.1.10/src/virtual-frame-heavy-inl.h +152 -0
  346. data/ext/v8/upstream/{2.0.6/src/virtual-frame.cc → 2.1.10/src/virtual-frame-heavy.cc} +107 -176
  347. data/ext/v8/upstream/2.1.10/src/virtual-frame-inl.h +39 -0
  348. data/ext/v8/upstream/2.1.10/src/virtual-frame-light-inl.h +69 -0
  349. data/ext/v8/upstream/2.1.10/src/virtual-frame-light.cc +49 -0
  350. data/ext/v8/upstream/2.1.10/src/virtual-frame.cc +49 -0
  351. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/virtual-frame.h +2 -0
  352. data/ext/v8/upstream/{2.0.6/src/log-inl.h → 2.1.10/src/vm-state-inl.h} +28 -20
  353. data/ext/v8/upstream/{2.0.6/src/snapshot-empty.cc → 2.1.10/src/vm-state.cc} +5 -6
  354. data/ext/v8/upstream/2.1.10/src/vm-state.h +75 -0
  355. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64-inl.h +11 -0
  356. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.cc +285 -93
  357. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.h +81 -78
  358. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/builtins-x64.cc +130 -87
  359. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64-inl.h +0 -0
  360. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64.cc +4520 -1317
  361. data/ext/v8/upstream/{2.0.6/src/ia32/codegen-ia32.h → 2.1.10/src/x64/codegen-x64.h} +362 -141
  362. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/cpu-x64.cc +0 -0
  363. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/debug-x64.cc +20 -4
  364. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/disasm-x64.cc +121 -44
  365. data/ext/v8/upstream/2.1.10/src/x64/fast-codegen-x64.cc +246 -0
  366. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.cc +0 -0
  367. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.h +0 -0
  368. data/ext/v8/upstream/{2.0.6/src/x64/fast-codegen-x64.cc → 2.1.10/src/x64/full-codegen-x64.cc} +404 -231
  369. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/ic-x64.cc +346 -117
  370. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/jump-target-x64.cc +1 -0
  371. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.cc +537 -181
  372. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.h +140 -34
  373. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.cc +74 -96
  374. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.h +8 -25
  375. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64-inl.h +1 -1
  376. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.cc +3 -0
  377. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.h +0 -0
  378. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.cc +0 -0
  379. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.h +2 -2
  380. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/stub-cache-x64.cc +785 -288
  381. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.cc +128 -52
  382. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.h +40 -19
  383. data/ext/v8/upstream/2.1.10/src/zone-inl.h +82 -0
  384. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.cc +1 -0
  385. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.h +6 -90
  386. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/codemap.js +12 -0
  387. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/consarray.js +0 -0
  388. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/csvparser.js +22 -37
  389. data/ext/v8/upstream/2.1.10/tools/generate-ten-powers.scm +286 -0
  390. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/gyp/v8.gyp +86 -24
  391. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/js2c.py +22 -22
  392. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/jsmin.py +0 -0
  393. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor +10 -1
  394. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor.py +0 -0
  395. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/logreader.js +34 -16
  396. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-nm +0 -0
  397. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-tick-processor +0 -0
  398. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/annotate +0 -0
  399. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/common +0 -0
  400. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/dump +0 -0
  401. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/report +0 -0
  402. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/reset +0 -0
  403. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/run +0 -0
  404. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/shutdown +0 -0
  405. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/start +0 -0
  406. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/presubmit.py +0 -0
  407. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/process-heap-prof.py +0 -0
  408. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile.js +70 -0
  409. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile_view.js +0 -0
  410. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/run-valgrind.py +0 -0
  411. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.js +0 -0
  412. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.py +0 -0
  413. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/stats-viewer.py +0 -0
  414. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/test.py +7 -7
  415. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor-driver.js +7 -1
  416. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.js +140 -9
  417. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.py +40 -4
  418. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/utils.py +6 -0
  419. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/README.txt +0 -0
  420. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/arm.vsprops +1 -1
  421. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/common.vsprops +1 -2
  422. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8.vcproj +0 -6
  423. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_arm.vcproj +193 -199
  424. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_x64.vcproj +16 -8
  425. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8js2c.cmd +0 -0
  426. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/debug.vsprops +0 -0
  427. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/ia32.vsprops +5 -1
  428. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/js2c.cmd +1 -1
  429. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/release.vsprops +0 -0
  430. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.sln +0 -0
  431. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.vcproj +11 -7
  432. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.sln +0 -0
  433. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.vcproj +227 -223
  434. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base.vcproj +137 -5
  435. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_arm.vcproj +116 -4
  436. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_x64.vcproj +125 -4
  437. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest.vcproj +12 -6
  438. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_arm.vcproj +12 -6
  439. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_x64.vcproj +11 -11
  440. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot.vcproj +0 -6
  441. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -6
  442. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample.vcproj +0 -6
  443. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_arm.vcproj +145 -151
  444. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_x64.vcproj +16 -6
  445. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample.vcproj +0 -6
  446. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -151
  447. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_x64.vcproj +16 -8
  448. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  449. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  450. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  451. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.sln +0 -0
  453. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.vcproj +11 -7
  454. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/x64.vsprops +5 -1
  455. data/ext/v8/upstream/2.1.10/tools/windows-tick-processor.bat +29 -0
  456. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/windows-tick-processor.py +0 -0
  457. data/ext/v8/upstream/Makefile +8 -2
  458. data/ext/v8/v8.cpp +21 -73
  459. data/ext/v8/v8_array.cpp +56 -0
  460. data/ext/v8/v8_array.h +8 -0
  461. data/ext/v8/v8_callbacks.cpp +121 -0
  462. data/ext/v8/v8_callbacks.h +8 -0
  463. data/ext/v8/v8_cxt.cpp +74 -77
  464. data/ext/v8/v8_cxt.h +2 -9
  465. data/ext/v8/v8_date.cpp +26 -0
  466. data/ext/v8/v8_date.h +6 -0
  467. data/ext/v8/v8_exception.cpp +55 -0
  468. data/ext/v8/v8_exception.h +6 -0
  469. data/ext/v8/v8_external.cpp +50 -0
  470. data/ext/v8/v8_external.h +8 -0
  471. data/ext/v8/v8_func.cpp +76 -18
  472. data/ext/v8/v8_func.h +5 -4
  473. data/ext/v8/v8_msg.cpp +55 -46
  474. data/ext/v8/v8_msg.h +3 -11
  475. data/ext/v8/v8_obj.cpp +67 -36
  476. data/ext/v8/v8_obj.h +6 -8
  477. data/ext/v8/v8_ref.cpp +25 -9
  478. data/ext/v8/v8_ref.h +3 -5
  479. data/ext/v8/v8_script.cpp +17 -10
  480. data/ext/v8/v8_script.h +3 -3
  481. data/ext/v8/v8_str.cpp +34 -6
  482. data/ext/v8/v8_str.h +4 -2
  483. data/ext/v8/v8_template.cpp +195 -33
  484. data/ext/v8/v8_template.h +4 -5
  485. data/ext/v8/v8_try_catch.cpp +99 -0
  486. data/ext/v8/v8_try_catch.h +5 -0
  487. data/ext/v8/v8_value.cpp +164 -0
  488. data/ext/v8/v8_value.h +10 -0
  489. data/lib/v8.rb +3 -1
  490. data/lib/v8/access.rb +60 -0
  491. data/lib/v8/array.rb +15 -0
  492. data/lib/v8/callbacks.rb +88 -0
  493. data/lib/v8/cli.rb +1 -1
  494. data/lib/v8/context.rb +55 -66
  495. data/lib/v8/function.rb +20 -2
  496. data/lib/v8/object.rb +14 -12
  497. data/lib/v8/ruby_error.rb +3 -0
  498. data/lib/v8/to.rb +59 -7
  499. data/spec/ext/cxt_spec.rb +2 -15
  500. data/spec/ext/func_spec.rb +17 -10
  501. data/spec/ext/try_catch_spec.rb +32 -0
  502. data/spec/foo.rb +17 -0
  503. data/spec/redjs/jsapi_spec.rb +173 -96
  504. data/spec/spec_helper.rb +7 -0
  505. data/spec/v8/to_spec.rb +0 -1
  506. data/therubyracer.gemspec +6 -6
  507. metadata +493 -386
  508. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
  509. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
  510. data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
  511. data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
  512. data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
  513. data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
  514. data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
  515. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
  516. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
  517. data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
  518. data/ext/v8/v8_standalone.cpp +0 -69
  519. data/ext/v8/v8_standalone.h +0 -31
  520. data/spec/ext/obj_spec.rb +0 -13
@@ -33,46 +33,6 @@
33
33
  namespace v8 {
34
34
  namespace internal {
35
35
 
36
- // -----------------------------------------------------------------------------
37
- // Implementation of Register
38
-
39
- Register rax = { 0 };
40
- Register rcx = { 1 };
41
- Register rdx = { 2 };
42
- Register rbx = { 3 };
43
- Register rsp = { 4 };
44
- Register rbp = { 5 };
45
- Register rsi = { 6 };
46
- Register rdi = { 7 };
47
- Register r8 = { 8 };
48
- Register r9 = { 9 };
49
- Register r10 = { 10 };
50
- Register r11 = { 11 };
51
- Register r12 = { 12 };
52
- Register r13 = { 13 };
53
- Register r14 = { 14 };
54
- Register r15 = { 15 };
55
-
56
- Register no_reg = { -1 };
57
-
58
- XMMRegister xmm0 = { 0 };
59
- XMMRegister xmm1 = { 1 };
60
- XMMRegister xmm2 = { 2 };
61
- XMMRegister xmm3 = { 3 };
62
- XMMRegister xmm4 = { 4 };
63
- XMMRegister xmm5 = { 5 };
64
- XMMRegister xmm6 = { 6 };
65
- XMMRegister xmm7 = { 7 };
66
- XMMRegister xmm8 = { 8 };
67
- XMMRegister xmm9 = { 9 };
68
- XMMRegister xmm10 = { 10 };
69
- XMMRegister xmm11 = { 11 };
70
- XMMRegister xmm12 = { 12 };
71
- XMMRegister xmm13 = { 13 };
72
- XMMRegister xmm14 = { 14 };
73
- XMMRegister xmm15 = { 15 };
74
-
75
-
76
36
  // -----------------------------------------------------------------------------
77
37
  // Implementation of CpuFeatures
78
38
 
@@ -156,11 +116,13 @@ void CpuFeatures::Probe() {
156
116
 
157
117
  CodeDesc desc;
158
118
  assm.GetCode(&desc);
159
- Object* code =
160
- Heap::CreateCode(desc, NULL, Code::ComputeFlags(Code::STUB), NULL);
119
+ Object* code = Heap::CreateCode(desc,
120
+ NULL,
121
+ Code::ComputeFlags(Code::STUB),
122
+ Handle<Object>());
161
123
  if (!code->IsCode()) return;
162
- LOG(CodeCreateEvent(Logger::BUILTIN_TAG,
163
- Code::cast(code), "CpuFeatures::Probe"));
124
+ PROFILE(CodeCreateEvent(Logger::BUILTIN_TAG,
125
+ Code::cast(code), "CpuFeatures::Probe"));
164
126
  typedef uint64_t (*F0)();
165
127
  F0 probe = FUNCTION_CAST<F0>(Code::cast(code)->entry());
166
128
  supported_ = probe();
@@ -224,7 +186,7 @@ void RelocInfo::PatchCode(byte* instructions, int instruction_count) {
224
186
  // -----------------------------------------------------------------------------
225
187
  // Implementation of Operand
226
188
 
227
- Operand::Operand(Register base, int32_t disp): rex_(0) {
189
+ Operand::Operand(Register base, int32_t disp) : rex_(0) {
228
190
  len_ = 1;
229
191
  if (base.is(rsp) || base.is(r12)) {
230
192
  // SIB byte is needed to encode (rsp + offset) or (r12 + offset).
@@ -246,7 +208,7 @@ Operand::Operand(Register base, int32_t disp): rex_(0) {
246
208
  Operand::Operand(Register base,
247
209
  Register index,
248
210
  ScaleFactor scale,
249
- int32_t disp): rex_(0) {
211
+ int32_t disp) : rex_(0) {
250
212
  ASSERT(!index.is(rsp));
251
213
  len_ = 1;
252
214
  set_sib(scale, index, base);
@@ -264,8 +226,19 @@ Operand::Operand(Register base,
264
226
  }
265
227
 
266
228
 
229
+ Operand::Operand(Register index,
230
+ ScaleFactor scale,
231
+ int32_t disp) : rex_(0) {
232
+ ASSERT(!index.is(rsp));
233
+ len_ = 1;
234
+ set_modrm(0, rsp);
235
+ set_sib(scale, index, rbp);
236
+ set_disp32(disp);
237
+ }
238
+
239
+
267
240
  // -----------------------------------------------------------------------------
268
- // Implementation of Assembler
241
+ // Implementation of Assembler.
269
242
 
270
243
  #ifdef GENERATED_CODE_COVERAGE
271
244
  static void InitCoverageLog();
@@ -276,7 +249,7 @@ byte* Assembler::spare_buffer_ = NULL;
276
249
  Assembler::Assembler(void* buffer, int buffer_size)
277
250
  : code_targets_(100) {
278
251
  if (buffer == NULL) {
279
- // do our own buffer management
252
+ // Do our own buffer management.
280
253
  if (buffer_size <= kMinimalBufferSize) {
281
254
  buffer_size = kMinimalBufferSize;
282
255
 
@@ -293,7 +266,7 @@ Assembler::Assembler(void* buffer, int buffer_size)
293
266
  buffer_size_ = buffer_size;
294
267
  own_buffer_ = true;
295
268
  } else {
296
- // use externally provided buffer instead
269
+ // Use externally provided buffer instead.
297
270
  ASSERT(buffer_size > 0);
298
271
  buffer_ = static_cast<byte*>(buffer);
299
272
  buffer_size_ = buffer_size;
@@ -309,7 +282,7 @@ Assembler::Assembler(void* buffer, int buffer_size)
309
282
  }
310
283
  #endif
311
284
 
312
- // setup buffer pointers
285
+ // Setup buffer pointers.
313
286
  ASSERT(buffer_ != NULL);
314
287
  pc_ = buffer_;
315
288
  reloc_info_writer.Reposition(buffer_ + buffer_size, pc_);
@@ -337,11 +310,10 @@ Assembler::~Assembler() {
337
310
 
338
311
 
339
312
  void Assembler::GetCode(CodeDesc* desc) {
340
- // finalize code
341
- // (at this point overflow() may be true, but the gap ensures that
342
- // we are still not overlapping instructions and relocation info)
343
- ASSERT(pc_ <= reloc_info_writer.pos()); // no overlap
344
- // setup desc
313
+ // Finalize code (at this point overflow() may be true, but the gap ensures
314
+ // that we are still not overlapping instructions and relocation info).
315
+ ASSERT(pc_ <= reloc_info_writer.pos()); // No overlap.
316
+ // Setup code descriptor.
345
317
  desc->buffer = buffer_;
346
318
  desc->buffer_size = buffer_size_;
347
319
  desc->instr_size = pc_offset();
@@ -370,7 +342,7 @@ void Assembler::bind_to(Label* L, int pos) {
370
342
  int current = L->pos();
371
343
  int next = long_at(current);
372
344
  while (next != current) {
373
- // relative address, relative to point after address
345
+ // Relative address, relative to point after address.
374
346
  int imm32 = pos - (current + sizeof(int32_t));
375
347
  long_at_put(current, imm32);
376
348
  current = next;
@@ -390,10 +362,10 @@ void Assembler::bind(Label* L) {
390
362
 
391
363
 
392
364
  void Assembler::GrowBuffer() {
393
- ASSERT(buffer_overflow()); // should not call this otherwise
365
+ ASSERT(buffer_overflow());
394
366
  if (!own_buffer_) FATAL("external code buffer is too small");
395
367
 
396
- // compute new buffer size
368
+ // Compute new buffer size.
397
369
  CodeDesc desc; // the new buffer
398
370
  if (buffer_size_ < 4*KB) {
399
371
  desc.buffer_size = 4*KB;
@@ -407,7 +379,7 @@ void Assembler::GrowBuffer() {
407
379
  V8::FatalProcessOutOfMemory("Assembler::GrowBuffer");
408
380
  }
409
381
 
410
- // setup new buffer
382
+ // Setup new buffer.
411
383
  desc.buffer = NewArray<byte>(desc.buffer_size);
412
384
  desc.instr_size = pc_offset();
413
385
  desc.reloc_size =
@@ -419,7 +391,7 @@ void Assembler::GrowBuffer() {
419
391
  memset(desc.buffer, 0xCC, desc.buffer_size);
420
392
  #endif
421
393
 
422
- // copy the data
394
+ // Copy the data.
423
395
  intptr_t pc_delta = desc.buffer - buffer_;
424
396
  intptr_t rc_delta = (desc.buffer + desc.buffer_size) -
425
397
  (buffer_ + buffer_size_);
@@ -427,7 +399,7 @@ void Assembler::GrowBuffer() {
427
399
  memmove(rc_delta + reloc_info_writer.pos(),
428
400
  reloc_info_writer.pos(), desc.reloc_size);
429
401
 
430
- // switch buffers
402
+ // Switch buffers.
431
403
  if (spare_buffer_ == NULL && buffer_size_ == kMinimalBufferSize) {
432
404
  spare_buffer_ = buffer_;
433
405
  } else {
@@ -442,7 +414,7 @@ void Assembler::GrowBuffer() {
442
414
  reloc_info_writer.Reposition(reloc_info_writer.pos() + rc_delta,
443
415
  reloc_info_writer.last_pc() + pc_delta);
444
416
 
445
- // relocate runtime entries
417
+ // Relocate runtime entries.
446
418
  for (RelocIterator it(desc); !it.done(); it.next()) {
447
419
  RelocInfo::Mode rmode = it.rinfo()->rmode();
448
420
  if (rmode == RelocInfo::INTERNAL_REFERENCE) {
@@ -472,7 +444,7 @@ void Assembler::emit_operand(int code, const Operand& adr) {
472
444
  }
473
445
 
474
446
 
475
- // Assembler Instruction implementations
447
+ // Assembler Instruction implementations.
476
448
 
477
449
  void Assembler::arithmetic_op(byte opcode, Register reg, const Operand& op) {
478
450
  EnsureSpace ensure_space(this);
@@ -756,7 +728,7 @@ void Assembler::bts(const Operand& dst, Register src) {
756
728
  void Assembler::call(Label* L) {
757
729
  EnsureSpace ensure_space(this);
758
730
  last_pc_ = pc_;
759
- // 1110 1000 #32-bit disp
731
+ // 1110 1000 #32-bit disp.
760
732
  emit(0xE8);
761
733
  if (L->is_bound()) {
762
734
  int offset = L->pos() - pc_offset() - sizeof(int32_t);
@@ -777,7 +749,7 @@ void Assembler::call(Label* L) {
777
749
  void Assembler::call(Handle<Code> target, RelocInfo::Mode rmode) {
778
750
  EnsureSpace ensure_space(this);
779
751
  last_pc_ = pc_;
780
- // 1110 1000 #32-bit disp
752
+ // 1110 1000 #32-bit disp.
781
753
  emit(0xE8);
782
754
  emit_code_target(target, rmode);
783
755
  }
@@ -786,7 +758,7 @@ void Assembler::call(Handle<Code> target, RelocInfo::Mode rmode) {
786
758
  void Assembler::call(Register adr) {
787
759
  EnsureSpace ensure_space(this);
788
760
  last_pc_ = pc_;
789
- // Opcode: FF /2 r64
761
+ // Opcode: FF /2 r64.
790
762
  if (adr.high_bit()) {
791
763
  emit_rex_64(adr);
792
764
  }
@@ -798,7 +770,7 @@ void Assembler::call(Register adr) {
798
770
  void Assembler::call(const Operand& op) {
799
771
  EnsureSpace ensure_space(this);
800
772
  last_pc_ = pc_;
801
- // Opcode: FF /2 m64
773
+ // Opcode: FF /2 m64.
802
774
  emit_rex_64(op);
803
775
  emit(0xFF);
804
776
  emit_operand(2, op);
@@ -829,7 +801,7 @@ void Assembler::cmovq(Condition cc, Register dst, Register src) {
829
801
  ASSERT(cc >= 0); // Use mov for unconditional moves.
830
802
  EnsureSpace ensure_space(this);
831
803
  last_pc_ = pc_;
832
- // Opcode: REX.W 0f 40 + cc /r
804
+ // Opcode: REX.W 0f 40 + cc /r.
833
805
  emit_rex_64(dst, src);
834
806
  emit(0x0f);
835
807
  emit(0x40 + cc);
@@ -846,7 +818,7 @@ void Assembler::cmovq(Condition cc, Register dst, const Operand& src) {
846
818
  ASSERT(cc >= 0);
847
819
  EnsureSpace ensure_space(this);
848
820
  last_pc_ = pc_;
849
- // Opcode: REX.W 0f 40 + cc /r
821
+ // Opcode: REX.W 0f 40 + cc /r.
850
822
  emit_rex_64(dst, src);
851
823
  emit(0x0f);
852
824
  emit(0x40 + cc);
@@ -863,7 +835,7 @@ void Assembler::cmovl(Condition cc, Register dst, Register src) {
863
835
  ASSERT(cc >= 0);
864
836
  EnsureSpace ensure_space(this);
865
837
  last_pc_ = pc_;
866
- // Opcode: 0f 40 + cc /r
838
+ // Opcode: 0f 40 + cc /r.
867
839
  emit_optional_rex_32(dst, src);
868
840
  emit(0x0f);
869
841
  emit(0x40 + cc);
@@ -880,7 +852,7 @@ void Assembler::cmovl(Condition cc, Register dst, const Operand& src) {
880
852
  ASSERT(cc >= 0);
881
853
  EnsureSpace ensure_space(this);
882
854
  last_pc_ = pc_;
883
- // Opcode: 0f 40 + cc /r
855
+ // Opcode: 0f 40 + cc /r.
884
856
  emit_optional_rex_32(dst, src);
885
857
  emit(0x0f);
886
858
  emit(0x40 + cc);
@@ -1060,6 +1032,22 @@ void Assembler::imull(Register dst, Register src) {
1060
1032
  }
1061
1033
 
1062
1034
 
1035
+ void Assembler::imull(Register dst, Register src, Immediate imm) {
1036
+ EnsureSpace ensure_space(this);
1037
+ last_pc_ = pc_;
1038
+ emit_optional_rex_32(dst, src);
1039
+ if (is_int8(imm.value_)) {
1040
+ emit(0x6B);
1041
+ emit_modrm(dst, src);
1042
+ emit(imm.value_);
1043
+ } else {
1044
+ emit(0x69);
1045
+ emit_modrm(dst, src);
1046
+ emitl(imm.value_);
1047
+ }
1048
+ }
1049
+
1050
+
1063
1051
  void Assembler::incq(Register dst) {
1064
1052
  EnsureSpace ensure_space(this);
1065
1053
  last_pc_ = pc_;
@@ -1110,17 +1098,17 @@ void Assembler::j(Condition cc, Label* L) {
1110
1098
  int offs = L->pos() - pc_offset();
1111
1099
  ASSERT(offs <= 0);
1112
1100
  if (is_int8(offs - short_size)) {
1113
- // 0111 tttn #8-bit disp
1101
+ // 0111 tttn #8-bit disp.
1114
1102
  emit(0x70 | cc);
1115
1103
  emit((offs - short_size) & 0xFF);
1116
1104
  } else {
1117
- // 0000 1111 1000 tttn #32-bit disp
1105
+ // 0000 1111 1000 tttn #32-bit disp.
1118
1106
  emit(0x0F);
1119
1107
  emit(0x80 | cc);
1120
1108
  emitl(offs - long_size);
1121
1109
  }
1122
1110
  } else if (L->is_linked()) {
1123
- // 0000 1111 1000 tttn #32-bit disp
1111
+ // 0000 1111 1000 tttn #32-bit disp.
1124
1112
  emit(0x0F);
1125
1113
  emit(0x80 | cc);
1126
1114
  emitl(L->pos());
@@ -1142,7 +1130,7 @@ void Assembler::j(Condition cc,
1142
1130
  EnsureSpace ensure_space(this);
1143
1131
  last_pc_ = pc_;
1144
1132
  ASSERT(is_uint4(cc));
1145
- // 0000 1111 1000 tttn #32-bit disp
1133
+ // 0000 1111 1000 tttn #32-bit disp.
1146
1134
  emit(0x0F);
1147
1135
  emit(0x80 | cc);
1148
1136
  emit_code_target(target, rmode);
@@ -1152,25 +1140,27 @@ void Assembler::j(Condition cc,
1152
1140
  void Assembler::jmp(Label* L) {
1153
1141
  EnsureSpace ensure_space(this);
1154
1142
  last_pc_ = pc_;
1143
+ const int short_size = sizeof(int8_t);
1144
+ const int long_size = sizeof(int32_t);
1155
1145
  if (L->is_bound()) {
1156
1146
  int offs = L->pos() - pc_offset() - 1;
1157
1147
  ASSERT(offs <= 0);
1158
- if (is_int8(offs - sizeof(int8_t))) {
1159
- // 1110 1011 #8-bit disp
1148
+ if (is_int8(offs - short_size)) {
1149
+ // 1110 1011 #8-bit disp.
1160
1150
  emit(0xEB);
1161
- emit((offs - sizeof(int8_t)) & 0xFF);
1151
+ emit((offs - short_size) & 0xFF);
1162
1152
  } else {
1163
- // 1110 1001 #32-bit disp
1153
+ // 1110 1001 #32-bit disp.
1164
1154
  emit(0xE9);
1165
- emitl(offs - sizeof(int32_t));
1155
+ emitl(offs - long_size);
1166
1156
  }
1167
1157
  } else if (L->is_linked()) {
1168
- // 1110 1001 #32-bit disp
1158
+ // 1110 1001 #32-bit disp.
1169
1159
  emit(0xE9);
1170
1160
  emitl(L->pos());
1171
- L->link_to(pc_offset() - sizeof(int32_t));
1161
+ L->link_to(pc_offset() - long_size);
1172
1162
  } else {
1173
- // 1110 1001 #32-bit disp
1163
+ // 1110 1001 #32-bit disp.
1174
1164
  ASSERT(L->is_unused());
1175
1165
  emit(0xE9);
1176
1166
  int32_t current = pc_offset();
@@ -1183,7 +1173,7 @@ void Assembler::jmp(Label* L) {
1183
1173
  void Assembler::jmp(Handle<Code> target, RelocInfo::Mode rmode) {
1184
1174
  EnsureSpace ensure_space(this);
1185
1175
  last_pc_ = pc_;
1186
- // 1110 1001 #32-bit disp
1176
+ // 1110 1001 #32-bit disp.
1187
1177
  emit(0xE9);
1188
1178
  emit_code_target(target, rmode);
1189
1179
  }
@@ -1192,7 +1182,7 @@ void Assembler::jmp(Handle<Code> target, RelocInfo::Mode rmode) {
1192
1182
  void Assembler::jmp(Register target) {
1193
1183
  EnsureSpace ensure_space(this);
1194
1184
  last_pc_ = pc_;
1195
- // Opcode FF/4 r64
1185
+ // Opcode FF/4 r64.
1196
1186
  if (target.high_bit()) {
1197
1187
  emit_rex_64(target);
1198
1188
  }
@@ -1204,7 +1194,7 @@ void Assembler::jmp(Register target) {
1204
1194
  void Assembler::jmp(const Operand& src) {
1205
1195
  EnsureSpace ensure_space(this);
1206
1196
  last_pc_ = pc_;
1207
- // Opcode FF/4 m64
1197
+ // Opcode FF/4 m64.
1208
1198
  emit_optional_rex_32(src);
1209
1199
  emit(0xFF);
1210
1200
  emit_operand(0x4, src);
@@ -1220,6 +1210,15 @@ void Assembler::lea(Register dst, const Operand& src) {
1220
1210
  }
1221
1211
 
1222
1212
 
1213
+ void Assembler::leal(Register dst, const Operand& src) {
1214
+ EnsureSpace ensure_space(this);
1215
+ last_pc_ = pc_;
1216
+ emit_optional_rex_32(dst, src);
1217
+ emit(0x8D);
1218
+ emit_operand(dst, src);
1219
+ }
1220
+
1221
+
1223
1222
  void Assembler::load_rax(void* value, RelocInfo::Mode mode) {
1224
1223
  EnsureSpace ensure_space(this);
1225
1224
  last_pc_ = pc_;
@@ -1249,6 +1248,7 @@ void Assembler::movb(Register dst, const Operand& src) {
1249
1248
  emit_operand(dst, src);
1250
1249
  }
1251
1250
 
1251
+
1252
1252
  void Assembler::movb(Register dst, Immediate imm) {
1253
1253
  EnsureSpace ensure_space(this);
1254
1254
  last_pc_ = pc_;
@@ -1258,6 +1258,7 @@ void Assembler::movb(Register dst, Immediate imm) {
1258
1258
  emit(imm.value_);
1259
1259
  }
1260
1260
 
1261
+
1261
1262
  void Assembler::movb(const Operand& dst, Register src) {
1262
1263
  EnsureSpace ensure_space(this);
1263
1264
  last_pc_ = pc_;
@@ -1266,6 +1267,7 @@ void Assembler::movb(const Operand& dst, Register src) {
1266
1267
  emit_operand(src, dst);
1267
1268
  }
1268
1269
 
1270
+
1269
1271
  void Assembler::movw(const Operand& dst, Register src) {
1270
1272
  EnsureSpace ensure_space(this);
1271
1273
  last_pc_ = pc_;
@@ -1275,6 +1277,7 @@ void Assembler::movw(const Operand& dst, Register src) {
1275
1277
  emit_operand(src, dst);
1276
1278
  }
1277
1279
 
1280
+
1278
1281
  void Assembler::movl(Register dst, const Operand& src) {
1279
1282
  EnsureSpace ensure_space(this);
1280
1283
  last_pc_ = pc_;
@@ -1413,10 +1416,8 @@ void Assembler::movq(const Operand& dst, Immediate value) {
1413
1416
  }
1414
1417
 
1415
1418
 
1416
- /*
1417
- * Loads the ip-relative location of the src label into the target
1418
- * location (as a 32-bit offset sign extended to 64-bit).
1419
- */
1419
+ // Loads the ip-relative location of the src label into the target location
1420
+ // (as a 32-bit offset sign extended to 64-bit).
1420
1421
  void Assembler::movl(const Operand& dst, Label* src) {
1421
1422
  EnsureSpace ensure_space(this);
1422
1423
  last_pc_ = pc_;
@@ -1537,6 +1538,40 @@ void Assembler::movzxwl(Register dst, const Operand& src) {
1537
1538
  }
1538
1539
 
1539
1540
 
1541
+ void Assembler::repmovsb() {
1542
+ EnsureSpace ensure_space(this);
1543
+ last_pc_ = pc_;
1544
+ emit(0xF3);
1545
+ emit(0xA4);
1546
+ }
1547
+
1548
+
1549
+ void Assembler::repmovsw() {
1550
+ EnsureSpace ensure_space(this);
1551
+ last_pc_ = pc_;
1552
+ emit(0x66); // Operand size override.
1553
+ emit(0xF3);
1554
+ emit(0xA4);
1555
+ }
1556
+
1557
+
1558
+ void Assembler::repmovsl() {
1559
+ EnsureSpace ensure_space(this);
1560
+ last_pc_ = pc_;
1561
+ emit(0xF3);
1562
+ emit(0xA5);
1563
+ }
1564
+
1565
+
1566
+ void Assembler::repmovsq() {
1567
+ EnsureSpace ensure_space(this);
1568
+ last_pc_ = pc_;
1569
+ emit(0xF3);
1570
+ emit_rex_64();
1571
+ emit(0xA5);
1572
+ }
1573
+
1574
+
1540
1575
  void Assembler::mul(Register src) {
1541
1576
  EnsureSpace ensure_space(this);
1542
1577
  last_pc_ = pc_;
@@ -1598,6 +1633,15 @@ void Assembler::not_(const Operand& dst) {
1598
1633
  }
1599
1634
 
1600
1635
 
1636
+ void Assembler::notl(Register dst) {
1637
+ EnsureSpace ensure_space(this);
1638
+ last_pc_ = pc_;
1639
+ emit_optional_rex_32(dst);
1640
+ emit(0xF7);
1641
+ emit_modrm(0x2, dst);
1642
+ }
1643
+
1644
+
1601
1645
  void Assembler::nop(int n) {
1602
1646
  // The recommended muti-byte sequences of NOP instructions from the Intel 64
1603
1647
  // and IA-32 Architectures Software Developer's Manual.
@@ -1880,6 +1924,20 @@ void Assembler::testb(const Operand& op, Immediate mask) {
1880
1924
  }
1881
1925
 
1882
1926
 
1927
+ void Assembler::testb(const Operand& op, Register reg) {
1928
+ EnsureSpace ensure_space(this);
1929
+ last_pc_ = pc_;
1930
+ if (reg.code() > 3) {
1931
+ // Register is not one of al, bl, cl, dl. Its encoding needs REX.
1932
+ emit_rex_32(reg, op);
1933
+ } else {
1934
+ emit_optional_rex_32(reg, op);
1935
+ }
1936
+ emit(0x84);
1937
+ emit_operand(reg, op);
1938
+ }
1939
+
1940
+
1883
1941
  void Assembler::testl(Register dst, Register src) {
1884
1942
  EnsureSpace ensure_space(this);
1885
1943
  last_pc_ = pc_;
@@ -1958,7 +2016,7 @@ void Assembler::testq(Register dst, Immediate mask) {
1958
2016
  }
1959
2017
 
1960
2018
 
1961
- // FPU instructions
2019
+ // FPU instructions.
1962
2020
 
1963
2021
 
1964
2022
  void Assembler::fld(int i) {
@@ -1984,6 +2042,14 @@ void Assembler::fldz() {
1984
2042
  }
1985
2043
 
1986
2044
 
2045
+ void Assembler::fldpi() {
2046
+ EnsureSpace ensure_space(this);
2047
+ last_pc_ = pc_;
2048
+ emit(0xD9);
2049
+ emit(0xEB);
2050
+ }
2051
+
2052
+
1987
2053
  void Assembler::fld_s(const Operand& adr) {
1988
2054
  EnsureSpace ensure_space(this);
1989
2055
  last_pc_ = pc_;
@@ -2065,6 +2131,16 @@ void Assembler::fisttp_s(const Operand& adr) {
2065
2131
  }
2066
2132
 
2067
2133
 
2134
+ void Assembler::fisttp_d(const Operand& adr) {
2135
+ ASSERT(CpuFeatures::IsEnabled(SSE3));
2136
+ EnsureSpace ensure_space(this);
2137
+ last_pc_ = pc_;
2138
+ emit_optional_rex_32(adr);
2139
+ emit(0xDD);
2140
+ emit_operand(1, adr);
2141
+ }
2142
+
2143
+
2068
2144
  void Assembler::fist_s(const Operand& adr) {
2069
2145
  EnsureSpace ensure_space(this);
2070
2146
  last_pc_ = pc_;
@@ -2319,7 +2395,65 @@ void Assembler::emit_farith(int b1, int b2, int i) {
2319
2395
  emit(b2 + i);
2320
2396
  }
2321
2397
 
2322
- // SSE 2 operations
2398
+ // SSE 2 operations.
2399
+
2400
+ void Assembler::movd(XMMRegister dst, Register src) {
2401
+ EnsureSpace ensure_space(this);
2402
+ last_pc_ = pc_;
2403
+ emit(0x66);
2404
+ emit_optional_rex_32(dst, src);
2405
+ emit(0x0F);
2406
+ emit(0x6E);
2407
+ emit_sse_operand(dst, src);
2408
+ }
2409
+
2410
+
2411
+ void Assembler::movd(Register dst, XMMRegister src) {
2412
+ EnsureSpace ensure_space(this);
2413
+ last_pc_ = pc_;
2414
+ emit(0x66);
2415
+ emit_optional_rex_32(dst, src);
2416
+ emit(0x0F);
2417
+ emit(0x7E);
2418
+ emit_sse_operand(dst, src);
2419
+ }
2420
+
2421
+
2422
+ void Assembler::movq(XMMRegister dst, Register src) {
2423
+ EnsureSpace ensure_space(this);
2424
+ last_pc_ = pc_;
2425
+ emit(0x66);
2426
+ emit_rex_64(dst, src);
2427
+ emit(0x0F);
2428
+ emit(0x6E);
2429
+ emit_sse_operand(dst, src);
2430
+ }
2431
+
2432
+
2433
+ void Assembler::movq(Register dst, XMMRegister src) {
2434
+ EnsureSpace ensure_space(this);
2435
+ last_pc_ = pc_;
2436
+ emit(0x66);
2437
+ emit_rex_64(dst, src);
2438
+ emit(0x0F);
2439
+ emit(0x7E);
2440
+ emit_sse_operand(dst, src);
2441
+ }
2442
+
2443
+
2444
+ void Assembler::extractps(Register dst, XMMRegister src, byte imm8) {
2445
+ ASSERT(is_uint2(imm8));
2446
+ EnsureSpace ensure_space(this);
2447
+ last_pc_ = pc_;
2448
+ emit(0x66);
2449
+ emit_optional_rex_32(dst, src);
2450
+ emit(0x0F);
2451
+ emit(0x3A);
2452
+ emit(0x17);
2453
+ emit_sse_operand(dst, src);
2454
+ emit(imm8);
2455
+ }
2456
+
2323
2457
 
2324
2458
  void Assembler::movsd(const Operand& dst, XMMRegister src) {
2325
2459
  EnsureSpace ensure_space(this);
@@ -2409,6 +2543,17 @@ void Assembler::cvtqsi2sd(XMMRegister dst, Register src) {
2409
2543
  }
2410
2544
 
2411
2545
 
2546
+ void Assembler::cvtss2sd(XMMRegister dst, XMMRegister src) {
2547
+ EnsureSpace ensure_space(this);
2548
+ last_pc_ = pc_;
2549
+ emit(0xF3);
2550
+ emit_optional_rex_32(dst, src);
2551
+ emit(0x0F);
2552
+ emit(0x5A);
2553
+ emit_sse_operand(dst, src);
2554
+ }
2555
+
2556
+
2412
2557
  void Assembler::addsd(XMMRegister dst, XMMRegister src) {
2413
2558
  EnsureSpace ensure_space(this);
2414
2559
  last_pc_ = pc_;
@@ -2453,6 +2598,49 @@ void Assembler::divsd(XMMRegister dst, XMMRegister src) {
2453
2598
  }
2454
2599
 
2455
2600
 
2601
+ void Assembler::xorpd(XMMRegister dst, XMMRegister src) {
2602
+ EnsureSpace ensure_space(this);
2603
+ last_pc_ = pc_;
2604
+ emit(0x66);
2605
+ emit_optional_rex_32(dst, src);
2606
+ emit(0x0F);
2607
+ emit(0x57);
2608
+ emit_sse_operand(dst, src);
2609
+ }
2610
+
2611
+
2612
+ void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) {
2613
+ EnsureSpace ensure_space(this);
2614
+ last_pc_ = pc_;
2615
+ emit(0xF2);
2616
+ emit_optional_rex_32(dst, src);
2617
+ emit(0x0F);
2618
+ emit(0x51);
2619
+ emit_sse_operand(dst, src);
2620
+ }
2621
+
2622
+
2623
+ void Assembler::comisd(XMMRegister dst, XMMRegister src) {
2624
+ EnsureSpace ensure_space(this);
2625
+ last_pc_ = pc_;
2626
+ emit(0x66);
2627
+ emit_optional_rex_32(dst, src);
2628
+ emit(0x0f);
2629
+ emit(0x2f);
2630
+ emit_sse_operand(dst, src);
2631
+ }
2632
+
2633
+
2634
+ void Assembler::ucomisd(XMMRegister dst, XMMRegister src) {
2635
+ EnsureSpace ensure_space(this);
2636
+ last_pc_ = pc_;
2637
+ emit(0x66);
2638
+ emit_optional_rex_32(dst, src);
2639
+ emit(0x0f);
2640
+ emit(0x2e);
2641
+ emit_sse_operand(dst, src);
2642
+ }
2643
+
2456
2644
 
2457
2645
  void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) {
2458
2646
  Register ireg = { reg.code() };
@@ -2468,8 +2656,12 @@ void Assembler::emit_sse_operand(XMMRegister dst, Register src) {
2468
2656
  emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
2469
2657
  }
2470
2658
 
2659
+ void Assembler::emit_sse_operand(Register dst, XMMRegister src) {
2660
+ emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
2661
+ }
2662
+
2471
2663
 
2472
- // Relocation information implementations
2664
+ // Relocation information implementations.
2473
2665
 
2474
2666
  void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
2475
2667
  ASSERT(rmode != RelocInfo::NONE);