therubyracer 0.7.4 → 0.7.5

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

Potentially problematic release.


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

Files changed (482) hide show
  1. data/History.txt +11 -0
  2. data/Rakefile +1 -1
  3. data/ext/v8/extconf.rb +0 -18
  4. data/ext/v8/rr.cpp +2 -2
  5. data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
  6. data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
  7. data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
  8. data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
  9. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
  10. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
  11. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
  12. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
  13. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
  14. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
  15. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
  16. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
  17. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
  18. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
  19. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
  20. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
  21. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
  22. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
  23. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
  24. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
  25. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
  26. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
  27. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
  28. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
  29. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
  30. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
  31. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
  32. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
  33. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
  34. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
  35. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
  36. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
  37. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
  38. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
  39. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
  40. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
  41. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
  42. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
  43. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
  44. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
  45. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
  46. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
  47. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
  48. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
  49. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
  50. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
  51. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
  52. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
  53. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
  54. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
  55. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
  56. data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
  57. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
  58. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
  59. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
  60. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
  61. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
  62. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
  63. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
  64. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
  65. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
  66. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
  67. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
  68. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
  69. data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
  70. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
  71. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
  72. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
  73. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
  74. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
  75. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
  76. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
  77. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
  78. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
  79. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
  80. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
  81. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
  82. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
  83. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
  84. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
  85. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
  86. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
  87. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
  88. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
  89. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
  90. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
  91. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
  92. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
  93. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
  94. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
  95. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
  96. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
  97. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
  98. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
  99. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
  100. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
  101. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
  102. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
  103. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
  104. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
  105. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
  106. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
  107. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
  108. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
  109. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
  110. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
  111. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
  112. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
  113. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
  114. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
  115. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
  116. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
  117. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
  118. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
  119. data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
  120. data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
  121. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
  122. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
  123. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
  124. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
  125. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
  126. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
  127. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
  128. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
  129. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
  130. data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
  131. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
  132. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
  133. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
  134. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
  135. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
  136. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
  137. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
  138. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
  139. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
  140. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
  141. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
  142. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
  143. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
  146. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
  148. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
  150. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
  151. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
  154. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
  155. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
  156. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
  157. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
  158. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
  159. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
  160. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
  161. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
  162. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
  164. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
  165. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
  166. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
  167. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
  168. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
  169. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
  170. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
  171. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
  173. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
  174. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
  175. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
  176. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
  177. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
  178. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
  179. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
  181. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
  184. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
  185. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
  186. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
  187. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
  188. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
  189. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
  190. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
  193. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
  194. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
  195. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
  196. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
  197. data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
  198. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
  199. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
  200. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
  201. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
  202. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
  203. data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
  204. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
  205. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
  206. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
  207. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
  208. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
  209. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
  210. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
  211. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
  212. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
  213. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
  214. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
  215. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
  216. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
  217. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
  218. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
  219. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
  220. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
  221. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
  222. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
  223. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
  224. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
  225. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
  226. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
  227. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
  228. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
  229. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
  230. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
  231. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
  232. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
  233. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
  234. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
  235. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
  236. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
  237. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
  238. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
  239. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
  240. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
  241. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
  242. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
  243. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
  244. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
  245. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
  246. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
  247. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
  248. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
  249. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
  250. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
  251. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
  252. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
  253. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
  254. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
  255. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
  256. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
  257. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
  258. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
  259. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
  260. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
  261. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
  262. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
  263. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
  264. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
  265. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
  266. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
  267. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
  268. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
  269. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
  270. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
  271. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
  272. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
  273. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
  274. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
  275. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
  276. data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
  277. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
  278. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
  279. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  280. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
  281. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
  282. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
  283. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
  284. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
  285. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
  286. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
  287. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
  288. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
  289. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
  290. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
  291. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
  292. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
  293. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
  294. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
  295. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
  296. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
  297. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
  298. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
  299. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
  300. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
  301. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
  302. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
  303. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
  304. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
  305. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
  306. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
  307. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
  308. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
  309. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
  310. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
  311. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
  312. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
  313. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
  314. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
  315. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
  316. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
  317. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
  318. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
  319. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
  320. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
  321. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
  322. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
  323. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
  324. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
  325. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
  326. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
  327. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
  328. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
  329. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
  330. data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
  331. data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
  332. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
  333. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
  334. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
  335. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
  336. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
  337. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
  338. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
  339. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
  340. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
  341. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
  342. data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
  343. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
  344. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
  345. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
  346. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
  347. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
  348. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
  349. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
  350. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
  351. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
  352. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
  353. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
  354. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
  355. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
  356. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
  357. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
  358. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
  359. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
  360. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
  361. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
  362. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
  363. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
  364. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
  365. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
  366. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
  367. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
  368. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
  369. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
  370. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
  371. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
  372. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
  373. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
  374. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
  375. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
  376. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
  377. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
  378. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
  379. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
  380. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
  381. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
  382. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
  383. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
  384. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
  385. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
  386. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
  387. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
  388. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
  389. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
  390. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
  391. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
  392. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
  393. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
  394. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
  395. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
  396. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
  397. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
  398. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
  399. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
  400. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
  401. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
  402. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
  403. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
  404. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
  405. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
  406. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
  407. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
  408. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
  409. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
  410. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
  411. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
  412. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
  413. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
  414. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
  415. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
  416. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
  417. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
  418. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
  419. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
  420. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
  421. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
  422. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
  423. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
  424. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
  425. data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
  426. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
  427. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
  428. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
  429. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
  430. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
  431. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
  432. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
  433. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
  434. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
  435. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
  436. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
  437. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
  438. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
  439. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
  440. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
  441. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
  442. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
  443. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
  444. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
  445. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  446. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  447. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  448. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  449. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  450. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  451. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
  453. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
  454. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
  455. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  456. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  457. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  458. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  459. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
  460. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
  461. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
  462. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
  463. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
  464. data/ext/v8/upstream/Makefile +1 -1
  465. data/ext/v8/v8_template.cpp +94 -2
  466. data/ext/v8/v8_try_catch.cpp +2 -2
  467. data/lib/v8.rb +1 -1
  468. data/lib/v8/access.rb +93 -40
  469. data/lib/v8/cli.rb +1 -1
  470. data/lib/v8/function.rb +14 -2
  471. data/spec/redjs/jsapi_spec.rb +231 -42
  472. data/therubyracer.gemspec +3 -3
  473. metadata +463 -453
  474. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
  475. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
  476. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
  477. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
  478. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
  479. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
  480. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
  481. data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
  482. data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
@@ -27,6 +27,8 @@
27
27
 
28
28
  #include "v8.h"
29
29
 
30
+ #if defined(V8_TARGET_ARCH_MIPS)
31
+
30
32
  #include "codegen-inl.h"
31
33
  #include "compiler.h"
32
34
  #include "debug.h"
@@ -43,7 +45,7 @@ void FullCodeGenerator::Generate(CompilationInfo* info, Mode mode) {
43
45
  }
44
46
 
45
47
 
46
- void FullCodeGenerator::EmitReturnSequence(int position) {
48
+ void FullCodeGenerator::EmitReturnSequence() {
47
49
  UNIMPLEMENTED_MIPS();
48
50
  }
49
51
 
@@ -271,3 +273,5 @@ void FullCodeGenerator::ExitFinallyBlock() {
271
273
  #undef __
272
274
 
273
275
  } } // namespace v8::internal
276
+
277
+ #endif // V8_TARGET_ARCH_MIPS
@@ -29,6 +29,8 @@
29
29
 
30
30
  #include "v8.h"
31
31
 
32
+ #if defined(V8_TARGET_ARCH_MIPS)
33
+
32
34
  #include "codegen-inl.h"
33
35
  #include "ic-inl.h"
34
36
  #include "runtime.h"
@@ -215,3 +217,4 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
215
217
 
216
218
  } } // namespace v8::internal
217
219
 
220
+ #endif // V8_TARGET_ARCH_MIPS
@@ -28,6 +28,8 @@
28
28
 
29
29
  #include "v8.h"
30
30
 
31
+ #if defined(V8_TARGET_ARCH_MIPS)
32
+
31
33
  #include "codegen-inl.h"
32
34
  #include "jump-target-inl.h"
33
35
  #include "register-allocator-inl.h"
@@ -170,3 +172,4 @@ void BreakTarget::Bind(Result* arg) {
170
172
 
171
173
  } } // namespace v8::internal
172
174
 
175
+ #endif // V8_TARGET_ARCH_MIPS
@@ -29,6 +29,8 @@
29
29
 
30
30
  #include "v8.h"
31
31
 
32
+ #if defined(V8_TARGET_ARCH_MIPS)
33
+
32
34
  #include "bootstrapper.h"
33
35
  #include "codegen-inl.h"
34
36
  #include "debug.h"
@@ -1321,3 +1323,4 @@ void MacroAssembler::AlignStack(int offset) {
1321
1323
 
1322
1324
  } } // namespace v8::internal
1323
1325
 
1326
+ #endif // V8_TARGET_ARCH_MIPS
@@ -27,6 +27,8 @@
27
27
 
28
28
  #include "v8.h"
29
29
 
30
+ #if defined(V8_TARGET_ARCH_MIPS)
31
+
30
32
  #include "codegen-inl.h"
31
33
  #include "register-allocator-inl.h"
32
34
 
@@ -58,3 +60,4 @@ Result RegisterAllocator::AllocateByteRegisterWithoutSpilling() {
58
60
 
59
61
  } } // namespace v8::internal
60
62
 
63
+ #endif // V8_TARGET_ARCH_MIPS
@@ -29,6 +29,8 @@
29
29
  #include <cstdarg>
30
30
  #include "v8.h"
31
31
 
32
+ #if defined(V8_TARGET_ARCH_MIPS)
33
+
32
34
  #include "disasm.h"
33
35
  #include "assembler.h"
34
36
  #include "globals.h" // Need the BitCast
@@ -1646,3 +1648,4 @@ uintptr_t Simulator::PopAddress() {
1646
1648
 
1647
1649
  #endif // __mips
1648
1650
 
1651
+ #endif // V8_TARGET_ARCH_MIPS
@@ -27,6 +27,8 @@
27
27
 
28
28
  #include "v8.h"
29
29
 
30
+ #if defined(V8_TARGET_ARCH_MIPS)
31
+
30
32
  #include "ic-inl.h"
31
33
  #include "codegen-inl.h"
32
34
  #include "stub-cache.h"
@@ -398,3 +400,4 @@ Object* ConstructStubCompiler::CompileConstructStub(
398
400
 
399
401
  } } // namespace v8::internal
400
402
 
403
+ #endif // V8_TARGET_ARCH_MIPS
@@ -29,6 +29,8 @@
29
29
 
30
30
  #include "v8.h"
31
31
 
32
+ #if defined(V8_TARGET_ARCH_MIPS)
33
+
32
34
  #include "codegen-inl.h"
33
35
  #include "register-allocator-inl.h"
34
36
  #include "scopes.h"
@@ -314,3 +316,4 @@ void VirtualFrame::EmitArgumentSlots(RegList reglist) {
314
316
 
315
317
  } } // namespace v8::internal
316
318
 
319
+ #endif // V8_TARGET_ARCH_MIPS
@@ -1240,8 +1240,9 @@ const kFrameDetailsArgumentCountIndex = 3;
1240
1240
  const kFrameDetailsLocalCountIndex = 4;
1241
1241
  const kFrameDetailsSourcePositionIndex = 5;
1242
1242
  const kFrameDetailsConstructCallIndex = 6;
1243
- const kFrameDetailsDebuggerFrameIndex = 7;
1244
- const kFrameDetailsFirstDynamicIndex = 8;
1243
+ const kFrameDetailsAtReturnIndex = 7;
1244
+ const kFrameDetailsDebuggerFrameIndex = 8;
1245
+ const kFrameDetailsFirstDynamicIndex = 9;
1245
1246
 
1246
1247
  const kFrameDetailsNameIndex = 0;
1247
1248
  const kFrameDetailsValueIndex = 1;
@@ -1258,8 +1259,11 @@ const kFrameDetailsNameValueSize = 2;
1258
1259
  * 4: Local count
1259
1260
  * 5: Source position
1260
1261
  * 6: Construct call
1262
+ * 7: Is at return
1263
+ * 8: Debugger frame
1261
1264
  * Arguments name, value
1262
1265
  * Locals name, value
1266
+ * Return value if any
1263
1267
  * @param {number} break_id Current break id
1264
1268
  * @param {number} index Frame number
1265
1269
  * @constructor
@@ -1294,6 +1298,12 @@ FrameDetails.prototype.isConstructCall = function() {
1294
1298
  }
1295
1299
 
1296
1300
 
1301
+ FrameDetails.prototype.isAtReturn = function() {
1302
+ %CheckExecutionState(this.break_id_);
1303
+ return this.details_[kFrameDetailsAtReturnIndex];
1304
+ }
1305
+
1306
+
1297
1307
  FrameDetails.prototype.isDebuggerFrame = function() {
1298
1308
  %CheckExecutionState(this.break_id_);
1299
1309
  return this.details_[kFrameDetailsDebuggerFrameIndex];
@@ -1341,7 +1351,8 @@ FrameDetails.prototype.sourcePosition = function() {
1341
1351
  FrameDetails.prototype.localName = function(index) {
1342
1352
  %CheckExecutionState(this.break_id_);
1343
1353
  if (index >= 0 && index < this.localCount()) {
1344
- var locals_offset = kFrameDetailsFirstDynamicIndex + this.argumentCount() * kFrameDetailsNameValueSize
1354
+ var locals_offset = kFrameDetailsFirstDynamicIndex +
1355
+ this.argumentCount() * kFrameDetailsNameValueSize
1345
1356
  return this.details_[locals_offset +
1346
1357
  index * kFrameDetailsNameValueSize +
1347
1358
  kFrameDetailsNameIndex]
@@ -1352,7 +1363,8 @@ FrameDetails.prototype.localName = function(index) {
1352
1363
  FrameDetails.prototype.localValue = function(index) {
1353
1364
  %CheckExecutionState(this.break_id_);
1354
1365
  if (index >= 0 && index < this.localCount()) {
1355
- var locals_offset = kFrameDetailsFirstDynamicIndex + this.argumentCount() * kFrameDetailsNameValueSize
1366
+ var locals_offset = kFrameDetailsFirstDynamicIndex +
1367
+ this.argumentCount() * kFrameDetailsNameValueSize
1356
1368
  return this.details_[locals_offset +
1357
1369
  index * kFrameDetailsNameValueSize +
1358
1370
  kFrameDetailsValueIndex]
@@ -1360,6 +1372,17 @@ FrameDetails.prototype.localValue = function(index) {
1360
1372
  }
1361
1373
 
1362
1374
 
1375
+ FrameDetails.prototype.returnValue = function() {
1376
+ %CheckExecutionState(this.break_id_);
1377
+ var return_value_offset =
1378
+ kFrameDetailsFirstDynamicIndex +
1379
+ (this.argumentCount() + this.localCount()) * kFrameDetailsNameValueSize;
1380
+ if (this.details_[kFrameDetailsAtReturnIndex]) {
1381
+ return this.details_[return_value_offset];
1382
+ }
1383
+ }
1384
+
1385
+
1363
1386
  FrameDetails.prototype.scopeCount = function() {
1364
1387
  return %GetScopeCount(this.break_id_, this.frameId());
1365
1388
  }
@@ -1412,6 +1435,11 @@ FrameMirror.prototype.isConstructCall = function() {
1412
1435
  };
1413
1436
 
1414
1437
 
1438
+ FrameMirror.prototype.isAtReturn = function() {
1439
+ return this.details_.isAtReturn();
1440
+ };
1441
+
1442
+
1415
1443
  FrameMirror.prototype.isDebuggerFrame = function() {
1416
1444
  return this.details_.isDebuggerFrame();
1417
1445
  };
@@ -1447,6 +1475,11 @@ FrameMirror.prototype.localValue = function(index) {
1447
1475
  };
1448
1476
 
1449
1477
 
1478
+ FrameMirror.prototype.returnValue = function() {
1479
+ return MakeMirror(this.details_.returnValue());
1480
+ };
1481
+
1482
+
1450
1483
  FrameMirror.prototype.sourcePosition = function() {
1451
1484
  return this.details_.sourcePosition();
1452
1485
  };
@@ -1574,6 +1607,11 @@ FrameMirror.prototype.invocationText = function() {
1574
1607
  result += ')';
1575
1608
  }
1576
1609
 
1610
+ if (this.isAtReturn()) {
1611
+ result += ' returning ';
1612
+ result += this.returnValue().toText();
1613
+ }
1614
+
1577
1615
  return result;
1578
1616
  }
1579
1617
 
@@ -2267,6 +2305,10 @@ JSONProtocolSerializer.prototype.serializeFrame_ = function(mirror, content) {
2267
2305
  content.script = this.serializeReference(func.script());
2268
2306
  }
2269
2307
  content.constructCall = mirror.isConstructCall();
2308
+ content.atReturn = mirror.isAtReturn();
2309
+ if (mirror.isAtReturn()) {
2310
+ content.returnValue = this.serializeReference(mirror.returnValue());
2311
+ }
2270
2312
  content.debuggerFrame = mirror.isDebuggerFrame();
2271
2313
  var x = new Array(mirror.argumentCount());
2272
2314
  for (var i = 0; i < mirror.argumentCount(); i++) {
File without changes
File without changes
@@ -539,6 +539,9 @@ void JSObject::JSObjectVerify() {
539
539
  (map()->inobject_properties() + properties()->length() -
540
540
  map()->NextFreePropertyIndex()));
541
541
  }
542
+ ASSERT(map()->has_fast_elements() ==
543
+ (elements()->map() == Heap::fixed_array_map()));
544
+ ASSERT(map()->has_fast_elements() == HasFastElements());
542
545
  }
543
546
 
544
547
 
@@ -552,12 +555,14 @@ static const char* TypeToString(InstanceType type) {
552
555
  case CONS_SYMBOL_TYPE: return "CONS_SYMBOL";
553
556
  case CONS_ASCII_SYMBOL_TYPE: return "CONS_ASCII_SYMBOL";
554
557
  case EXTERNAL_ASCII_SYMBOL_TYPE:
558
+ case EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE:
555
559
  case EXTERNAL_SYMBOL_TYPE: return "EXTERNAL_SYMBOL";
556
560
  case ASCII_STRING_TYPE: return "ASCII_STRING";
557
561
  case STRING_TYPE: return "TWO_BYTE_STRING";
558
562
  case CONS_STRING_TYPE:
559
563
  case CONS_ASCII_STRING_TYPE: return "CONS_STRING";
560
564
  case EXTERNAL_ASCII_STRING_TYPE:
565
+ case EXTERNAL_STRING_WITH_ASCII_DATA_TYPE:
561
566
  case EXTERNAL_STRING_TYPE: return "EXTERNAL_STRING";
562
567
  case FIXED_ARRAY_TYPE: return "FIXED_ARRAY";
563
568
  case BYTE_ARRAY_TYPE: return "BYTE_ARRAY";
@@ -784,6 +789,7 @@ void SharedFunctionInfo::SharedFunctionInfoVerify() {
784
789
  CHECK(IsSharedFunctionInfo());
785
790
  VerifyObjectField(kNameOffset);
786
791
  VerifyObjectField(kCodeOffset);
792
+ VerifyObjectField(kScopeInfoOffset);
787
793
  VerifyObjectField(kInstanceClassNameOffset);
788
794
  VerifyObjectField(kFunctionDataOffset);
789
795
  VerifyObjectField(kScriptOffset);
@@ -806,7 +812,8 @@ void JSGlobalProxy::JSGlobalProxyVerify() {
806
812
  VerifyObjectField(JSGlobalProxy::kContextOffset);
807
813
  // Make sure that this object has no properties, elements.
808
814
  CHECK_EQ(0, properties()->length());
809
- CHECK_EQ(0, elements()->length());
815
+ CHECK(HasFastElements());
816
+ CHECK_EQ(0, FixedArray::cast(elements())->length());
810
817
  }
811
818
 
812
819
 
@@ -237,31 +237,20 @@ bool StringShape::IsSymbol() {
237
237
 
238
238
  bool String::IsAsciiRepresentation() {
239
239
  uint32_t type = map()->instance_type();
240
- if ((type & kStringRepresentationMask) == kConsStringTag &&
241
- ConsString::cast(this)->second()->length() == 0) {
242
- return ConsString::cast(this)->first()->IsAsciiRepresentation();
243
- }
244
240
  return (type & kStringEncodingMask) == kAsciiStringTag;
245
241
  }
246
242
 
247
243
 
248
244
  bool String::IsTwoByteRepresentation() {
249
245
  uint32_t type = map()->instance_type();
250
- if ((type & kStringRepresentationMask) == kConsStringTag &&
251
- ConsString::cast(this)->second()->length() == 0) {
252
- return ConsString::cast(this)->first()->IsTwoByteRepresentation();
253
- }
254
246
  return (type & kStringEncodingMask) == kTwoByteStringTag;
255
247
  }
256
248
 
257
249
 
258
- bool String::IsExternalTwoByteStringWithAsciiChars() {
259
- if (!IsExternalTwoByteString()) return false;
260
- const uc16* data = ExternalTwoByteString::cast(this)->resource()->data();
261
- for (int i = 0, len = length(); i < len; i++) {
262
- if (data[i] > kMaxAsciiCharCode) return false;
263
- }
264
- return true;
250
+ bool String::HasOnlyAsciiChars() {
251
+ uint32_t type = map()->instance_type();
252
+ return (type & kStringEncodingMask) == kAsciiStringTag ||
253
+ (type & kAsciiDataHintMask) == kAsciiDataHintTag;
265
254
  }
266
255
 
267
256
 
@@ -759,7 +748,8 @@ Object* Object::GetProperty(String* key, PropertyAttributes* attributes) {
759
748
  ASSERT(mode == SKIP_WRITE_BARRIER); \
760
749
  ASSERT(Heap::InNewSpace(object) || \
761
750
  !Heap::InNewSpace(READ_FIELD(object, offset)) || \
762
- Page::IsRSetSet(object->address(), offset)); \
751
+ Page::FromAddress(object->address())-> \
752
+ IsRegionDirty(object->address() + offset)); \
763
753
  }
764
754
 
765
755
  #define READ_DOUBLE_FIELD(p, offset) \
@@ -1045,6 +1035,10 @@ Address MapWord::ToEncodedAddress() {
1045
1035
  void HeapObject::VerifyObjectField(int offset) {
1046
1036
  VerifyPointer(READ_FIELD(this, offset));
1047
1037
  }
1038
+
1039
+ void HeapObject::VerifySmiField(int offset) {
1040
+ ASSERT(READ_FIELD(this, offset)->IsSmi());
1041
+ }
1048
1042
  #endif
1049
1043
 
1050
1044
 
@@ -1064,7 +1058,7 @@ MapWord HeapObject::map_word() {
1064
1058
 
1065
1059
 
1066
1060
  void HeapObject::set_map_word(MapWord map_word) {
1067
- // WRITE_FIELD does not update the remembered set, but there is no need
1061
+ // WRITE_FIELD does not invoke write barrier, but there is no need
1068
1062
  // here.
1069
1063
  WRITE_FIELD(this, kMapOffset, reinterpret_cast<Object*>(map_word.value_));
1070
1064
  }
@@ -1162,16 +1156,18 @@ int HeapNumber::get_sign() {
1162
1156
  ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset)
1163
1157
 
1164
1158
 
1165
- Array* JSObject::elements() {
1159
+ HeapObject* JSObject::elements() {
1166
1160
  Object* array = READ_FIELD(this, kElementsOffset);
1167
1161
  // In the assert below Dictionary is covered under FixedArray.
1168
1162
  ASSERT(array->IsFixedArray() || array->IsPixelArray() ||
1169
1163
  array->IsExternalArray());
1170
- return reinterpret_cast<Array*>(array);
1164
+ return reinterpret_cast<HeapObject*>(array);
1171
1165
  }
1172
1166
 
1173
1167
 
1174
- void JSObject::set_elements(Array* value, WriteBarrierMode mode) {
1168
+ void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) {
1169
+ ASSERT(map()->has_fast_elements() ==
1170
+ (value->map() == Heap::fixed_array_map()));
1175
1171
  // In the assert below Dictionary is covered under FixedArray.
1176
1172
  ASSERT(value->IsFixedArray() || value->IsPixelArray() ||
1177
1173
  value->IsExternalArray());
@@ -1187,11 +1183,21 @@ void JSObject::initialize_properties() {
1187
1183
 
1188
1184
 
1189
1185
  void JSObject::initialize_elements() {
1186
+ ASSERT(map()->has_fast_elements());
1190
1187
  ASSERT(!Heap::InNewSpace(Heap::empty_fixed_array()));
1191
1188
  WRITE_FIELD(this, kElementsOffset, Heap::empty_fixed_array());
1192
1189
  }
1193
1190
 
1194
1191
 
1192
+ Object* JSObject::ResetElements() {
1193
+ Object* obj = map()->GetFastElementsMap();
1194
+ if (obj->IsFailure()) return obj;
1195
+ set_map(Map::cast(obj));
1196
+ initialize_elements();
1197
+ return this;
1198
+ }
1199
+
1200
+
1195
1201
  ACCESSORS(Oddball, to_string, String, kToStringOffset)
1196
1202
  ACCESSORS(Oddball, to_number, Object, kToNumberOffset)
1197
1203
 
@@ -1329,6 +1335,21 @@ void JSObject::InitializeBody(int object_size) {
1329
1335
  }
1330
1336
 
1331
1337
 
1338
+ bool JSObject::HasFastProperties() {
1339
+ return !properties()->IsDictionary();
1340
+ }
1341
+
1342
+
1343
+ int JSObject::MaxFastProperties() {
1344
+ // Allow extra fast properties if the object has more than
1345
+ // kMaxFastProperties in-object properties. When this is the case,
1346
+ // it is very unlikely that the object is being used as a dictionary
1347
+ // and there is a good chance that allowing more map transitions
1348
+ // will be worth it.
1349
+ return Max(map()->inobject_properties(), kMaxFastProperties);
1350
+ }
1351
+
1352
+
1332
1353
  void Struct::InitializeBody(int object_size) {
1333
1354
  Object* value = Heap::undefined_value();
1334
1355
  for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) {
@@ -1337,20 +1358,15 @@ void Struct::InitializeBody(int object_size) {
1337
1358
  }
1338
1359
 
1339
1360
 
1340
- bool JSObject::HasFastProperties() {
1341
- return !properties()->IsDictionary();
1342
- }
1343
-
1344
-
1345
- bool Array::IndexFromObject(Object* object, uint32_t* index) {
1346
- if (object->IsSmi()) {
1347
- int value = Smi::cast(object)->value();
1361
+ bool Object::ToArrayIndex(uint32_t* index) {
1362
+ if (IsSmi()) {
1363
+ int value = Smi::cast(this)->value();
1348
1364
  if (value < 0) return false;
1349
1365
  *index = value;
1350
1366
  return true;
1351
1367
  }
1352
- if (object->IsHeapNumber()) {
1353
- double value = HeapNumber::cast(object)->value();
1368
+ if (IsHeapNumber()) {
1369
+ double value = HeapNumber::cast(this)->value();
1354
1370
  uint32_t uint_value = static_cast<uint32_t>(value);
1355
1371
  if (value == static_cast<double>(uint_value)) {
1356
1372
  *index = uint_value;
@@ -1665,7 +1681,11 @@ HashTable<Shape, Key>* HashTable<Shape, Key>::cast(Object* obj) {
1665
1681
  }
1666
1682
 
1667
1683
 
1668
- INT_ACCESSORS(Array, length, kLengthOffset)
1684
+ SMI_ACCESSORS(FixedArray, length, kLengthOffset)
1685
+ SMI_ACCESSORS(ByteArray, length, kLengthOffset)
1686
+
1687
+ INT_ACCESSORS(PixelArray, length, kLengthOffset)
1688
+ INT_ACCESSORS(ExternalArray, length, kLengthOffset)
1669
1689
 
1670
1690
 
1671
1691
  SMI_ACCESSORS(String, length, kLengthOffset)
@@ -1678,6 +1698,9 @@ uint32_t String::hash_field() {
1678
1698
 
1679
1699
  void String::set_hash_field(uint32_t value) {
1680
1700
  WRITE_UINT32_FIELD(this, kHashFieldOffset, value);
1701
+ #if V8_HOST_ARCH_64_BIT
1702
+ WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0);
1703
+ #endif
1681
1704
  }
1682
1705
 
1683
1706
 
@@ -1691,13 +1714,19 @@ bool String::Equals(String* other) {
1691
1714
 
1692
1715
 
1693
1716
  Object* String::TryFlatten(PretenureFlag pretenure) {
1694
- // We don't need to flatten strings that are already flat. Since this code
1695
- // is inlined, it can be helpful in the flat case to not call out to Flatten.
1696
- if (IsFlat()) return this;
1717
+ if (!StringShape(this).IsCons()) return this;
1718
+ ConsString* cons = ConsString::cast(this);
1719
+ if (cons->second()->length() == 0) return cons->first();
1697
1720
  return SlowTryFlatten(pretenure);
1698
1721
  }
1699
1722
 
1700
1723
 
1724
+ String* String::TryFlattenGetString(PretenureFlag pretenure) {
1725
+ Object* flat = TryFlatten(pretenure);
1726
+ return flat->IsFailure() ? this : String::cast(flat);
1727
+ }
1728
+
1729
+
1701
1730
  uint16_t String::Get(int index) {
1702
1731
  ASSERT(index >= 0 && index < length());
1703
1732
  switch (StringShape(this).full_representation_tag()) {
@@ -2031,6 +2060,21 @@ void ExternalFloatArray::set(int index, float value) {
2031
2060
  ptr[index] = value;
2032
2061
  }
2033
2062
 
2063
+ inline Scavenger Map::scavenger() {
2064
+ Scavenger callback = reinterpret_cast<Scavenger>(
2065
+ READ_INTPTR_FIELD(this, kScavengerCallbackOffset));
2066
+
2067
+ ASSERT(callback == Heap::GetScavenger(instance_type(),
2068
+ instance_size()));
2069
+
2070
+ return callback;
2071
+ }
2072
+
2073
+ inline void Map::set_scavenger(Scavenger callback) {
2074
+ WRITE_INTPTR_FIELD(this,
2075
+ kScavengerCallbackOffset,
2076
+ reinterpret_cast<intptr_t>(callback));
2077
+ }
2034
2078
 
2035
2079
  int Map::instance_size() {
2036
2080
  return READ_BYTE_FIELD(this, kInstanceSizeOffset) << kPointerSizeLog2;
@@ -2170,6 +2214,20 @@ bool Map::is_access_check_needed() {
2170
2214
  }
2171
2215
 
2172
2216
 
2217
+ void Map::set_is_extensible(bool value) {
2218
+ if (value) {
2219
+ set_bit_field2(bit_field2() | (1 << kIsExtensible));
2220
+ } else {
2221
+ set_bit_field2(bit_field2() & ~(1 << kIsExtensible));
2222
+ }
2223
+ }
2224
+
2225
+ bool Map::is_extensible() {
2226
+ return ((1 << kIsExtensible) & bit_field2()) != 0;
2227
+ }
2228
+
2229
+
2230
+
2173
2231
  Code::Flags Code::flags() {
2174
2232
  return static_cast<Flags>(READ_INT_FIELD(this, kFlagsOffset));
2175
2233
  }
@@ -2178,7 +2236,8 @@ Code::Flags Code::flags() {
2178
2236
  void Code::set_flags(Code::Flags flags) {
2179
2237
  STATIC_ASSERT(Code::NUMBER_OF_KINDS <= (kFlagsKindMask >> kFlagsKindShift)+1);
2180
2238
  // Make sure that all call stubs have an arguments count.
2181
- ASSERT(ExtractKindFromFlags(flags) != CALL_IC ||
2239
+ ASSERT((ExtractKindFromFlags(flags) != CALL_IC &&
2240
+ ExtractKindFromFlags(flags) != KEYED_CALL_IC) ||
2182
2241
  ExtractArgumentsCountFromFlags(flags) >= 0);
2183
2242
  WRITE_INT_FIELD(this, kFlagsOffset, flags);
2184
2243
  }
@@ -2214,7 +2273,7 @@ PropertyType Code::type() {
2214
2273
 
2215
2274
 
2216
2275
  int Code::arguments_count() {
2217
- ASSERT(is_call_stub() || kind() == STUB);
2276
+ ASSERT(is_call_stub() || is_keyed_call_stub() || kind() == STUB);
2218
2277
  return ExtractArgumentsCountFromFlags(flags());
2219
2278
  }
2220
2279
 
@@ -2243,13 +2302,15 @@ Code::Flags Code::ComputeFlags(Kind kind,
2243
2302
  InLoopFlag in_loop,
2244
2303
  InlineCacheState ic_state,
2245
2304
  PropertyType type,
2246
- int argc) {
2305
+ int argc,
2306
+ InlineCacheHolderFlag holder) {
2247
2307
  // Compute the bit mask.
2248
2308
  int bits = kind << kFlagsKindShift;
2249
2309
  if (in_loop) bits |= kFlagsICInLoopMask;
2250
2310
  bits |= ic_state << kFlagsICStateShift;
2251
2311
  bits |= type << kFlagsTypeShift;
2252
2312
  bits |= argc << kFlagsArgumentsCountShift;
2313
+ if (holder == PROTOTYPE_MAP) bits |= kFlagsCacheInPrototypeMapMask;
2253
2314
  // Cast to flags and validate result before returning it.
2254
2315
  Flags result = static_cast<Flags>(bits);
2255
2316
  ASSERT(ExtractKindFromFlags(result) == kind);
@@ -2263,9 +2324,10 @@ Code::Flags Code::ComputeFlags(Kind kind,
2263
2324
 
2264
2325
  Code::Flags Code::ComputeMonomorphicFlags(Kind kind,
2265
2326
  PropertyType type,
2327
+ InlineCacheHolderFlag holder,
2266
2328
  InLoopFlag in_loop,
2267
2329
  int argc) {
2268
- return ComputeFlags(kind, in_loop, MONOMORPHIC, type, argc);
2330
+ return ComputeFlags(kind, in_loop, MONOMORPHIC, type, argc, holder);
2269
2331
  }
2270
2332
 
2271
2333
 
@@ -2298,6 +2360,12 @@ int Code::ExtractArgumentsCountFromFlags(Flags flags) {
2298
2360
  }
2299
2361
 
2300
2362
 
2363
+ InlineCacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) {
2364
+ int bits = (flags & kFlagsCacheInPrototypeMapMask);
2365
+ return bits != 0 ? PROTOTYPE_MAP : OWN_MAP;
2366
+ }
2367
+
2368
+
2301
2369
  Code::Flags Code::RemoveTypeFromFlags(Flags flags) {
2302
2370
  int bits = flags & ~kFlagsTypeMask;
2303
2371
  return static_cast<Flags>(bits);
@@ -2327,6 +2395,26 @@ void Map::set_prototype(Object* value, WriteBarrierMode mode) {
2327
2395
  }
2328
2396
 
2329
2397
 
2398
+ Object* Map::GetFastElementsMap() {
2399
+ if (has_fast_elements()) return this;
2400
+ Object* obj = CopyDropTransitions();
2401
+ if (obj->IsFailure()) return obj;
2402
+ Map* new_map = Map::cast(obj);
2403
+ new_map->set_has_fast_elements(true);
2404
+ return new_map;
2405
+ }
2406
+
2407
+
2408
+ Object* Map::GetSlowElementsMap() {
2409
+ if (!has_fast_elements()) return this;
2410
+ Object* obj = CopyDropTransitions();
2411
+ if (obj->IsFailure()) return obj;
2412
+ Map* new_map = Map::cast(obj);
2413
+ new_map->set_has_fast_elements(false);
2414
+ return new_map;
2415
+ }
2416
+
2417
+
2330
2418
  ACCESSORS(Map, instance_descriptors, DescriptorArray,
2331
2419
  kInstanceDescriptorsOffset)
2332
2420
  ACCESSORS(Map, code_cache, Object, kCodeCacheOffset)
@@ -2449,23 +2537,70 @@ BOOL_ACCESSORS(SharedFunctionInfo,
2449
2537
  compiler_hints,
2450
2538
  try_full_codegen,
2451
2539
  kTryFullCodegen)
2540
+ BOOL_ACCESSORS(SharedFunctionInfo,
2541
+ compiler_hints,
2542
+ allows_lazy_compilation,
2543
+ kAllowLazyCompilation)
2452
2544
 
2453
- INT_ACCESSORS(SharedFunctionInfo, length, kLengthOffset)
2454
- INT_ACCESSORS(SharedFunctionInfo, formal_parameter_count,
2545
+ #if V8_HOST_ARCH_32_BIT
2546
+ SMI_ACCESSORS(SharedFunctionInfo, length, kLengthOffset)
2547
+ SMI_ACCESSORS(SharedFunctionInfo, formal_parameter_count,
2455
2548
  kFormalParameterCountOffset)
2456
- INT_ACCESSORS(SharedFunctionInfo, expected_nof_properties,
2549
+ SMI_ACCESSORS(SharedFunctionInfo, expected_nof_properties,
2457
2550
  kExpectedNofPropertiesOffset)
2458
- INT_ACCESSORS(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
2459
- INT_ACCESSORS(SharedFunctionInfo, start_position_and_type,
2551
+ SMI_ACCESSORS(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
2552
+ SMI_ACCESSORS(SharedFunctionInfo, start_position_and_type,
2460
2553
  kStartPositionAndTypeOffset)
2461
- INT_ACCESSORS(SharedFunctionInfo, end_position, kEndPositionOffset)
2462
- INT_ACCESSORS(SharedFunctionInfo, function_token_position,
2554
+ SMI_ACCESSORS(SharedFunctionInfo, end_position, kEndPositionOffset)
2555
+ SMI_ACCESSORS(SharedFunctionInfo, function_token_position,
2463
2556
  kFunctionTokenPositionOffset)
2464
- INT_ACCESSORS(SharedFunctionInfo, compiler_hints,
2557
+ SMI_ACCESSORS(SharedFunctionInfo, compiler_hints,
2465
2558
  kCompilerHintsOffset)
2466
- INT_ACCESSORS(SharedFunctionInfo, this_property_assignments_count,
2559
+ SMI_ACCESSORS(SharedFunctionInfo, this_property_assignments_count,
2467
2560
  kThisPropertyAssignmentsCountOffset)
2561
+ #else
2468
2562
 
2563
+ #define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \
2564
+ int holder::name() { \
2565
+ int value = READ_INT_FIELD(this, offset); \
2566
+ ASSERT(kHeapObjectTag == 1); \
2567
+ ASSERT((value & kHeapObjectTag) == 0); \
2568
+ return value >> 1; \
2569
+ } \
2570
+ void holder::set_##name(int value) { \
2571
+ ASSERT(kHeapObjectTag == 1); \
2572
+ ASSERT((value & 0xC0000000) == 0xC0000000 || \
2573
+ (value & 0xC0000000) == 0x000000000); \
2574
+ WRITE_INT_FIELD(this, \
2575
+ offset, \
2576
+ (value << 1) & ~kHeapObjectTag); \
2577
+ }
2578
+
2579
+ #define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \
2580
+ INT_ACCESSORS(holder, name, offset)
2581
+
2582
+
2583
+
2584
+ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, length, kLengthOffset)
2585
+ PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, formal_parameter_count,
2586
+ kFormalParameterCountOffset)
2587
+
2588
+ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, expected_nof_properties,
2589
+ kExpectedNofPropertiesOffset)
2590
+ PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
2591
+
2592
+ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, start_position_and_type,
2593
+ kStartPositionAndTypeOffset)
2594
+ PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, end_position, kEndPositionOffset)
2595
+
2596
+ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, function_token_position,
2597
+ kFunctionTokenPositionOffset)
2598
+ PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, compiler_hints,
2599
+ kCompilerHintsOffset)
2600
+
2601
+ PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, this_property_assignments_count,
2602
+ kThisPropertyAssignmentsCountOffset)
2603
+ #endif
2469
2604
 
2470
2605
  ACCESSORS(CodeCache, default_cache, FixedArray, kDefaultCacheOffset)
2471
2606
  ACCESSORS(CodeCache, normal_type_cache, Object, kNormalTypeCacheOffset)
@@ -2512,6 +2647,19 @@ void SharedFunctionInfo::set_code(Code* value, WriteBarrierMode mode) {
2512
2647
  }
2513
2648
 
2514
2649
 
2650
+ SerializedScopeInfo* SharedFunctionInfo::scope_info() {
2651
+ return reinterpret_cast<SerializedScopeInfo*>(
2652
+ READ_FIELD(this, kScopeInfoOffset));
2653
+ }
2654
+
2655
+
2656
+ void SharedFunctionInfo::set_scope_info(SerializedScopeInfo* value,
2657
+ WriteBarrierMode mode) {
2658
+ WRITE_FIELD(this, kScopeInfoOffset, reinterpret_cast<Object*>(value));
2659
+ CONDITIONAL_WRITE_BARRIER(this, kScopeInfoOffset, mode);
2660
+ }
2661
+
2662
+
2515
2663
  bool SharedFunctionInfo::is_compiled() {
2516
2664
  // TODO(1242782): Create a code kind for uncompiled code.
2517
2665
  return code()->kind() != Code::STUB;
@@ -2530,7 +2678,13 @@ FunctionTemplateInfo* SharedFunctionInfo::get_api_func_data() {
2530
2678
 
2531
2679
 
2532
2680
  bool SharedFunctionInfo::HasCustomCallGenerator() {
2533
- return function_data()->IsProxy();
2681
+ return function_data()->IsSmi();
2682
+ }
2683
+
2684
+
2685
+ int SharedFunctionInfo::custom_call_generator_id() {
2686
+ ASSERT(HasCustomCallGenerator());
2687
+ return Smi::cast(function_data())->value();
2534
2688
  }
2535
2689
 
2536
2690
 
@@ -2681,8 +2835,7 @@ JSValue* JSValue::cast(Object* obj) {
2681
2835
 
2682
2836
 
2683
2837
  INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset)
2684
- INT_ACCESSORS(Code, relocation_size, kRelocationSizeOffset)
2685
- INT_ACCESSORS(Code, sinfo_size, kSInfoSizeOffset)
2838
+ ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset)
2686
2839
 
2687
2840
 
2688
2841
  byte* Code::instruction_start() {
@@ -2690,13 +2843,28 @@ byte* Code::instruction_start() {
2690
2843
  }
2691
2844
 
2692
2845
 
2846
+ byte* Code::instruction_end() {
2847
+ return instruction_start() + instruction_size();
2848
+ }
2849
+
2850
+
2693
2851
  int Code::body_size() {
2694
- return RoundUp(instruction_size() + relocation_size(), kObjectAlignment);
2852
+ return RoundUp(instruction_size(), kObjectAlignment);
2853
+ }
2854
+
2855
+
2856
+ ByteArray* Code::unchecked_relocation_info() {
2857
+ return reinterpret_cast<ByteArray*>(READ_FIELD(this, kRelocationInfoOffset));
2695
2858
  }
2696
2859
 
2697
2860
 
2698
2861
  byte* Code::relocation_start() {
2699
- return FIELD_ADDR(this, kHeaderSize + instruction_size());
2862
+ return unchecked_relocation_info()->GetDataStartAddress();
2863
+ }
2864
+
2865
+
2866
+ int Code::relocation_size() {
2867
+ return unchecked_relocation_info()->length();
2700
2868
  }
2701
2869
 
2702
2870
 
@@ -2711,11 +2879,6 @@ bool Code::contains(byte* pc) {
2711
2879
  }
2712
2880
 
2713
2881
 
2714
- byte* Code::sinfo_start() {
2715
- return FIELD_ADDR(this, kHeaderSize + body_size());
2716
- }
2717
-
2718
-
2719
2882
  ACCESSORS(JSArray, length, Object, kLengthOffset)
2720
2883
 
2721
2884
 
@@ -2773,15 +2936,18 @@ void JSRegExp::SetDataAt(int index, Object* value) {
2773
2936
 
2774
2937
 
2775
2938
  JSObject::ElementsKind JSObject::GetElementsKind() {
2776
- Array* array = elements();
2939
+ HeapObject* array = elements();
2777
2940
  if (array->IsFixedArray()) {
2778
2941
  // FAST_ELEMENTS or DICTIONARY_ELEMENTS are both stored in a FixedArray.
2779
2942
  if (array->map() == Heap::fixed_array_map()) {
2943
+ ASSERT(map()->has_fast_elements());
2780
2944
  return FAST_ELEMENTS;
2781
2945
  }
2782
2946
  ASSERT(array->IsDictionary());
2947
+ ASSERT(!map()->has_fast_elements());
2783
2948
  return DICTIONARY_ELEMENTS;
2784
2949
  }
2950
+ ASSERT(!map()->has_fast_elements());
2785
2951
  if (array->IsExternalArray()) {
2786
2952
  switch (array->map()->instance_type()) {
2787
2953
  case EXTERNAL_BYTE_ARRAY_TYPE:
@@ -2896,15 +3062,20 @@ NumberDictionary* JSObject::element_dictionary() {
2896
3062
  }
2897
3063
 
2898
3064
 
3065
+ bool String::IsHashFieldComputed(uint32_t field) {
3066
+ return (field & kHashNotComputedMask) == 0;
3067
+ }
3068
+
3069
+
2899
3070
  bool String::HasHashCode() {
2900
- return (hash_field() & kHashComputedMask) != 0;
3071
+ return IsHashFieldComputed(hash_field());
2901
3072
  }
2902
3073
 
2903
3074
 
2904
3075
  uint32_t String::Hash() {
2905
3076
  // Fast case: has hash code already been computed?
2906
3077
  uint32_t field = hash_field();
2907
- if (field & kHashComputedMask) return field >> kHashShift;
3078
+ if (IsHashFieldComputed(field)) return field >> kHashShift;
2908
3079
  // Slow case: compute hash code and set it.
2909
3080
  return ComputeAndSetHash();
2910
3081
  }
@@ -2977,7 +3148,9 @@ uint32_t StringHasher::GetHash() {
2977
3148
 
2978
3149
  bool String::AsArrayIndex(uint32_t* index) {
2979
3150
  uint32_t field = hash_field();
2980
- if ((field & kHashComputedMask) && !(field & kIsArrayIndexMask)) return false;
3151
+ if (IsHashFieldComputed(field) && (field & kIsNotArrayIndexMask)) {
3152
+ return false;
3153
+ }
2981
3154
  return SlowAsArrayIndex(index);
2982
3155
  }
2983
3156
 
@@ -3101,7 +3274,7 @@ void Map::ClearCodeCache() {
3101
3274
 
3102
3275
  void JSArray::EnsureSize(int required_size) {
3103
3276
  ASSERT(HasFastElements());
3104
- Array* elts = elements();
3277
+ FixedArray* elts = FixedArray::cast(elements());
3105
3278
  const int kArraySizeThatFitsComfortablyInNewSpace = 128;
3106
3279
  if (elts->length() < required_size) {
3107
3280
  // Doubling in size would be overkill, but leave some slack to avoid