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
@@ -52,9 +52,17 @@ namespace internal {
52
52
  F(IsPropertyEnumerable, 2, 1) \
53
53
  F(GetPropertyNames, 1, 1) \
54
54
  F(GetPropertyNamesFast, 1, 1) \
55
+ F(GetLocalPropertyNames, 1, 1) \
56
+ F(GetLocalElementNames, 1, 1) \
57
+ F(GetInterceptorInfo, 1, 1) \
58
+ F(GetNamedInterceptorPropertyNames, 1, 1) \
59
+ F(GetIndexedInterceptorElementNames, 1, 1) \
55
60
  F(GetArgumentsProperty, 1, 1) \
56
61
  F(ToFastProperties, 1, 1) \
57
62
  F(ToSlowProperties, 1, 1) \
63
+ F(FinishArrayPrototypeSetup, 1, 1) \
64
+ F(SpecialArrayFunctions, 1, 1) \
65
+ F(GetGlobalReceiver, 0, 1) \
58
66
  \
59
67
  F(IsInPrototypeChain, 2, 1) \
60
68
  F(SetHiddenPrototype, 2, 1) \
@@ -63,11 +71,11 @@ namespace internal {
63
71
  \
64
72
  F(GetOwnProperty, 2, 1) \
65
73
  \
74
+ F(IsExtensible, 1, 1) \
75
+ \
66
76
  /* Utilities */ \
67
- F(GetCalledFunction, 0, 1) \
68
77
  F(GetFunctionDelegate, 1, 1) \
69
78
  F(GetConstructorDelegate, 1, 1) \
70
- F(NewArguments, 1, 1) \
71
79
  F(NewArgumentsFast, 3, 1) \
72
80
  F(LazyCompile, 1, 1) \
73
81
  F(SetNewFunctionAttributes, 1, 1) \
@@ -86,11 +94,13 @@ namespace internal {
86
94
  F(StringParseFloat, 1, 1) \
87
95
  F(StringToLowerCase, 1, 1) \
88
96
  F(StringToUpperCase, 1, 1) \
97
+ F(StringSplit, 3, 1) \
89
98
  F(CharFromCode, 1, 1) \
90
99
  F(URIEscape, 1, 1) \
91
100
  F(URIUnescape, 1, 1) \
92
101
  \
93
102
  F(NumberToString, 1, 1) \
103
+ F(NumberToStringSkipCache, 1, 1) \
94
104
  F(NumberToInteger, 1, 1) \
95
105
  F(NumberToJSUint32, 1, 1) \
96
106
  F(NumberToJSInt32, 1, 1) \
@@ -126,7 +136,6 @@ namespace internal {
126
136
  F(StringCompare, 2, 1) \
127
137
  \
128
138
  /* Math */ \
129
- F(Math_abs, 1, 1) \
130
139
  F(Math_acos, 1, 1) \
131
140
  F(Math_asin, 1, 1) \
132
141
  F(Math_atan, 1, 1) \
@@ -137,7 +146,8 @@ namespace internal {
137
146
  F(Math_floor, 1, 1) \
138
147
  F(Math_log, 1, 1) \
139
148
  F(Math_pow, 2, 1) \
140
- F(Math_round, 1, 1) \
149
+ F(Math_pow_cfunction, 2, 1) \
150
+ F(RoundNumber, 1, 1) \
141
151
  F(Math_sin, 1, 1) \
142
152
  F(Math_sqrt, 1, 1) \
143
153
  F(Math_tan, 1, 1) \
@@ -145,6 +155,9 @@ namespace internal {
145
155
  /* Regular expressions */ \
146
156
  F(RegExpCompile, 3, 1) \
147
157
  F(RegExpExec, 4, 1) \
158
+ F(RegExpExecMultiple, 4, 1) \
159
+ F(RegExpInitializeObject, 5, 1) \
160
+ F(RegExpConstructResult, 3, 1) \
148
161
  \
149
162
  /* Strings */ \
150
163
  F(StringCharCodeAt, 2, 1) \
@@ -156,6 +169,7 @@ namespace internal {
156
169
  F(StringReplaceRegExpWithString, 4, 1) \
157
170
  F(StringMatch, 3, 1) \
158
171
  F(StringTrim, 3, 1) \
172
+ F(StringToArray, 1, 1) \
159
173
  \
160
174
  /* Numbers */ \
161
175
  F(NumberToRadixString, 2, 1) \
@@ -170,6 +184,7 @@ namespace internal {
170
184
  F(FunctionSetPrototype, 2, 1) \
171
185
  F(FunctionGetName, 1, 1) \
172
186
  F(FunctionSetName, 2, 1) \
187
+ F(FunctionRemovePrototype, 1, 1) \
173
188
  F(FunctionGetSourceCode, 1, 1) \
174
189
  F(FunctionGetScript, 1, 1) \
175
190
  F(FunctionGetScriptSourcePosition, 1, 1) \
@@ -195,9 +210,10 @@ namespace internal {
195
210
  F(DateLocalTimezone, 1, 1) \
196
211
  F(DateLocalTimeOffset, 0, 1) \
197
212
  F(DateDaylightSavingsOffset, 1, 1) \
213
+ F(DateMakeDay, 3, 1) \
214
+ F(DateYMDFromTime, 2, 1) \
198
215
  \
199
216
  /* Numbers */ \
200
- F(NumberIsFinite, 1, 1) \
201
217
  \
202
218
  /* Globals */ \
203
219
  F(CompileString, 2, 1) \
@@ -208,6 +224,8 @@ namespace internal {
208
224
  F(ResolvePossiblyDirectEval, 3, 2) \
209
225
  \
210
226
  F(SetProperty, -1 /* 3 or 4 */, 1) \
227
+ F(DefineOrRedefineDataProperty, 4, 1) \
228
+ F(DefineOrRedefineAccessorProperty, 5, 1) \
211
229
  F(IgnoreAttributesAndSetProperty, -1 /* 3 or 4 */, 1) \
212
230
  \
213
231
  /* Arrays */ \
@@ -215,6 +233,7 @@ namespace internal {
215
233
  F(GetArrayKeys, 2, 1) \
216
234
  F(MoveArrayContents, 2, 1) \
217
235
  F(EstimateNumberOfElements, 1, 1) \
236
+ F(SwapElements, 3, 1) \
218
237
  \
219
238
  /* Getters and Setters */ \
220
239
  F(DefineAccessor, -1 /* 4 or 5 */, 1) \
@@ -223,11 +242,10 @@ namespace internal {
223
242
  /* Literals */ \
224
243
  F(MaterializeRegExpLiteral, 4, 1)\
225
244
  F(CreateArrayLiteralBoilerplate, 3, 1) \
226
- F(CreateObjectLiteralBoilerplate, 3, 1) \
227
245
  F(CloneLiteralBoilerplate, 1, 1) \
228
246
  F(CloneShallowLiteralBoilerplate, 1, 1) \
229
- F(CreateObjectLiteral, 3, 1) \
230
- F(CreateObjectLiteralShallow, 3, 1) \
247
+ F(CreateObjectLiteral, 4, 1) \
248
+ F(CreateObjectLiteralShallow, 4, 1) \
231
249
  F(CreateArrayLiteral, 3, 1) \
232
250
  F(CreateArrayLiteralShallow, 3, 1) \
233
251
  \
@@ -259,7 +277,6 @@ namespace internal {
259
277
  F(InitializeConstGlobal, 2, 1) \
260
278
  F(InitializeConstContextSlot, 3, 1) \
261
279
  F(OptimizeObjectForAddingMultipleProperties, 2, 1) \
262
- F(TransformToFastProperties, 1, 1) \
263
280
  \
264
281
  /* Debugging */ \
265
282
  F(DebugPrint, 1, 1) \
@@ -273,6 +290,8 @@ namespace internal {
273
290
  F(LocalKeys, 1, 1) \
274
291
  /* Handle scopes */ \
275
292
  F(DeleteHandleScopeExtensions, 0, 1) \
293
+ /* Cache suport */ \
294
+ F(GetFromCache, 2, 1) \
276
295
  \
277
296
  /* Pseudo functions - handled as macros by parser */ \
278
297
  F(IS_VAR, 1, 1)
@@ -285,14 +304,9 @@ namespace internal {
285
304
  F(Break, 0, 1) \
286
305
  F(DebugGetPropertyDetails, 2, 1) \
287
306
  F(DebugGetProperty, 2, 1) \
288
- F(DebugLocalPropertyNames, 1, 1) \
289
- F(DebugLocalElementNames, 1, 1) \
290
307
  F(DebugPropertyTypeFromDetails, 1, 1) \
291
308
  F(DebugPropertyAttributesFromDetails, 1, 1) \
292
309
  F(DebugPropertyIndexFromDetails, 1, 1) \
293
- F(DebugInterceptorInfo, 1, 1) \
294
- F(DebugNamedInterceptorPropertyNames, 1, 1) \
295
- F(DebugIndexedInterceptorElementNames, 1, 1) \
296
310
  F(DebugNamedInterceptorPropertyValue, 2, 1) \
297
311
  F(DebugIndexedInterceptorElementValue, 2, 1) \
298
312
  F(CheckExecutionState, 1, 1) \
@@ -320,15 +334,26 @@ namespace internal {
320
334
  F(SystemBreak, 0, 1) \
321
335
  F(DebugDisassembleFunction, 1, 1) \
322
336
  F(DebugDisassembleConstructor, 1, 1) \
323
- F(FunctionGetInferredName, 1, 1)
337
+ F(FunctionGetInferredName, 1, 1) \
338
+ F(LiveEditFindSharedFunctionInfosForScript, 1, 1) \
339
+ F(LiveEditGatherCompileInfo, 2, 1) \
340
+ F(LiveEditReplaceScript, 3, 1) \
341
+ F(LiveEditReplaceFunctionCode, 2, 1) \
342
+ F(LiveEditFunctionSetScript, 2, 1) \
343
+ F(LiveEditReplaceRefToNestedFunction, 3, 1) \
344
+ F(LiveEditPatchFunctionPositions, 2, 1) \
345
+ F(LiveEditCheckAndDropActivations, 2, 1) \
346
+ F(LiveEditCompareStringsLinewise, 2, 1) \
347
+ F(GetFunctionCodePositionFromSource, 2, 1) \
348
+ F(ExecuteInDebugContext, 2, 1)
324
349
  #else
325
350
  #define RUNTIME_FUNCTION_LIST_DEBUGGER_SUPPORT(F)
326
351
  #endif
327
352
 
328
353
  #ifdef ENABLE_LOGGING_AND_PROFILING
329
354
  #define RUNTIME_FUNCTION_LIST_PROFILER_SUPPORT(F) \
330
- F(ProfilerResume, 1, 1) \
331
- F(ProfilerPause, 1, 1)
355
+ F(ProfilerResume, 2, 1) \
356
+ F(ProfilerPause, 2, 1)
332
357
  #else
333
358
  #define RUNTIME_FUNCTION_LIST_PROFILER_SUPPORT(F)
334
359
  #endif
@@ -371,9 +396,6 @@ class Runtime : public AllStatic {
371
396
  // The JS name of the function.
372
397
  const char* name;
373
398
 
374
- // The name of the stub that calls the runtime function.
375
- const char* stub_name;
376
-
377
399
  // The C++ (native) entry point.
378
400
  byte* entry;
379
401
 
@@ -402,6 +424,7 @@ class Runtime : public AllStatic {
402
424
  // Support getting the characters in a string using [] notation as
403
425
  // in Firefox/SpiderMonkey, Safari and Opera.
404
426
  static Object* GetElementOrCharAt(Handle<Object> object, uint32_t index);
427
+ static Object* GetElement(Handle<Object> object, uint32_t index);
405
428
 
406
429
  static Object* SetObjectProperty(Handle<Object> object,
407
430
  Handle<Object> key,
@@ -178,7 +178,7 @@ function STRING_ADD_LEFT(y) {
178
178
  y = %_ValueOf(y);
179
179
  } else {
180
180
  y = IS_NUMBER(y)
181
- ? %NumberToString(y)
181
+ ? %_NumberToString(y)
182
182
  : %ToString(%ToPrimitive(y, NO_HINT));
183
183
  }
184
184
  }
@@ -194,7 +194,7 @@ function STRING_ADD_RIGHT(y) {
194
194
  x = %_ValueOf(x);
195
195
  } else {
196
196
  x = IS_NUMBER(x)
197
- ? %NumberToString(x)
197
+ ? %_NumberToString(x)
198
198
  : %ToString(%ToPrimitive(x, NO_HINT));
199
199
  }
200
200
  }
@@ -395,26 +395,20 @@ function FILTER_KEY(key) {
395
395
 
396
396
 
397
397
  function CALL_NON_FUNCTION() {
398
- var callee = %GetCalledFunction();
399
- var delegate = %GetFunctionDelegate(callee);
398
+ var delegate = %GetFunctionDelegate(this);
400
399
  if (!IS_FUNCTION(delegate)) {
401
- throw %MakeTypeError('called_non_callable', [typeof callee]);
400
+ throw %MakeTypeError('called_non_callable', [typeof this]);
402
401
  }
403
-
404
- var parameters = %NewArguments(delegate);
405
- return delegate.apply(callee, parameters);
402
+ return delegate.apply(this, arguments);
406
403
  }
407
404
 
408
405
 
409
406
  function CALL_NON_FUNCTION_AS_CONSTRUCTOR() {
410
- var callee = %GetCalledFunction();
411
- var delegate = %GetConstructorDelegate(callee);
407
+ var delegate = %GetConstructorDelegate(this);
412
408
  if (!IS_FUNCTION(delegate)) {
413
- throw %MakeTypeError('called_non_callable', [typeof callee]);
409
+ throw %MakeTypeError('called_non_callable', [typeof this]);
414
410
  }
415
-
416
- var parameters = %NewArguments(delegate);
417
- return delegate.apply(callee, parameters);
411
+ return delegate.apply(this, arguments);
418
412
  }
419
413
 
420
414
 
@@ -477,17 +471,6 @@ function TO_STRING() {
477
471
  }
478
472
 
479
473
 
480
- // Specialized version of String.charAt. It assumes string as
481
- // the receiver type and that the index is a number.
482
- function STRING_CHAR_AT(pos) {
483
- var char_code = %_FastCharCodeAt(this, pos);
484
- if (!%_IsSmi(char_code)) {
485
- return %StringCharAt(this, pos);
486
- }
487
- return %CharFromCode(char_code);
488
- }
489
-
490
-
491
474
  /* -------------------------------------
492
475
  - - - C o n v e r s i o n s - - -
493
476
  -------------------------------------
@@ -506,6 +489,16 @@ function ToPrimitive(x, hint) {
506
489
  }
507
490
 
508
491
 
492
+ // ECMA-262, section 9.2, page 30
493
+ function ToBoolean(x) {
494
+ if (IS_BOOLEAN(x)) return x;
495
+ if (IS_STRING(x)) return x.length != 0;
496
+ if (x == null) return false;
497
+ if (IS_NUMBER(x)) return !((x == 0) || NUMBER_IS_NAN(x));
498
+ return true;
499
+ }
500
+
501
+
509
502
  // ECMA-262, section 9.3, page 31.
510
503
  function ToNumber(x) {
511
504
  if (IS_NUMBER(x)) return x;
@@ -519,20 +512,17 @@ function ToNumber(x) {
519
512
  // ECMA-262, section 9.8, page 35.
520
513
  function ToString(x) {
521
514
  if (IS_STRING(x)) return x;
522
- if (IS_NUMBER(x)) return %NumberToString(x);
515
+ if (IS_NUMBER(x)) return %_NumberToString(x);
523
516
  if (IS_BOOLEAN(x)) return x ? 'true' : 'false';
524
517
  if (IS_UNDEFINED(x)) return 'undefined';
525
518
  return (IS_NULL(x)) ? 'null' : %ToString(%DefaultString(x));
526
519
  }
527
520
 
528
-
529
- // ... where did this come from?
530
- function ToBoolean(x) {
531
- if (IS_BOOLEAN(x)) return x;
532
- if (IS_STRING(x)) return x.length != 0;
533
- if (x == null) return false;
534
- if (IS_NUMBER(x)) return !((x == 0) || NUMBER_IS_NAN(x));
535
- return true;
521
+ function NonStringToString(x) {
522
+ if (IS_NUMBER(x)) return %_NumberToString(x);
523
+ if (IS_BOOLEAN(x)) return x ? 'true' : 'false';
524
+ if (IS_UNDEFINED(x)) return 'undefined';
525
+ return (IS_NULL(x)) ? 'null' : %ToString(%DefaultString(x));
536
526
  }
537
527
 
538
528
 
@@ -541,7 +531,9 @@ function ToObject(x) {
541
531
  if (IS_STRING(x)) return new $String(x);
542
532
  if (IS_NUMBER(x)) return new $Number(x);
543
533
  if (IS_BOOLEAN(x)) return new $Boolean(x);
544
- if (x == null) throw %MakeTypeError('null_to_object', []);
534
+ if (IS_NULL_OR_UNDEFINED(x) && !IS_UNDETECTABLE(x)) {
535
+ throw %MakeTypeError('null_to_object', []);
536
+ }
545
537
  return x;
546
538
  }
547
539
 
@@ -567,6 +559,25 @@ function ToInt32(x) {
567
559
  }
568
560
 
569
561
 
562
+ // ES5, section 9.12
563
+ function SameValue(x, y) {
564
+ if (typeof x != typeof y) return false;
565
+ if (IS_NULL_OR_UNDEFINED(x)) return true;
566
+ if (IS_NUMBER(x)) {
567
+ if (NUMBER_IS_NAN(x) && NUMBER_IS_NAN(y)) return true;
568
+ // x is +0 and y is -0 or vice versa
569
+ if (x === 0 && y === 0 && !%_IsSmi(x) && !%_IsSmi(y) &&
570
+ ((1 / x < 0 && 1 / y > 0) || (1 / x > 0 && 1 / y < 0))) {
571
+ return false;
572
+ }
573
+ return x == y;
574
+ }
575
+ if (IS_STRING(x)) return %StringEquals(x, y);
576
+ if (IS_BOOLEAN(x))return %NumberEquals(%ToNumber(x),%ToNumber(y));
577
+
578
+ return %_ObjectEquals(x, y);
579
+ }
580
+
570
581
 
571
582
  /* ---------------------------------
572
583
  - - - U t i l i t i e s - - -
@@ -28,6 +28,7 @@
28
28
  #include "v8.h"
29
29
 
30
30
  #include "ast.h"
31
+ #include "handles.h"
31
32
  #include "scanner.h"
32
33
 
33
34
  namespace v8 {
@@ -86,12 +87,7 @@ void UTF8Buffer::AddCharSlow(uc32 c) {
86
87
 
87
88
 
88
89
  UTF16Buffer::UTF16Buffer()
89
- : pos_(0), size_(0) { }
90
-
91
-
92
- Handle<String> UTF16Buffer::SubString(int start, int end) {
93
- return internal::SubString(data_, start, end);
94
- }
90
+ : pos_(0), end_(Scanner::kNoEndPosition) { }
95
91
 
96
92
 
97
93
  // CharacterStreamUTF16Buffer
@@ -100,10 +96,14 @@ CharacterStreamUTF16Buffer::CharacterStreamUTF16Buffer()
100
96
 
101
97
 
102
98
  void CharacterStreamUTF16Buffer::Initialize(Handle<String> data,
103
- unibrow::CharacterStream* input) {
104
- data_ = data;
105
- pos_ = 0;
99
+ unibrow::CharacterStream* input,
100
+ int start_position,
101
+ int end_position) {
106
102
  stream_ = input;
103
+ if (start_position > 0) {
104
+ SeekForward(start_position);
105
+ }
106
+ end_ = end_position != Scanner::kNoEndPosition ? end_position : kMaxInt;
107
107
  }
108
108
 
109
109
 
@@ -115,6 +115,8 @@ void CharacterStreamUTF16Buffer::PushBack(uc32 ch) {
115
115
 
116
116
 
117
117
  uc32 CharacterStreamUTF16Buffer::Advance() {
118
+ ASSERT(end_ != Scanner::kNoEndPosition);
119
+ ASSERT(end_ >= 0);
118
120
  // NOTE: It is of importance to Persian / Farsi resources that we do
119
121
  // *not* strip format control characters in the scanner; see
120
122
  //
@@ -126,7 +128,7 @@ uc32 CharacterStreamUTF16Buffer::Advance() {
126
128
  if (!pushback_buffer()->is_empty()) {
127
129
  pos_++;
128
130
  return last_ = pushback_buffer()->RemoveLast();
129
- } else if (stream_->has_more()) {
131
+ } else if (stream_->has_more() && pos_ < end_) {
130
132
  pos_++;
131
133
  uc32 next = stream_->GetNext();
132
134
  return last_ = next;
@@ -146,25 +148,32 @@ void CharacterStreamUTF16Buffer::SeekForward(int pos) {
146
148
  }
147
149
 
148
150
 
149
- // TwoByteStringUTF16Buffer
150
- TwoByteStringUTF16Buffer::TwoByteStringUTF16Buffer()
151
+ // ExternalStringUTF16Buffer
152
+ template <typename StringType, typename CharType>
153
+ ExternalStringUTF16Buffer<StringType, CharType>::ExternalStringUTF16Buffer()
151
154
  : raw_data_(NULL) { }
152
155
 
153
156
 
154
- void TwoByteStringUTF16Buffer::Initialize(
155
- Handle<ExternalTwoByteString> data) {
157
+ template <typename StringType, typename CharType>
158
+ void ExternalStringUTF16Buffer<StringType, CharType>::Initialize(
159
+ Handle<StringType> data,
160
+ int start_position,
161
+ int end_position) {
156
162
  ASSERT(!data.is_null());
157
-
158
- data_ = data;
159
- pos_ = 0;
160
-
161
163
  raw_data_ = data->resource()->data();
162
- size_ = data->length();
164
+
165
+ ASSERT(end_position <= data->length());
166
+ if (start_position > 0) {
167
+ SeekForward(start_position);
168
+ }
169
+ end_ =
170
+ end_position != Scanner::kNoEndPosition ? end_position : data->length();
163
171
  }
164
172
 
165
173
 
166
- uc32 TwoByteStringUTF16Buffer::Advance() {
167
- if (pos_ < size_) {
174
+ template <typename StringType, typename CharType>
175
+ uc32 ExternalStringUTF16Buffer<StringType, CharType>::Advance() {
176
+ if (pos_ < end_) {
168
177
  return raw_data_[pos_++];
169
178
  } else {
170
179
  // note: currently the following increment is necessary to avoid a
@@ -175,14 +184,16 @@ uc32 TwoByteStringUTF16Buffer::Advance() {
175
184
  }
176
185
 
177
186
 
178
- void TwoByteStringUTF16Buffer::PushBack(uc32 ch) {
187
+ template <typename StringType, typename CharType>
188
+ void ExternalStringUTF16Buffer<StringType, CharType>::PushBack(uc32 ch) {
179
189
  pos_--;
180
190
  ASSERT(pos_ >= Scanner::kCharacterLookaheadBufferSize);
181
191
  ASSERT(raw_data_[pos_ - Scanner::kCharacterLookaheadBufferSize] == ch);
182
192
  }
183
193
 
184
194
 
185
- void TwoByteStringUTF16Buffer::SeekForward(int pos) {
195
+ template <typename StringType, typename CharType>
196
+ void ExternalStringUTF16Buffer<StringType, CharType>::SeekForward(int pos) {
186
197
  pos_ = pos;
187
198
  }
188
199
 
@@ -323,22 +334,61 @@ void KeywordMatcher::Step(uc32 input) {
323
334
  // ----------------------------------------------------------------------------
324
335
  // Scanner
325
336
 
326
- Scanner::Scanner(bool pre) : stack_overflow_(false), is_pre_parsing_(pre) { }
337
+ Scanner::Scanner(ParserMode pre)
338
+ : stack_overflow_(false), is_pre_parsing_(pre == PREPARSE) { }
327
339
 
328
340
 
329
- void Scanner::Init(Handle<String> source, unibrow::CharacterStream* stream,
330
- int position) {
341
+ void Scanner::Initialize(Handle<String> source,
342
+ ParserLanguage language) {
343
+ safe_string_input_buffer_.Reset(source.location());
344
+ Init(source, &safe_string_input_buffer_, 0, source->length(), language);
345
+ }
346
+
347
+
348
+ void Scanner::Initialize(Handle<String> source,
349
+ unibrow::CharacterStream* stream,
350
+ ParserLanguage language) {
351
+ Init(source, stream, 0, kNoEndPosition, language);
352
+ }
353
+
354
+
355
+ void Scanner::Initialize(Handle<String> source,
356
+ int start_position,
357
+ int end_position,
358
+ ParserLanguage language) {
359
+ safe_string_input_buffer_.Reset(source.location());
360
+ Init(source, &safe_string_input_buffer_,
361
+ start_position, end_position, language);
362
+ }
363
+
364
+
365
+ void Scanner::Init(Handle<String> source,
366
+ unibrow::CharacterStream* stream,
367
+ int start_position,
368
+ int end_position,
369
+ ParserLanguage language) {
331
370
  // Initialize the source buffer.
332
371
  if (!source.is_null() && StringShape(*source).IsExternalTwoByte()) {
333
372
  two_byte_string_buffer_.Initialize(
334
- Handle<ExternalTwoByteString>::cast(source));
373
+ Handle<ExternalTwoByteString>::cast(source),
374
+ start_position,
375
+ end_position);
335
376
  source_ = &two_byte_string_buffer_;
377
+ } else if (!source.is_null() && StringShape(*source).IsExternalAscii()) {
378
+ ascii_string_buffer_.Initialize(
379
+ Handle<ExternalAsciiString>::cast(source),
380
+ start_position,
381
+ end_position);
382
+ source_ = &ascii_string_buffer_;
336
383
  } else {
337
- char_stream_buffer_.Initialize(source, stream);
384
+ char_stream_buffer_.Initialize(source,
385
+ stream,
386
+ start_position,
387
+ end_position);
338
388
  source_ = &char_stream_buffer_;
339
389
  }
340
390
 
341
- position_ = position;
391
+ is_parsing_json_ = (language == JSON);
342
392
 
343
393
  // Set c0_ (one character ahead)
344
394
  ASSERT(kCharacterLookaheadBufferSize == 1);
@@ -354,11 +404,6 @@ void Scanner::Init(Handle<String> source, unibrow::CharacterStream* stream,
354
404
  }
355
405
 
356
406
 
357
- Handle<String> Scanner::SubString(int start, int end) {
358
- return source_->SubString(start - position_, end - position_);
359
- }
360
-
361
-
362
407
  Token::Value Scanner::Next() {
363
408
  // BUG 1215673: Find a thread safe way to set a stack limit in
364
409
  // pre-parse mode. Otherwise, we cannot safely pre-parse from other
@@ -416,7 +461,17 @@ static inline bool IsByteOrderMark(uc32 c) {
416
461
  }
417
462
 
418
463
 
419
- bool Scanner::SkipWhiteSpace() {
464
+ bool Scanner::SkipJsonWhiteSpace() {
465
+ int start_position = source_pos();
466
+ // JSON WhiteSpace is tab, carrige-return, newline and space.
467
+ while (c0_ == ' ' || c0_ == '\n' || c0_ == '\r' || c0_ == '\t') {
468
+ Advance();
469
+ }
470
+ return source_pos() != start_position;
471
+ }
472
+
473
+
474
+ bool Scanner::SkipJavaScriptWhiteSpace() {
420
475
  int start_position = source_pos();
421
476
 
422
477
  while (true) {
@@ -512,7 +567,194 @@ Token::Value Scanner::ScanHtmlComment() {
512
567
  }
513
568
 
514
569
 
515
- void Scanner::Scan() {
570
+
571
+ void Scanner::ScanJson() {
572
+ next_.literal_buffer = NULL;
573
+ Token::Value token;
574
+ has_line_terminator_before_next_ = false;
575
+ do {
576
+ // Remember the position of the next token
577
+ next_.location.beg_pos = source_pos();
578
+ switch (c0_) {
579
+ case '\t':
580
+ case '\r':
581
+ case '\n':
582
+ case ' ':
583
+ Advance();
584
+ token = Token::WHITESPACE;
585
+ break;
586
+ case '{':
587
+ Advance();
588
+ token = Token::LBRACE;
589
+ break;
590
+ case '}':
591
+ Advance();
592
+ token = Token::RBRACE;
593
+ break;
594
+ case '[':
595
+ Advance();
596
+ token = Token::LBRACK;
597
+ break;
598
+ case ']':
599
+ Advance();
600
+ token = Token::RBRACK;
601
+ break;
602
+ case ':':
603
+ Advance();
604
+ token = Token::COLON;
605
+ break;
606
+ case ',':
607
+ Advance();
608
+ token = Token::COMMA;
609
+ break;
610
+ case '"':
611
+ token = ScanJsonString();
612
+ break;
613
+ case '-':
614
+ case '0':
615
+ case '1':
616
+ case '2':
617
+ case '3':
618
+ case '4':
619
+ case '5':
620
+ case '6':
621
+ case '7':
622
+ case '8':
623
+ case '9':
624
+ token = ScanJsonNumber();
625
+ break;
626
+ case 't':
627
+ token = ScanJsonIdentifier("true", Token::TRUE_LITERAL);
628
+ break;
629
+ case 'f':
630
+ token = ScanJsonIdentifier("false", Token::FALSE_LITERAL);
631
+ break;
632
+ case 'n':
633
+ token = ScanJsonIdentifier("null", Token::NULL_LITERAL);
634
+ break;
635
+ default:
636
+ if (c0_ < 0) {
637
+ Advance();
638
+ token = Token::EOS;
639
+ } else {
640
+ Advance();
641
+ token = Select(Token::ILLEGAL);
642
+ }
643
+ }
644
+ } while (token == Token::WHITESPACE);
645
+
646
+ next_.location.end_pos = source_pos();
647
+ next_.token = token;
648
+ }
649
+
650
+
651
+ Token::Value Scanner::ScanJsonString() {
652
+ ASSERT_EQ('"', c0_);
653
+ Advance();
654
+ StartLiteral();
655
+ while (c0_ != '"' && c0_ > 0) {
656
+ // Check for control character (0x00-0x1f) or unterminated string (<0).
657
+ if (c0_ < 0x20) return Token::ILLEGAL;
658
+ if (c0_ != '\\') {
659
+ AddCharAdvance();
660
+ } else {
661
+ Advance();
662
+ switch (c0_) {
663
+ case '"':
664
+ case '\\':
665
+ case '/':
666
+ AddChar(c0_);
667
+ break;
668
+ case 'b':
669
+ AddChar('\x08');
670
+ break;
671
+ case 'f':
672
+ AddChar('\x0c');
673
+ break;
674
+ case 'n':
675
+ AddChar('\x0a');
676
+ break;
677
+ case 'r':
678
+ AddChar('\x0d');
679
+ break;
680
+ case 't':
681
+ AddChar('\x09');
682
+ break;
683
+ case 'u': {
684
+ uc32 value = 0;
685
+ for (int i = 0; i < 4; i++) {
686
+ Advance();
687
+ int digit = HexValue(c0_);
688
+ if (digit < 0) return Token::ILLEGAL;
689
+ value = value * 16 + digit;
690
+ }
691
+ AddChar(value);
692
+ break;
693
+ }
694
+ default:
695
+ return Token::ILLEGAL;
696
+ }
697
+ Advance();
698
+ }
699
+ }
700
+ if (c0_ != '"') {
701
+ return Token::ILLEGAL;
702
+ }
703
+ TerminateLiteral();
704
+ Advance();
705
+ return Token::STRING;
706
+ }
707
+
708
+
709
+ Token::Value Scanner::ScanJsonNumber() {
710
+ StartLiteral();
711
+ if (c0_ == '-') AddCharAdvance();
712
+ if (c0_ == '0') {
713
+ AddCharAdvance();
714
+ // Prefix zero is only allowed if it's the only digit before
715
+ // a decimal point or exponent.
716
+ if ('0' <= c0_ && c0_ <= '9') return Token::ILLEGAL;
717
+ } else {
718
+ if (c0_ < '1' || c0_ > '9') return Token::ILLEGAL;
719
+ do {
720
+ AddCharAdvance();
721
+ } while (c0_ >= '0' && c0_ <= '9');
722
+ }
723
+ if (c0_ == '.') {
724
+ AddCharAdvance();
725
+ if (c0_ < '0' || c0_ > '9') return Token::ILLEGAL;
726
+ do {
727
+ AddCharAdvance();
728
+ } while (c0_ >= '0' && c0_ <= '9');
729
+ }
730
+ if ((c0_ | 0x20) == 'e') {
731
+ AddCharAdvance();
732
+ if (c0_ == '-' || c0_ == '+') AddCharAdvance();
733
+ if (c0_ < '0' || c0_ > '9') return Token::ILLEGAL;
734
+ do {
735
+ AddCharAdvance();
736
+ } while (c0_ >= '0' && c0_ <= '9');
737
+ }
738
+ TerminateLiteral();
739
+ return Token::NUMBER;
740
+ }
741
+
742
+
743
+ Token::Value Scanner::ScanJsonIdentifier(const char* text,
744
+ Token::Value token) {
745
+ StartLiteral();
746
+ while (*text != '\0') {
747
+ if (c0_ != *text) return Token::ILLEGAL;
748
+ Advance();
749
+ text++;
750
+ }
751
+ if (kIsIdentifierPart.get(c0_)) return Token::ILLEGAL;
752
+ TerminateLiteral();
753
+ return token;
754
+ }
755
+
756
+
757
+ void Scanner::ScanJavaScript() {
516
758
  next_.literal_buffer = NULL;
517
759
  Token::Value token;
518
760
  has_line_terminator_before_next_ = false;