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
@@ -30,9 +30,9 @@
30
30
  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31
31
  // OF THE POSSIBILITY OF SUCH DAMAGE.
32
32
 
33
- // The original source code covered by the above license above has been modified
34
- // significantly by Google Inc.
35
- // Copyright 2006-2008 the V8 project authors. All rights reserved.
33
+ // The original source code covered by the above license above has been
34
+ // modified significantly by Google Inc.
35
+ // Copyright 2010 the V8 project authors. All rights reserved.
36
36
 
37
37
  #include "v8.h"
38
38
 
@@ -51,9 +51,14 @@ void CpuFeatures::Probe() {
51
51
  // If the compiler is allowed to use vfp then we can use vfp too in our
52
52
  // code generation.
53
53
  #if !defined(__arm__)
54
- // For the simulator=arm build, always use VFP since the arm simulator has
55
- // VFP support.
56
- supported_ |= 1u << VFP3;
54
+ // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is enabled.
55
+ if (FLAG_enable_vfp3) {
56
+ supported_ |= 1u << VFP3;
57
+ }
58
+ // For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is enabled
59
+ if (FLAG_enable_armv7) {
60
+ supported_ |= 1u << ARMv7;
61
+ }
57
62
  #else
58
63
  if (Serializer::enabled()) {
59
64
  supported_ |= OS::CpuFeaturesImpliedByPlatform();
@@ -66,6 +71,11 @@ void CpuFeatures::Probe() {
66
71
  supported_ |= 1u << VFP3;
67
72
  found_by_runtime_probing_ |= 1u << VFP3;
68
73
  }
74
+
75
+ if (OS::ArmCpuHasFeature(ARMv7)) {
76
+ supported_ |= 1u << ARMv7;
77
+ found_by_runtime_probing_ |= 1u << ARMv7;
78
+ }
69
79
  #endif
70
80
  }
71
81
 
@@ -83,9 +93,9 @@ Register r4 = { 4 };
83
93
  Register r5 = { 5 };
84
94
  Register r6 = { 6 };
85
95
  Register r7 = { 7 };
86
- Register r8 = { 8 };
96
+ Register r8 = { 8 }; // Used as context register.
87
97
  Register r9 = { 9 };
88
- Register r10 = { 10 };
98
+ Register r10 = { 10 }; // Used as roots register.
89
99
  Register fp = { 11 };
90
100
  Register ip = { 12 };
91
101
  Register sp = { 13 };
@@ -264,9 +274,9 @@ MemOperand::MemOperand(Register rn, Register rm,
264
274
 
265
275
 
266
276
  // -----------------------------------------------------------------------------
267
- // Implementation of Assembler
277
+ // Implementation of Assembler.
268
278
 
269
- // Instruction encoding bits
279
+ // Instruction encoding bits.
270
280
  enum {
271
281
  H = 1 << 5, // halfword (or byte)
272
282
  S6 = 1 << 6, // signed (or unsigned)
@@ -299,14 +309,14 @@ enum {
299
309
  B26 = 1 << 26,
300
310
  B27 = 1 << 27,
301
311
 
302
- // Instruction bit masks
312
+ // Instruction bit masks.
303
313
  RdMask = 15 << 12, // in str instruction
304
314
  CondMask = 15 << 28,
305
315
  CoprocessorMask = 15 << 8,
306
316
  OpCodeMask = 15 << 21, // in data-processing instructions
307
317
  Imm24Mask = (1 << 24) - 1,
308
318
  Off12Mask = (1 << 12) - 1,
309
- // Reserved condition
319
+ // Reserved condition.
310
320
  nv = 15 << 28
311
321
  };
312
322
 
@@ -327,13 +337,13 @@ const Instr kMovLrPc = al | 13*B21 | pc.code() | lr.code() * B12;
327
337
  // ldr pc, [pc, #XXX]
328
338
  const Instr kLdrPCPattern = al | B26 | L | pc.code() * B16;
329
339
 
330
- // spare_buffer_
340
+ // Spare buffer.
331
341
  static const int kMinimalBufferSize = 4*KB;
332
342
  static byte* spare_buffer_ = NULL;
333
343
 
334
344
  Assembler::Assembler(void* buffer, int buffer_size) {
335
345
  if (buffer == NULL) {
336
- // do our own buffer management
346
+ // Do our own buffer management.
337
347
  if (buffer_size <= kMinimalBufferSize) {
338
348
  buffer_size = kMinimalBufferSize;
339
349
 
@@ -351,14 +361,14 @@ Assembler::Assembler(void* buffer, int buffer_size) {
351
361
  own_buffer_ = true;
352
362
 
353
363
  } else {
354
- // use externally provided buffer instead
364
+ // Use externally provided buffer instead.
355
365
  ASSERT(buffer_size > 0);
356
366
  buffer_ = static_cast<byte*>(buffer);
357
367
  buffer_size_ = buffer_size;
358
368
  own_buffer_ = false;
359
369
  }
360
370
 
361
- // setup buffer pointers
371
+ // Setup buffer pointers.
362
372
  ASSERT(buffer_ != NULL);
363
373
  pc_ = buffer_;
364
374
  reloc_info_writer.Reposition(buffer_ + buffer_size, pc_);
@@ -386,11 +396,11 @@ Assembler::~Assembler() {
386
396
 
387
397
 
388
398
  void Assembler::GetCode(CodeDesc* desc) {
389
- // emit constant pool if necessary
399
+ // Emit constant pool if necessary.
390
400
  CheckConstPool(true, false);
391
401
  ASSERT(num_prinfo_ == 0);
392
402
 
393
- // setup desc
403
+ // Setup code descriptor.
394
404
  desc->buffer = buffer_;
395
405
  desc->buffer_size = buffer_size_;
396
406
  desc->instr_size = pc_offset();
@@ -539,7 +549,7 @@ void Assembler::bind_to(Label* L, int pos) {
539
549
  void Assembler::link_to(Label* L, Label* appendix) {
540
550
  if (appendix->is_linked()) {
541
551
  if (L->is_linked()) {
542
- // append appendix to L's list
552
+ // Append appendix to L's list.
543
553
  int fixup_pos;
544
554
  int link = L->pos();
545
555
  do {
@@ -549,7 +559,7 @@ void Assembler::link_to(Label* L, Label* appendix) {
549
559
  ASSERT(link == kEndOfChain);
550
560
  target_at_put(fixup_pos, appendix->pos());
551
561
  } else {
552
- // L is empty, simply use appendix
562
+ // L is empty, simply use appendix.
553
563
  *L = *appendix;
554
564
  }
555
565
  }
@@ -575,12 +585,12 @@ void Assembler::next(Label* L) {
575
585
  }
576
586
 
577
587
 
578
- // Low-level code emission routines depending on the addressing mode
588
+ // Low-level code emission routines depending on the addressing mode.
579
589
  static bool fits_shifter(uint32_t imm32,
580
590
  uint32_t* rotate_imm,
581
591
  uint32_t* immed_8,
582
592
  Instr* instr) {
583
- // imm32 must be unsigned
593
+ // imm32 must be unsigned.
584
594
  for (int rot = 0; rot < 16; rot++) {
585
595
  uint32_t imm8 = (imm32 << 2*rot) | (imm32 >> (32 - 2*rot));
586
596
  if ((imm8 <= 0xff)) {
@@ -589,7 +599,7 @@ static bool fits_shifter(uint32_t imm32,
589
599
  return true;
590
600
  }
591
601
  }
592
- // if the opcode is mov or mvn and if ~imm32 fits, change the opcode
602
+ // If the opcode is mov or mvn and if ~imm32 fits, change the opcode.
593
603
  if (instr != NULL && (*instr & 0xd*B21) == 0xd*B21) {
594
604
  if (fits_shifter(~imm32, rotate_imm, immed_8, NULL)) {
595
605
  *instr ^= 0x2*B21;
@@ -626,7 +636,7 @@ void Assembler::addrmod1(Instr instr,
626
636
  CheckBuffer();
627
637
  ASSERT((instr & ~(CondMask | OpCodeMask | S)) == 0);
628
638
  if (!x.rm_.is_valid()) {
629
- // immediate
639
+ // Immediate.
630
640
  uint32_t rotate_imm;
631
641
  uint32_t immed_8;
632
642
  if (MustUseIp(x.rmode_) ||
@@ -634,7 +644,7 @@ void Assembler::addrmod1(Instr instr,
634
644
  // The immediate operand cannot be encoded as a shifter operand, so load
635
645
  // it first to register ip and change the original instruction to use ip.
636
646
  // However, if the original instruction is a 'mov rd, x' (not setting the
637
- // condition code), then replace it with a 'ldr rd, [pc]'
647
+ // condition code), then replace it with a 'ldr rd, [pc]'.
638
648
  RecordRelocInfo(x.rmode_, x.imm32_);
639
649
  CHECK(!rn.is(ip)); // rn should never be ip, or will be trashed
640
650
  Condition cond = static_cast<Condition>(instr & CondMask);
@@ -648,16 +658,16 @@ void Assembler::addrmod1(Instr instr,
648
658
  }
649
659
  instr |= I | rotate_imm*B8 | immed_8;
650
660
  } else if (!x.rs_.is_valid()) {
651
- // immediate shift
661
+ // Immediate shift.
652
662
  instr |= x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
653
663
  } else {
654
- // register shift
664
+ // Register shift.
655
665
  ASSERT(!rn.is(pc) && !rd.is(pc) && !x.rm_.is(pc) && !x.rs_.is(pc));
656
666
  instr |= x.rs_.code()*B8 | x.shift_op_ | B4 | x.rm_.code();
657
667
  }
658
668
  emit(instr | rn.code()*B16 | rd.code()*B12);
659
669
  if (rn.is(pc) || x.rm_.is(pc))
660
- // block constant pool emission for one instruction after reading pc
670
+ // Block constant pool emission for one instruction after reading pc.
661
671
  BlockConstPoolBefore(pc_offset() + kInstrSize);
662
672
  }
663
673
 
@@ -666,15 +676,15 @@ void Assembler::addrmod2(Instr instr, Register rd, const MemOperand& x) {
666
676
  ASSERT((instr & ~(CondMask | B | L)) == B26);
667
677
  int am = x.am_;
668
678
  if (!x.rm_.is_valid()) {
669
- // immediate offset
679
+ // Immediate offset.
670
680
  int offset_12 = x.offset_;
671
681
  if (offset_12 < 0) {
672
682
  offset_12 = -offset_12;
673
683
  am ^= U;
674
684
  }
675
685
  if (!is_uint12(offset_12)) {
676
- // immediate offset cannot be encoded, load it first to register ip
677
- // rn (and rd in a load) should never be ip, or will be trashed
686
+ // Immediate offset cannot be encoded, load it first to register ip
687
+ // rn (and rd in a load) should never be ip, or will be trashed.
678
688
  ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
679
689
  mov(ip, Operand(x.offset_), LeaveCC,
680
690
  static_cast<Condition>(instr & CondMask));
@@ -684,9 +694,9 @@ void Assembler::addrmod2(Instr instr, Register rd, const MemOperand& x) {
684
694
  ASSERT(offset_12 >= 0); // no masking needed
685
695
  instr |= offset_12;
686
696
  } else {
687
- // register offset (shift_imm_ and shift_op_ are 0) or scaled
697
+ // Register offset (shift_imm_ and shift_op_ are 0) or scaled
688
698
  // register offset the constructors make sure than both shift_imm_
689
- // and shift_op_ are initialized
699
+ // and shift_op_ are initialized.
690
700
  ASSERT(!x.rm_.is(pc));
691
701
  instr |= B25 | x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
692
702
  }
@@ -700,15 +710,15 @@ void Assembler::addrmod3(Instr instr, Register rd, const MemOperand& x) {
700
710
  ASSERT(x.rn_.is_valid());
701
711
  int am = x.am_;
702
712
  if (!x.rm_.is_valid()) {
703
- // immediate offset
713
+ // Immediate offset.
704
714
  int offset_8 = x.offset_;
705
715
  if (offset_8 < 0) {
706
716
  offset_8 = -offset_8;
707
717
  am ^= U;
708
718
  }
709
719
  if (!is_uint8(offset_8)) {
710
- // immediate offset cannot be encoded, load it first to register ip
711
- // rn (and rd in a load) should never be ip, or will be trashed
720
+ // Immediate offset cannot be encoded, load it first to register ip
721
+ // rn (and rd in a load) should never be ip, or will be trashed.
712
722
  ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
713
723
  mov(ip, Operand(x.offset_), LeaveCC,
714
724
  static_cast<Condition>(instr & CondMask));
@@ -718,15 +728,15 @@ void Assembler::addrmod3(Instr instr, Register rd, const MemOperand& x) {
718
728
  ASSERT(offset_8 >= 0); // no masking needed
719
729
  instr |= B | (offset_8 >> 4)*B8 | (offset_8 & 0xf);
720
730
  } else if (x.shift_imm_ != 0) {
721
- // scaled register offset not supported, load index first
722
- // rn (and rd in a load) should never be ip, or will be trashed
731
+ // Scaled register offset not supported, load index first
732
+ // rn (and rd in a load) should never be ip, or will be trashed.
723
733
  ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
724
734
  mov(ip, Operand(x.rm_, x.shift_op_, x.shift_imm_), LeaveCC,
725
735
  static_cast<Condition>(instr & CondMask));
726
736
  addrmod3(instr, rd, MemOperand(x.rn_, ip, x.am_));
727
737
  return;
728
738
  } else {
729
- // register offset
739
+ // Register offset.
730
740
  ASSERT((am & (P|W)) == P || !x.rm_.is(pc)); // no pc index with writeback
731
741
  instr |= x.rm_.code();
732
742
  }
@@ -744,7 +754,7 @@ void Assembler::addrmod4(Instr instr, Register rn, RegList rl) {
744
754
 
745
755
 
746
756
  void Assembler::addrmod5(Instr instr, CRegister crd, const MemOperand& x) {
747
- // unindexed addressing is not encoded by this function
757
+ // Unindexed addressing is not encoded by this function.
748
758
  ASSERT_EQ((B27 | B26),
749
759
  (instr & ~(CondMask | CoprocessorMask | P | U | N | W | L)));
750
760
  ASSERT(x.rn_.is_valid() && !x.rm_.is_valid());
@@ -759,7 +769,7 @@ void Assembler::addrmod5(Instr instr, CRegister crd, const MemOperand& x) {
759
769
  ASSERT(is_uint8(offset_8)); // unsigned word offset must fit in a byte
760
770
  ASSERT((am & (P|W)) == P || !x.rn_.is(pc)); // no pc base with writeback
761
771
 
762
- // post-indexed addressing requires W == 1; different than in addrmod2/3
772
+ // Post-indexed addressing requires W == 1; different than in addrmod2/3.
763
773
  if ((am & P) == 0)
764
774
  am |= W;
765
775
 
@@ -782,7 +792,7 @@ int Assembler::branch_offset(Label* L, bool jump_elimination_allowed) {
782
792
  }
783
793
 
784
794
  // Block the emission of the constant pool, since the branch instruction must
785
- // be emitted at the pc offset recorded by the label
795
+ // be emitted at the pc offset recorded by the label.
786
796
  BlockConstPoolBefore(pc_offset() + kInstrSize);
787
797
  return target_pos - (pc_offset() + kPcLoadDelta);
788
798
  }
@@ -804,7 +814,7 @@ void Assembler::label_at_put(Label* L, int at_offset) {
804
814
  }
805
815
 
806
816
 
807
- // Branch instructions
817
+ // Branch instructions.
808
818
  void Assembler::b(int branch_offset, Condition cond) {
809
819
  ASSERT((branch_offset & 3) == 0);
810
820
  int imm24 = branch_offset >> 2;
@@ -812,7 +822,7 @@ void Assembler::b(int branch_offset, Condition cond) {
812
822
  emit(cond | B27 | B25 | (imm24 & Imm24Mask));
813
823
 
814
824
  if (cond == al)
815
- // dead code is a good location to emit the constant pool
825
+ // Dead code is a good location to emit the constant pool.
816
826
  CheckConstPool(false, false);
817
827
  }
818
828
 
@@ -849,7 +859,22 @@ void Assembler::bx(Register target, Condition cond) { // v5 and above, plus v4t
849
859
  }
850
860
 
851
861
 
852
- // Data-processing instructions
862
+ // Data-processing instructions.
863
+
864
+ // UBFX <Rd>,<Rn>,#<lsb>,#<width - 1>
865
+ // Instruction details available in ARM DDI 0406A, A8-464.
866
+ // cond(31-28) | 01111(27-23)| 1(22) | 1(21) | widthm1(20-16) |
867
+ // Rd(15-12) | lsb(11-7) | 101(6-4) | Rn(3-0)
868
+ void Assembler::ubfx(Register dst, Register src1, const Operand& src2,
869
+ const Operand& src3, Condition cond) {
870
+ ASSERT(!src2.rm_.is_valid() && !src3.rm_.is_valid());
871
+ ASSERT(static_cast<uint32_t>(src2.imm32_) <= 0x1f);
872
+ ASSERT(static_cast<uint32_t>(src3.imm32_) <= 0x1f);
873
+ emit(cond | 0x3F*B21 | src3.imm32_*B16 |
874
+ dst.code()*B12 | src2.imm32_*B7 | 0x5*B4 | src1.code());
875
+ }
876
+
877
+
853
878
  void Assembler::and_(Register dst, Register src1, const Operand& src2,
854
879
  SBit s, Condition cond) {
855
880
  addrmod1(cond | 0*B21 | s, src1, dst, src2);
@@ -886,7 +911,7 @@ void Assembler::add(Register dst, Register src1, const Operand& src2,
886
911
  if (FLAG_push_pop_elimination &&
887
912
  last_bound_pos_ <= (pc_offset() - pattern_size) &&
888
913
  reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
889
- // pattern
914
+ // Pattern.
890
915
  instr_at(pc_ - 1 * kInstrSize) == kPopInstruction &&
891
916
  (instr_at(pc_ - 2 * kInstrSize) & ~RdMask) == kPushRegPattern) {
892
917
  pc_ -= 2 * kInstrSize;
@@ -960,7 +985,7 @@ void Assembler::mvn(Register dst, const Operand& src, SBit s, Condition cond) {
960
985
  }
961
986
 
962
987
 
963
- // Multiply instructions
988
+ // Multiply instructions.
964
989
  void Assembler::mla(Register dst, Register src1, Register src2, Register srcA,
965
990
  SBit s, Condition cond) {
966
991
  ASSERT(!dst.is(pc) && !src1.is(pc) && !src2.is(pc) && !srcA.is(pc));
@@ -1029,7 +1054,7 @@ void Assembler::umull(Register dstL,
1029
1054
  }
1030
1055
 
1031
1056
 
1032
- // Miscellaneous arithmetic instructions
1057
+ // Miscellaneous arithmetic instructions.
1033
1058
  void Assembler::clz(Register dst, Register src, Condition cond) {
1034
1059
  // v5 and above.
1035
1060
  ASSERT(!dst.is(pc) && !src.is(pc));
@@ -1038,7 +1063,7 @@ void Assembler::clz(Register dst, Register src, Condition cond) {
1038
1063
  }
1039
1064
 
1040
1065
 
1041
- // Status register access instructions
1066
+ // Status register access instructions.
1042
1067
  void Assembler::mrs(Register dst, SRegister s, Condition cond) {
1043
1068
  ASSERT(!dst.is(pc));
1044
1069
  emit(cond | B24 | s | 15*B16 | dst.code()*B12);
@@ -1050,12 +1075,12 @@ void Assembler::msr(SRegisterFieldMask fields, const Operand& src,
1050
1075
  ASSERT(fields >= B16 && fields < B20); // at least one field set
1051
1076
  Instr instr;
1052
1077
  if (!src.rm_.is_valid()) {
1053
- // immediate
1078
+ // Immediate.
1054
1079
  uint32_t rotate_imm;
1055
1080
  uint32_t immed_8;
1056
1081
  if (MustUseIp(src.rmode_) ||
1057
1082
  !fits_shifter(src.imm32_, &rotate_imm, &immed_8, NULL)) {
1058
- // immediate operand cannot be encoded, load it first to register ip
1083
+ // Immediate operand cannot be encoded, load it first to register ip.
1059
1084
  RecordRelocInfo(src.rmode_, src.imm32_);
1060
1085
  ldr(ip, MemOperand(pc, 0), cond);
1061
1086
  msr(fields, Operand(ip), cond);
@@ -1070,7 +1095,7 @@ void Assembler::msr(SRegisterFieldMask fields, const Operand& src,
1070
1095
  }
1071
1096
 
1072
1097
 
1073
- // Load/Store instructions
1098
+ // Load/Store instructions.
1074
1099
  void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
1075
1100
  if (dst.is(pc)) {
1076
1101
  WriteRecordedPositions();
@@ -1085,7 +1110,7 @@ void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
1085
1110
  if (FLAG_push_pop_elimination &&
1086
1111
  last_bound_pos_ <= (pc_offset() - pattern_size) &&
1087
1112
  reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
1088
- // pattern
1113
+ // Pattern.
1089
1114
  instr_at(pc_ - 1 * kInstrSize) == (kPopRegPattern | dst.code() * B12) &&
1090
1115
  instr_at(pc_ - 2 * kInstrSize) == (kPushRegPattern | dst.code() * B12)) {
1091
1116
  pc_ -= 2 * kInstrSize;
@@ -1106,6 +1131,7 @@ void Assembler::str(Register src, const MemOperand& dst, Condition cond) {
1106
1131
  if (FLAG_push_pop_elimination &&
1107
1132
  last_bound_pos_ <= (pc_offset() - pattern_size) &&
1108
1133
  reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
1134
+ // Pattern.
1109
1135
  instr_at(pc_ - 1 * kInstrSize) == (kPushRegPattern | src.code() * B12) &&
1110
1136
  instr_at(pc_ - 2 * kInstrSize) == kPopInstruction) {
1111
1137
  pc_ -= 2 * kInstrSize;
@@ -1147,17 +1173,17 @@ void Assembler::ldrsh(Register dst, const MemOperand& src, Condition cond) {
1147
1173
  }
1148
1174
 
1149
1175
 
1150
- // Load/Store multiple instructions
1176
+ // Load/Store multiple instructions.
1151
1177
  void Assembler::ldm(BlockAddrMode am,
1152
1178
  Register base,
1153
1179
  RegList dst,
1154
1180
  Condition cond) {
1155
- // ABI stack constraint: ldmxx base, {..sp..} base != sp is not restartable
1181
+ // ABI stack constraint: ldmxx base, {..sp..} base != sp is not restartable.
1156
1182
  ASSERT(base.is(sp) || (dst & sp.bit()) == 0);
1157
1183
 
1158
1184
  addrmod4(cond | B27 | am | L, base, dst);
1159
1185
 
1160
- // emit the constant pool after a function return implemented by ldm ..{..pc}
1186
+ // Emit the constant pool after a function return implemented by ldm ..{..pc}.
1161
1187
  if (cond == al && (dst & pc.bit()) != 0) {
1162
1188
  // There is a slight chance that the ldm instruction was actually a call,
1163
1189
  // in which case it would be wrong to return into the constant pool; we
@@ -1177,7 +1203,7 @@ void Assembler::stm(BlockAddrMode am,
1177
1203
  }
1178
1204
 
1179
1205
 
1180
- // Semaphore instructions
1206
+ // Semaphore instructions.
1181
1207
  void Assembler::swp(Register dst, Register src, Register base, Condition cond) {
1182
1208
  ASSERT(!dst.is(pc) && !src.is(pc) && !base.is(pc));
1183
1209
  ASSERT(!dst.is(base) && !src.is(base));
@@ -1197,7 +1223,7 @@ void Assembler::swpb(Register dst,
1197
1223
  }
1198
1224
 
1199
1225
 
1200
- // Exception-generating instructions and debugging support
1226
+ // Exception-generating instructions and debugging support.
1201
1227
  void Assembler::stop(const char* msg) {
1202
1228
  #if !defined(__arm__)
1203
1229
  // The simulator handles these special instructions and stops execution.
@@ -1222,7 +1248,7 @@ void Assembler::swi(uint32_t imm24, Condition cond) {
1222
1248
  }
1223
1249
 
1224
1250
 
1225
- // Coprocessor instructions
1251
+ // Coprocessor instructions.
1226
1252
  void Assembler::cdp(Coprocessor coproc,
1227
1253
  int opcode_1,
1228
1254
  CRegister crd,
@@ -1307,7 +1333,7 @@ void Assembler::ldc(Coprocessor coproc,
1307
1333
  int option,
1308
1334
  LFlag l,
1309
1335
  Condition cond) {
1310
- // unindexed addressing
1336
+ // Unindexed addressing.
1311
1337
  ASSERT(is_uint8(option));
1312
1338
  emit(cond | B27 | B26 | U | l | L | rn.code()*B16 | crd.code()*B12 |
1313
1339
  coproc*B8 | (option & 255));
@@ -1346,7 +1372,7 @@ void Assembler::stc(Coprocessor coproc,
1346
1372
  int option,
1347
1373
  LFlag l,
1348
1374
  Condition cond) {
1349
- // unindexed addressing
1375
+ // Unindexed addressing.
1350
1376
  ASSERT(is_uint8(option));
1351
1377
  emit(cond | B27 | B26 | U | l | rn.code()*B16 | crd.code()*B12 |
1352
1378
  coproc*B8 | (option & 255));
@@ -1371,6 +1397,36 @@ void Assembler::stc2(Coprocessor coproc,
1371
1397
 
1372
1398
 
1373
1399
  // Support for VFP.
1400
+ void Assembler::vldr(const DwVfpRegister dst,
1401
+ const Register base,
1402
+ int offset,
1403
+ const Condition cond) {
1404
+ // Ddst = MEM(Rbase + offset).
1405
+ // Instruction details available in ARM DDI 0406A, A8-628.
1406
+ // cond(31-28) | 1101(27-24)| 1001(23-20) | Rbase(19-16) |
1407
+ // Vdst(15-12) | 1011(11-8) | offset
1408
+ ASSERT(CpuFeatures::IsEnabled(VFP3));
1409
+ ASSERT(offset % 4 == 0);
1410
+ emit(cond | 0xD9*B20 | base.code()*B16 | dst.code()*B12 |
1411
+ 0xB*B8 | ((offset / 4) & 255));
1412
+ }
1413
+
1414
+
1415
+ void Assembler::vstr(const DwVfpRegister src,
1416
+ const Register base,
1417
+ int offset,
1418
+ const Condition cond) {
1419
+ // MEM(Rbase + offset) = Dsrc.
1420
+ // Instruction details available in ARM DDI 0406A, A8-786.
1421
+ // cond(31-28) | 1101(27-24)| 1000(23-20) | | Rbase(19-16) |
1422
+ // Vsrc(15-12) | 1011(11-8) | (offset/4)
1423
+ ASSERT(CpuFeatures::IsEnabled(VFP3));
1424
+ ASSERT(offset % 4 == 0);
1425
+ emit(cond | 0xD8*B20 | base.code()*B16 | src.code()*B12 |
1426
+ 0xB*B8 | ((offset / 4) & 255));
1427
+ }
1428
+
1429
+
1374
1430
  void Assembler::vmov(const DwVfpRegister dst,
1375
1431
  const Register src1,
1376
1432
  const Register src2,
@@ -1434,7 +1490,7 @@ void Assembler::vcvt(const DwVfpRegister dst,
1434
1490
  const Condition cond) {
1435
1491
  // Dd = Sm (integer in Sm converted to IEEE 64-bit doubles in Dd).
1436
1492
  // Instruction details available in ARM DDI 0406A, A8-576.
1437
- // cond(31-28) | 11101(27-23)| D=?(22) | 11(21-20) | 1(19) |opc2=000(18-16) |
1493
+ // cond(31-28) | 11101(27-23)| D=?(22) | 11(21-20) | 1(19) | opc2=000(18-16) |
1438
1494
  // Vd(15-12) | 101(11-9) | sz(8)=1 | op(7)=1 | 1(6) | M=?(5) | 0(4) | Vm(3-0)
1439
1495
  ASSERT(CpuFeatures::IsEnabled(VFP3));
1440
1496
  emit(cond | 0xE*B24 | B23 | 0x3*B20 | B19 |
@@ -1541,14 +1597,14 @@ void Assembler::vmrs(Register dst, Condition cond) {
1541
1597
  }
1542
1598
 
1543
1599
 
1544
- // Pseudo instructions
1600
+ // Pseudo instructions.
1545
1601
  void Assembler::lea(Register dst,
1546
1602
  const MemOperand& x,
1547
1603
  SBit s,
1548
1604
  Condition cond) {
1549
1605
  int am = x.am_;
1550
1606
  if (!x.rm_.is_valid()) {
1551
- // immediate offset
1607
+ // Immediate offset.
1552
1608
  if ((am & P) == 0) // post indexing
1553
1609
  mov(dst, Operand(x.rn_), s, cond);
1554
1610
  else if ((am & U) == 0) // negative indexing
@@ -1582,7 +1638,7 @@ void Assembler::BlockConstPoolFor(int instructions) {
1582
1638
  }
1583
1639
 
1584
1640
 
1585
- // Debugging
1641
+ // Debugging.
1586
1642
  void Assembler::RecordJSReturn() {
1587
1643
  WriteRecordedPositions();
1588
1644
  CheckBuffer();
@@ -1635,7 +1691,7 @@ void Assembler::WriteRecordedPositions() {
1635
1691
  void Assembler::GrowBuffer() {
1636
1692
  if (!own_buffer_) FATAL("external code buffer is too small");
1637
1693
 
1638
- // compute new buffer size
1694
+ // Compute new buffer size.
1639
1695
  CodeDesc desc; // the new buffer
1640
1696
  if (buffer_size_ < 4*KB) {
1641
1697
  desc.buffer_size = 4*KB;
@@ -1646,20 +1702,20 @@ void Assembler::GrowBuffer() {
1646
1702
  }
1647
1703
  CHECK_GT(desc.buffer_size, 0); // no overflow
1648
1704
 
1649
- // setup new buffer
1705
+ // Setup new buffer.
1650
1706
  desc.buffer = NewArray<byte>(desc.buffer_size);
1651
1707
 
1652
1708
  desc.instr_size = pc_offset();
1653
1709
  desc.reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos();
1654
1710
 
1655
- // copy the data
1711
+ // Copy the data.
1656
1712
  int pc_delta = desc.buffer - buffer_;
1657
1713
  int rc_delta = (desc.buffer + desc.buffer_size) - (buffer_ + buffer_size_);
1658
1714
  memmove(desc.buffer, buffer_, desc.instr_size);
1659
1715
  memmove(reloc_info_writer.pos() + rc_delta,
1660
1716
  reloc_info_writer.pos(), desc.reloc_size);
1661
1717
 
1662
- // switch buffers
1718
+ // Switch buffers.
1663
1719
  DeleteArray(buffer_);
1664
1720
  buffer_ = desc.buffer;
1665
1721
  buffer_size_ = desc.buffer_size;
@@ -1667,11 +1723,11 @@ void Assembler::GrowBuffer() {
1667
1723
  reloc_info_writer.Reposition(reloc_info_writer.pos() + rc_delta,
1668
1724
  reloc_info_writer.last_pc() + pc_delta);
1669
1725
 
1670
- // none of our relocation types are pc relative pointing outside the code
1726
+ // None of our relocation types are pc relative pointing outside the code
1671
1727
  // buffer nor pc absolute pointing inside the code buffer, so there is no need
1672
- // to relocate any emitted relocation entries
1728
+ // to relocate any emitted relocation entries.
1673
1729
 
1674
- // relocate pending relocation entries
1730
+ // Relocate pending relocation entries.
1675
1731
  for (int i = 0; i < num_prinfo_; i++) {
1676
1732
  RelocInfo& rinfo = prinfo_[i];
1677
1733
  ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
@@ -1686,16 +1742,16 @@ void Assembler::GrowBuffer() {
1686
1742
  void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
1687
1743
  RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants
1688
1744
  if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::STATEMENT_POSITION) {
1689
- // Adjust code for new modes
1745
+ // Adjust code for new modes.
1690
1746
  ASSERT(RelocInfo::IsJSReturn(rmode)
1691
1747
  || RelocInfo::IsComment(rmode)
1692
1748
  || RelocInfo::IsPosition(rmode));
1693
- // these modes do not need an entry in the constant pool
1749
+ // These modes do not need an entry in the constant pool.
1694
1750
  } else {
1695
1751
  ASSERT(num_prinfo_ < kMaxNumPRInfo);
1696
1752
  prinfo_[num_prinfo_++] = rinfo;
1697
1753
  // Make sure the constant pool is not emitted in place of the next
1698
- // instruction for which we just recorded relocation info
1754
+ // instruction for which we just recorded relocation info.
1699
1755
  BlockConstPoolBefore(pc_offset() + kInstrSize);
1700
1756
  }
1701
1757
  if (rinfo.rmode() != RelocInfo::NONE) {
@@ -1722,7 +1778,7 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
1722
1778
  // blocked for a specific range.
1723
1779
  next_buffer_check_ = pc_offset() + kCheckConstInterval;
1724
1780
 
1725
- // There is nothing to do if there are no pending relocation info entries
1781
+ // There is nothing to do if there are no pending relocation info entries.
1726
1782
  if (num_prinfo_ == 0) return;
1727
1783
 
1728
1784
  // We emit a constant pool at regular intervals of about kDistBetweenPools
@@ -1748,10 +1804,11 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
1748
1804
  // no_const_pool_before_, which is checked here. Also, recursive calls to
1749
1805
  // CheckConstPool are blocked by no_const_pool_before_.
1750
1806
  if (pc_offset() < no_const_pool_before_) {
1751
- // Emission is currently blocked; make sure we try again as soon as possible
1807
+ // Emission is currently blocked; make sure we try again as soon as
1808
+ // possible.
1752
1809
  next_buffer_check_ = no_const_pool_before_;
1753
1810
 
1754
- // Something is wrong if emission is forced and blocked at the same time
1811
+ // Something is wrong if emission is forced and blocked at the same time.
1755
1812
  ASSERT(!force_emit);
1756
1813
  return;
1757
1814
  }
@@ -1765,23 +1822,23 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
1765
1822
  jump_instr + kInstrSize + num_prinfo_*(kInstrSize + kMaxRelocSize);
1766
1823
  while (buffer_space() <= (max_needed_space + kGap)) GrowBuffer();
1767
1824
 
1768
- // Block recursive calls to CheckConstPool
1825
+ // Block recursive calls to CheckConstPool.
1769
1826
  BlockConstPoolBefore(pc_offset() + jump_instr + kInstrSize +
1770
1827
  num_prinfo_*kInstrSize);
1771
1828
  // Don't bother to check for the emit calls below.
1772
1829
  next_buffer_check_ = no_const_pool_before_;
1773
1830
 
1774
- // Emit jump over constant pool if necessary
1831
+ // Emit jump over constant pool if necessary.
1775
1832
  Label after_pool;
1776
1833
  if (require_jump) b(&after_pool);
1777
1834
 
1778
1835
  RecordComment("[ Constant Pool");
1779
1836
 
1780
- // Put down constant pool marker
1781
- // "Undefined instruction" as specified by A3.1 Instruction set encoding
1837
+ // Put down constant pool marker "Undefined instruction" as specified by
1838
+ // A3.1 Instruction set encoding.
1782
1839
  emit(0x03000000 | num_prinfo_);
1783
1840
 
1784
- // Emit constant pool entries
1841
+ // Emit constant pool entries.
1785
1842
  for (int i = 0; i < num_prinfo_; i++) {
1786
1843
  RelocInfo& rinfo = prinfo_[i];
1787
1844
  ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
@@ -1789,8 +1846,8 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
1789
1846
  rinfo.rmode() != RelocInfo::STATEMENT_POSITION);
1790
1847
  Instr instr = instr_at(rinfo.pc());
1791
1848
 
1792
- // Instruction to patch must be a ldr/str [pc, #offset]
1793
- // P and U set, B and W clear, Rn == pc, offset12 still 0
1849
+ // Instruction to patch must be a ldr/str [pc, #offset].
1850
+ // P and U set, B and W clear, Rn == pc, offset12 still 0.
1794
1851
  ASSERT((instr & (7*B25 | P | U | B | W | 15*B16 | Off12Mask)) ==
1795
1852
  (2*B25 | P | U | pc.code()*B16));
1796
1853
  int delta = pc_ - rinfo.pc() - 8;