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
@@ -109,7 +109,7 @@ class V8EXPORT CpuProfileNode {
109
109
  /** Retrieves a child node by index. */
110
110
  const CpuProfileNode* GetChild(int index) const;
111
111
 
112
- static const int kNoLineNumberInfo = 0;
112
+ static const int kNoLineNumberInfo = Message::kNoLineNumberInfo;
113
113
  };
114
114
 
115
115
 
@@ -139,6 +139,15 @@ class V8EXPORT CpuProfile {
139
139
  */
140
140
  class V8EXPORT CpuProfiler {
141
141
  public:
142
+ /**
143
+ * A note on security tokens usage. As scripts from different
144
+ * origins can run inside a single V8 instance, it is possible to
145
+ * have functions from different security contexts intermixed in a
146
+ * single CPU profile. To avoid exposing function names belonging to
147
+ * other contexts, filtering by security token is performed while
148
+ * obtaining profiling results.
149
+ */
150
+
142
151
  /**
143
152
  * Returns the number of profiles collected (doesn't include
144
153
  * profiles that are being collected at the moment of call.)
@@ -146,16 +155,22 @@ class V8EXPORT CpuProfiler {
146
155
  static int GetProfilesCount();
147
156
 
148
157
  /** Returns a profile by index. */
149
- static const CpuProfile* GetProfile(int index);
158
+ static const CpuProfile* GetProfile(
159
+ int index,
160
+ Handle<Value> security_token = Handle<Value>());
150
161
 
151
162
  /** Returns a profile by uid. */
152
- static const CpuProfile* FindProfile(unsigned uid);
163
+ static const CpuProfile* FindProfile(
164
+ unsigned uid,
165
+ Handle<Value> security_token = Handle<Value>());
153
166
 
154
167
  /**
155
168
  * Starts collecting CPU profile. Title may be an empty string. It
156
169
  * is allowed to have several profiles being collected at
157
170
  * once. Attempts to start collecting several profiles with the same
158
- * title are silently ignored.
171
+ * title are silently ignored. While collecting a profile, functions
172
+ * from all security contexts are included in it. The token-based
173
+ * filtering is only performed when querying for a profile.
159
174
  */
160
175
  static void StartProfiling(Handle<String> title);
161
176
 
@@ -163,7 +178,169 @@ class V8EXPORT CpuProfiler {
163
178
  * Stops collecting CPU profile with a given title and returns it.
164
179
  * If the title given is empty, finishes the last profile started.
165
180
  */
166
- static const CpuProfile* StopProfiling(Handle<String> title);
181
+ static const CpuProfile* StopProfiling(
182
+ Handle<String> title,
183
+ Handle<Value> security_token = Handle<Value>());
184
+ };
185
+
186
+
187
+ class HeapGraphNode;
188
+
189
+
190
+ /**
191
+ * HeapSnapshotEdge represents a directed connection between heap
192
+ * graph nodes: from retaners to retained nodes.
193
+ */
194
+ class V8EXPORT HeapGraphEdge {
195
+ public:
196
+ enum Type {
197
+ CONTEXT_VARIABLE = 0, // A variable from a function context.
198
+ ELEMENT = 1, // An element of an array.
199
+ PROPERTY = 2, // A named object property.
200
+ INTERNAL = 3 // A link that can't be accessed from JS,
201
+ // thus, its name isn't a real property name.
202
+ };
203
+
204
+ /** Returns edge type (see HeapGraphEdge::Type). */
205
+ Type GetType() const;
206
+
207
+ /**
208
+ * Returns edge name. This can be a variable name, an element index, or
209
+ * a property name.
210
+ */
211
+ Handle<Value> GetName() const;
212
+
213
+ /** Returns origin node. */
214
+ const HeapGraphNode* GetFromNode() const;
215
+
216
+ /** Returns destination node. */
217
+ const HeapGraphNode* GetToNode() const;
218
+ };
219
+
220
+
221
+ class V8EXPORT HeapGraphPath {
222
+ public:
223
+ /** Returns the number of edges in the path. */
224
+ int GetEdgesCount() const;
225
+
226
+ /** Returns an edge from the path. */
227
+ const HeapGraphEdge* GetEdge(int index) const;
228
+
229
+ /** Returns origin node. */
230
+ const HeapGraphNode* GetFromNode() const;
231
+
232
+ /** Returns destination node. */
233
+ const HeapGraphNode* GetToNode() const;
234
+ };
235
+
236
+
237
+ /**
238
+ * HeapGraphNode represents a node in a heap graph.
239
+ */
240
+ class V8EXPORT HeapGraphNode {
241
+ public:
242
+ enum Type {
243
+ INTERNAL = 0, // Internal node, a virtual one, for housekeeping.
244
+ ARRAY = 1, // An array of elements.
245
+ STRING = 2, // A string.
246
+ OBJECT = 3, // A JS object (except for arrays and strings).
247
+ CODE = 4, // Compiled code.
248
+ CLOSURE = 5 // Function closure.
249
+ };
250
+
251
+ /** Returns node type (see HeapGraphNode::Type). */
252
+ Type GetType() const;
253
+
254
+ /**
255
+ * Returns node name. Depending on node's type this can be the name
256
+ * of the constructor (for objects), the name of the function (for
257
+ * closures), string value, or an empty string (for compiled code).
258
+ */
259
+ Handle<String> GetName() const;
260
+
261
+ /**
262
+ * Returns node id. For the same heap object, the id remains the same
263
+ * across all snapshots.
264
+ */
265
+ uint64_t GetId() const;
266
+
267
+ /** Returns node's own size, in bytes. */
268
+ int GetSelfSize() const;
269
+
270
+ /** Returns node's network (self + reachable nodes) size, in bytes. */
271
+ int GetTotalSize() const;
272
+
273
+ /**
274
+ * Returns node's private size, in bytes. That is, the size of memory
275
+ * that will be reclaimed having this node collected.
276
+ */
277
+ int GetPrivateSize() const;
278
+
279
+ /** Returns child nodes count of the node. */
280
+ int GetChildrenCount() const;
281
+
282
+ /** Retrieves a child by index. */
283
+ const HeapGraphEdge* GetChild(int index) const;
284
+
285
+ /** Returns retainer nodes count of the node. */
286
+ int GetRetainersCount() const;
287
+
288
+ /** Returns a retainer by index. */
289
+ const HeapGraphEdge* GetRetainer(int index) const;
290
+
291
+ /** Returns the number of simple retaining paths from the root to the node. */
292
+ int GetRetainingPathsCount() const;
293
+
294
+ /** Returns a retaining path by index. */
295
+ const HeapGraphPath* GetRetainingPath(int index) const;
296
+ };
297
+
298
+
299
+ class V8EXPORT HeapSnapshotsDiff {
300
+ public:
301
+ /** Returns the root node for added nodes. */
302
+ const HeapGraphNode* GetAdditionsRoot() const;
303
+
304
+ /** Returns the root node for deleted nodes. */
305
+ const HeapGraphNode* GetDeletionsRoot() const;
306
+ };
307
+
308
+
309
+ /**
310
+ * HeapSnapshots record the state of the JS heap at some moment.
311
+ */
312
+ class V8EXPORT HeapSnapshot {
313
+ public:
314
+ /** Returns heap snapshot UID (assigned by the profiler.) */
315
+ unsigned GetUid() const;
316
+
317
+ /** Returns heap snapshot title. */
318
+ Handle<String> GetTitle() const;
319
+
320
+ /** Returns the root node of the heap graph. */
321
+ const HeapGraphNode* GetRoot() const;
322
+
323
+ /** Returns a diff between this snapshot and another one. */
324
+ const HeapSnapshotsDiff* CompareWith(const HeapSnapshot* snapshot) const;
325
+ };
326
+
327
+
328
+ /**
329
+ * Interface for controlling heap profiling.
330
+ */
331
+ class V8EXPORT HeapProfiler {
332
+ public:
333
+ /** Returns the number of snapshots taken. */
334
+ static int GetSnapshotsCount();
335
+
336
+ /** Returns a snapshot by index. */
337
+ static const HeapSnapshot* GetSnapshot(int index);
338
+
339
+ /** Returns a profile by uid. */
340
+ static const HeapSnapshot* FindSnapshot(unsigned uid);
341
+
342
+ /** Takes a heap snapshot and returns it. Title may be an empty string. */
343
+ static const HeapSnapshot* TakeSnapshot(Handle<String> title);
167
344
  };
168
345
 
169
346
 
@@ -61,10 +61,6 @@ typedef unsigned __int64 uint64_t;
61
61
  // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8
62
62
  // static library or building a program which uses the V8 static library neither
63
63
  // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined.
64
- // The reason for having both V8EXPORT and V8EXPORT_INLINE is that classes which
65
- // have their code inside this header file need to have __declspec(dllexport)
66
- // when building the DLL but cannot have __declspec(dllimport) when building
67
- // a program which uses the DLL.
68
64
  #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
69
65
  #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
70
66
  build configuration to ensure that at most one of these is set
@@ -72,13 +68,10 @@ typedef unsigned __int64 uint64_t;
72
68
 
73
69
  #ifdef BUILDING_V8_SHARED
74
70
  #define V8EXPORT __declspec(dllexport)
75
- #define V8EXPORT_INLINE __declspec(dllexport)
76
71
  #elif USING_V8_SHARED
77
72
  #define V8EXPORT __declspec(dllimport)
78
- #define V8EXPORT_INLINE
79
73
  #else
80
74
  #define V8EXPORT
81
- #define V8EXPORT_INLINE
82
75
  #endif // BUILDING_V8_SHARED
83
76
 
84
77
  #else // _WIN32
@@ -90,10 +83,8 @@ typedef unsigned __int64 uint64_t;
90
83
  // export symbols when we are building a static library.
91
84
  #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(V8_SHARED)
92
85
  #define V8EXPORT __attribute__ ((visibility("default")))
93
- #define V8EXPORT_INLINE __attribute__ ((visibility("default")))
94
86
  #else // defined(__GNUC__) && (__GNUC__ >= 4)
95
87
  #define V8EXPORT
96
- #define V8EXPORT_INLINE
97
88
  #endif // defined(__GNUC__) && (__GNUC__ >= 4)
98
89
 
99
90
  #endif // _WIN32
@@ -126,11 +117,15 @@ template <class T> class Persistent;
126
117
  class FunctionTemplate;
127
118
  class ObjectTemplate;
128
119
  class Data;
120
+ class AccessorInfo;
121
+ class StackTrace;
122
+ class StackFrame;
129
123
 
130
124
  namespace internal {
131
125
 
132
126
  class Arguments;
133
127
  class Object;
128
+ class Heap;
134
129
  class Top;
135
130
 
136
131
  }
@@ -142,6 +137,9 @@ class Top;
142
137
  /**
143
138
  * A weak reference callback function.
144
139
  *
140
+ * This callback should either explicitly invoke Dispose on |object| if
141
+ * V8 wrapper is not needed anymore, or 'revive' it by invocation of MakeWeak.
142
+ *
145
143
  * \param object the weak global object to be reclaimed by the garbage collector
146
144
  * \param parameter the value passed in when making the weak global object
147
145
  */
@@ -151,9 +149,9 @@ typedef void (*WeakReferenceCallback)(Persistent<Value> object,
151
149
 
152
150
  // --- H a n d l e s ---
153
151
 
154
- #define TYPE_CHECK(T, S) \
155
- while (false) { \
156
- *(static_cast<T**>(0)) = static_cast<S*>(0); \
152
+ #define TYPE_CHECK(T, S) \
153
+ while (false) { \
154
+ *(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
157
155
  }
158
156
 
159
157
  /**
@@ -181,7 +179,7 @@ typedef void (*WeakReferenceCallback)(Persistent<Value> object,
181
179
  * behind the scenes and the same rules apply to these values as to
182
180
  * their handles.
183
181
  */
184
- template <class T> class V8EXPORT_INLINE Handle {
182
+ template <class T> class Handle {
185
183
  public:
186
184
 
187
185
  /**
@@ -192,7 +190,7 @@ template <class T> class V8EXPORT_INLINE Handle {
192
190
  /**
193
191
  * Creates a new handle for the specified value.
194
192
  */
195
- explicit Handle(T* val) : val_(val) { }
193
+ inline explicit Handle(T* val) : val_(val) { }
196
194
 
197
195
  /**
198
196
  * Creates a handle for the contents of the specified handle. This
@@ -217,16 +215,16 @@ template <class T> class V8EXPORT_INLINE Handle {
217
215
  /**
218
216
  * Returns true if the handle is empty.
219
217
  */
220
- bool IsEmpty() const { return val_ == 0; }
218
+ inline bool IsEmpty() const { return val_ == 0; }
221
219
 
222
- T* operator->() const { return val_; }
220
+ inline T* operator->() const { return val_; }
223
221
 
224
- T* operator*() const { return val_; }
222
+ inline T* operator*() const { return val_; }
225
223
 
226
224
  /**
227
225
  * Sets the handle to be empty. IsEmpty() will then return true.
228
226
  */
229
- void Clear() { this->val_ = 0; }
227
+ inline void Clear() { this->val_ = 0; }
230
228
 
231
229
  /**
232
230
  * Checks whether two handles are the same.
@@ -234,7 +232,7 @@ template <class T> class V8EXPORT_INLINE Handle {
234
232
  * to which they refer are identical.
235
233
  * The handles' references are not checked.
236
234
  */
237
- template <class S> bool operator==(Handle<S> that) const {
235
+ template <class S> inline bool operator==(Handle<S> that) const {
238
236
  internal::Object** a = reinterpret_cast<internal::Object**>(**this);
239
237
  internal::Object** b = reinterpret_cast<internal::Object**>(*that);
240
238
  if (a == 0) return b == 0;
@@ -248,7 +246,7 @@ template <class T> class V8EXPORT_INLINE Handle {
248
246
  * the objects to which they refer are different.
249
247
  * The handles' references are not checked.
250
248
  */
251
- template <class S> bool operator!=(Handle<S> that) const {
249
+ template <class S> inline bool operator!=(Handle<S> that) const {
252
250
  return !operator==(that);
253
251
  }
254
252
 
@@ -277,7 +275,7 @@ template <class T> class V8EXPORT_INLINE Handle {
277
275
  * handle scope are destroyed when the handle scope is destroyed. Hence it
278
276
  * is not necessary to explicitly deallocate local handles.
279
277
  */
280
- template <class T> class V8EXPORT_INLINE Local : public Handle<T> {
278
+ template <class T> class Local : public Handle<T> {
281
279
  public:
282
280
  inline Local();
283
281
  template <class S> inline Local(Local<S> that)
@@ -328,7 +326,7 @@ template <class T> class V8EXPORT_INLINE Local : public Handle<T> {
328
326
  * different storage cells but rather two references to the same
329
327
  * storage cell.
330
328
  */
331
- template <class T> class V8EXPORT_INLINE Persistent : public Handle<T> {
329
+ template <class T> class Persistent : public Handle<T> {
332
330
  public:
333
331
 
334
332
  /**
@@ -510,11 +508,48 @@ class V8EXPORT Data {
510
508
  class V8EXPORT ScriptData { // NOLINT
511
509
  public:
512
510
  virtual ~ScriptData() { }
511
+
512
+ /**
513
+ * Pre-compiles the specified script (context-independent).
514
+ *
515
+ * \param input Pointer to UTF-8 script source code.
516
+ * \param length Length of UTF-8 script source code.
517
+ */
513
518
  static ScriptData* PreCompile(const char* input, int length);
514
- static ScriptData* New(unsigned* data, int length);
515
519
 
520
+ /**
521
+ * Pre-compiles the specified script (context-independent).
522
+ *
523
+ * NOTE: Pre-compilation using this method cannot happen on another thread
524
+ * without using Lockers.
525
+ *
526
+ * \param source Script source code.
527
+ */
528
+ static ScriptData* PreCompile(Handle<String> source);
529
+
530
+ /**
531
+ * Load previous pre-compilation data.
532
+ *
533
+ * \param data Pointer to data returned by a call to Data() of a previous
534
+ * ScriptData. Ownership is not transferred.
535
+ * \param length Length of data.
536
+ */
537
+ static ScriptData* New(const char* data, int length);
538
+
539
+ /**
540
+ * Returns the length of Data().
541
+ */
516
542
  virtual int Length() = 0;
517
- virtual unsigned* Data() = 0;
543
+
544
+ /**
545
+ * Returns a serialized representation of this ScriptData that can later be
546
+ * passed to New(). NOTE: Serialized data is platform-dependent.
547
+ */
548
+ virtual const char* Data() = 0;
549
+
550
+ /**
551
+ * Returns true if the source code could not be parsed.
552
+ */
518
553
  virtual bool HasError() = 0;
519
554
  };
520
555
 
@@ -522,11 +557,12 @@ class V8EXPORT ScriptData { // NOLINT
522
557
  /**
523
558
  * The origin, within a file, of a script.
524
559
  */
525
- class V8EXPORT ScriptOrigin {
560
+ class ScriptOrigin {
526
561
  public:
527
- ScriptOrigin(Handle<Value> resource_name,
528
- Handle<Integer> resource_line_offset = Handle<Integer>(),
529
- Handle<Integer> resource_column_offset = Handle<Integer>())
562
+ inline ScriptOrigin(
563
+ Handle<Value> resource_name,
564
+ Handle<Integer> resource_line_offset = Handle<Integer>(),
565
+ Handle<Integer> resource_column_offset = Handle<Integer>())
530
566
  : resource_name_(resource_name),
531
567
  resource_line_offset_(resource_line_offset),
532
568
  resource_column_offset_(resource_column_offset) { }
@@ -660,6 +696,13 @@ class V8EXPORT Message {
660
696
  */
661
697
  Handle<Value> GetScriptData() const;
662
698
 
699
+ /**
700
+ * Exception stack trace. By default stack traces are not captured for
701
+ * uncaught exceptions. SetCaptureStackTraceForUncaughtExceptions allows
702
+ * to change this option.
703
+ */
704
+ Handle<StackTrace> GetStackTrace() const;
705
+
663
706
  /**
664
707
  * Returns the number, 1-based, of the line where the error occurred.
665
708
  */
@@ -691,6 +734,106 @@ class V8EXPORT Message {
691
734
 
692
735
  // TODO(1245381): Print to a string instead of on a FILE.
693
736
  static void PrintCurrentStackTrace(FILE* out);
737
+
738
+ static const int kNoLineNumberInfo = 0;
739
+ static const int kNoColumnInfo = 0;
740
+ };
741
+
742
+
743
+ /**
744
+ * Representation of a JavaScript stack trace. The information collected is a
745
+ * snapshot of the execution stack and the information remains valid after
746
+ * execution continues.
747
+ */
748
+ class V8EXPORT StackTrace {
749
+ public:
750
+ /**
751
+ * Flags that determine what information is placed captured for each
752
+ * StackFrame when grabbing the current stack trace.
753
+ */
754
+ enum StackTraceOptions {
755
+ kLineNumber = 1,
756
+ kColumnOffset = 1 << 1 | kLineNumber,
757
+ kScriptName = 1 << 2,
758
+ kFunctionName = 1 << 3,
759
+ kIsEval = 1 << 4,
760
+ kIsConstructor = 1 << 5,
761
+ kOverview = kLineNumber | kColumnOffset | kScriptName | kFunctionName,
762
+ kDetailed = kOverview | kIsEval | kIsConstructor
763
+ };
764
+
765
+ /**
766
+ * Returns a StackFrame at a particular index.
767
+ */
768
+ Local<StackFrame> GetFrame(uint32_t index) const;
769
+
770
+ /**
771
+ * Returns the number of StackFrames.
772
+ */
773
+ int GetFrameCount() const;
774
+
775
+ /**
776
+ * Returns StackTrace as a v8::Array that contains StackFrame objects.
777
+ */
778
+ Local<Array> AsArray();
779
+
780
+ /**
781
+ * Grab a snapshot of the the current JavaScript execution stack.
782
+ *
783
+ * \param frame_limit The maximum number of stack frames we want to capture.
784
+ * \param options Enumerates the set of things we will capture for each
785
+ * StackFrame.
786
+ */
787
+ static Local<StackTrace> CurrentStackTrace(
788
+ int frame_limit,
789
+ StackTraceOptions options = kOverview);
790
+ };
791
+
792
+
793
+ /**
794
+ * A single JavaScript stack frame.
795
+ */
796
+ class V8EXPORT StackFrame {
797
+ public:
798
+ /**
799
+ * Returns the number, 1-based, of the line for the associate function call.
800
+ * This method will return Message::kNoLineNumberInfo if it is unable to
801
+ * retrieve the line number, or if kLineNumber was not passed as an option
802
+ * when capturing the StackTrace.
803
+ */
804
+ int GetLineNumber() const;
805
+
806
+ /**
807
+ * Returns the 1-based column offset on the line for the associated function
808
+ * call.
809
+ * This method will return Message::kNoColumnInfo if it is unable to retrieve
810
+ * the column number, or if kColumnOffset was not passed as an option when
811
+ * capturing the StackTrace.
812
+ */
813
+ int GetColumn() const;
814
+
815
+ /**
816
+ * Returns the name of the resource that contains the script for the
817
+ * function for this StackFrame.
818
+ */
819
+ Local<String> GetScriptName() const;
820
+
821
+ /**
822
+ * Returns the name of the function associated with this stack frame.
823
+ */
824
+ Local<String> GetFunctionName() const;
825
+
826
+ /**
827
+ * Returns whether or not the associated function is compiled via a call to
828
+ * eval().
829
+ */
830
+ bool IsEval() const;
831
+
832
+ /**
833
+ * Returns whther or not the associated function is called as a
834
+ * constructor via "new".
835
+ */
836
+ bool IsConstructor() const;
694
837
  };
695
838
 
696
839
 
@@ -700,30 +843,30 @@ class V8EXPORT Message {
700
843
  /**
701
844
  * The superclass of all JavaScript values and objects.
702
845
  */
703
- class V8EXPORT Value : public Data {
846
+ class Value : public Data {
704
847
  public:
705
848
 
706
849
  /**
707
850
  * Returns true if this value is the undefined value. See ECMA-262
708
851
  * 4.3.10.
709
852
  */
710
- bool IsUndefined() const;
853
+ V8EXPORT bool IsUndefined() const;
711
854
 
712
855
  /**
713
856
  * Returns true if this value is the null value. See ECMA-262
714
857
  * 4.3.11.
715
858
  */
716
- bool IsNull() const;
859
+ V8EXPORT bool IsNull() const;
717
860
 
718
861
  /**
719
862
  * Returns true if this value is true.
720
863
  */
721
- bool IsTrue() const;
864
+ V8EXPORT bool IsTrue() const;
722
865
 
723
866
  /**
724
867
  * Returns true if this value is false.
725
868
  */
726
- bool IsFalse() const;
869
+ V8EXPORT bool IsFalse() const;
727
870
 
728
871
  /**
729
872
  * Returns true if this value is an instance of the String type.
@@ -734,92 +877,92 @@ class V8EXPORT Value : public Data {
734
877
  /**
735
878
  * Returns true if this value is a function.
736
879
  */
737
- bool IsFunction() const;
880
+ V8EXPORT bool IsFunction() const;
738
881
 
739
882
  /**
740
883
  * Returns true if this value is an array.
741
884
  */
742
- bool IsArray() const;
885
+ V8EXPORT bool IsArray() const;
743
886
 
744
887
  /**
745
888
  * Returns true if this value is an object.
746
889
  */
747
- bool IsObject() const;
890
+ V8EXPORT bool IsObject() const;
748
891
 
749
892
  /**
750
893
  * Returns true if this value is boolean.
751
894
  */
752
- bool IsBoolean() const;
895
+ V8EXPORT bool IsBoolean() const;
753
896
 
754
897
  /**
755
898
  * Returns true if this value is a number.
756
899
  */
757
- bool IsNumber() const;
900
+ V8EXPORT bool IsNumber() const;
758
901
 
759
902
  /**
760
903
  * Returns true if this value is external.
761
904
  */
762
- bool IsExternal() const;
905
+ V8EXPORT bool IsExternal() const;
763
906
 
764
907
  /**
765
908
  * Returns true if this value is a 32-bit signed integer.
766
909
  */
767
- bool IsInt32() const;
910
+ V8EXPORT bool IsInt32() const;
768
911
 
769
912
  /**
770
913
  * Returns true if this value is a 32-bit unsigned integer.
771
914
  */
772
- bool IsUint32() const;
915
+ V8EXPORT bool IsUint32() const;
773
916
 
774
917
  /**
775
918
  * Returns true if this value is a Date.
776
919
  */
777
- bool IsDate() const;
920
+ V8EXPORT bool IsDate() const;
778
921
 
779
- Local<Boolean> ToBoolean() const;
780
- Local<Number> ToNumber() const;
781
- Local<String> ToString() const;
782
- Local<String> ToDetailString() const;
783
- Local<Object> ToObject() const;
784
- Local<Integer> ToInteger() const;
785
- Local<Uint32> ToUint32() const;
786
- Local<Int32> ToInt32() const;
922
+ V8EXPORT Local<Boolean> ToBoolean() const;
923
+ V8EXPORT Local<Number> ToNumber() const;
924
+ V8EXPORT Local<String> ToString() const;
925
+ V8EXPORT Local<String> ToDetailString() const;
926
+ V8EXPORT Local<Object> ToObject() const;
927
+ V8EXPORT Local<Integer> ToInteger() const;
928
+ V8EXPORT Local<Uint32> ToUint32() const;
929
+ V8EXPORT Local<Int32> ToInt32() const;
787
930
 
788
931
  /**
789
932
  * Attempts to convert a string to an array index.
790
933
  * Returns an empty handle if the conversion fails.
791
934
  */
792
- Local<Uint32> ToArrayIndex() const;
935
+ V8EXPORT Local<Uint32> ToArrayIndex() const;
793
936
 
794
- bool BooleanValue() const;
795
- double NumberValue() const;
796
- int64_t IntegerValue() const;
797
- uint32_t Uint32Value() const;
798
- int32_t Int32Value() const;
937
+ V8EXPORT bool BooleanValue() const;
938
+ V8EXPORT double NumberValue() const;
939
+ V8EXPORT int64_t IntegerValue() const;
940
+ V8EXPORT uint32_t Uint32Value() const;
941
+ V8EXPORT int32_t Int32Value() const;
799
942
 
800
943
  /** JS == */
801
- bool Equals(Handle<Value> that) const;
802
- bool StrictEquals(Handle<Value> that) const;
944
+ V8EXPORT bool Equals(Handle<Value> that) const;
945
+ V8EXPORT bool StrictEquals(Handle<Value> that) const;
803
946
 
804
947
  private:
805
948
  inline bool QuickIsString() const;
806
- bool FullIsString() const;
949
+ V8EXPORT bool FullIsString() const;
807
950
  };
808
951
 
809
952
 
810
953
  /**
811
954
  * The superclass of primitive values. See ECMA-262 4.3.2.
812
955
  */
813
- class V8EXPORT Primitive : public Value { };
956
+ class Primitive : public Value { };
814
957
 
815
958
 
816
959
  /**
817
960
  * A primitive boolean value (ECMA-262, 4.3.14). Either the true
818
961
  * or false value.
819
962
  */
820
- class V8EXPORT Boolean : public Primitive {
963
+ class Boolean : public Primitive {
821
964
  public:
822
- bool Value() const;
965
+ V8EXPORT bool Value() const;
823
966
  static inline Handle<Boolean> New(bool value);
824
967
  };
825
968
 
@@ -827,19 +970,19 @@ class V8EXPORT Boolean : public Primitive {
827
970
  /**
828
971
  * A JavaScript string value (ECMA-262, 4.3.17).
829
972
  */
830
- class V8EXPORT String : public Primitive {
973
+ class String : public Primitive {
831
974
  public:
832
975
 
833
976
  /**
834
977
  * Returns the number of characters in this string.
835
978
  */
836
- int Length() const;
979
+ V8EXPORT int Length() const;
837
980
 
838
981
  /**
839
982
  * Returns the number of bytes in the UTF-8 encoded
840
983
  * representation of this string.
841
984
  */
842
- int Utf8Length() const;
985
+ V8EXPORT int Utf8Length() const;
843
986
 
844
987
  /**
845
988
  * Write the contents of the string to an external buffer.
@@ -866,43 +1009,55 @@ class V8EXPORT String : public Primitive {
866
1009
  HINT_MANY_WRITES_EXPECTED = 1
867
1010
  };
868
1011
 
869
- int Write(uint16_t* buffer,
870
- int start = 0,
871
- int length = -1,
872
- WriteHints hints = NO_HINTS) const; // UTF-16
873
- int WriteAscii(char* buffer,
874
- int start = 0,
875
- int length = -1,
876
- WriteHints hints = NO_HINTS) const; // ASCII
877
- int WriteUtf8(char* buffer,
878
- int length = -1,
879
- int* nchars_ref = NULL,
880
- WriteHints hints = NO_HINTS) const; // UTF-8
1012
+ V8EXPORT int Write(uint16_t* buffer,
1013
+ int start = 0,
1014
+ int length = -1,
1015
+ WriteHints hints = NO_HINTS) const; // UTF-16
1016
+ V8EXPORT int WriteAscii(char* buffer,
1017
+ int start = 0,
1018
+ int length = -1,
1019
+ WriteHints hints = NO_HINTS) const; // ASCII
1020
+ V8EXPORT int WriteUtf8(char* buffer,
1021
+ int length = -1,
1022
+ int* nchars_ref = NULL,
1023
+ WriteHints hints = NO_HINTS) const; // UTF-8
881
1024
 
882
1025
  /**
883
1026
  * A zero length string.
884
1027
  */
885
- static v8::Local<v8::String> Empty();
1028
+ V8EXPORT static v8::Local<v8::String> Empty();
886
1029
 
887
1030
  /**
888
1031
  * Returns true if the string is external
889
1032
  */
890
- bool IsExternal() const;
1033
+ V8EXPORT bool IsExternal() const;
891
1034
 
892
1035
  /**
893
1036
  * Returns true if the string is both external and ascii
894
1037
  */
895
- bool IsExternalAscii() const;
1038
+ V8EXPORT bool IsExternalAscii() const;
896
1039
 
897
1040
  class V8EXPORT ExternalStringResourceBase {
898
1041
  public:
899
1042
  virtual ~ExternalStringResourceBase() {}
1043
+
900
1044
  protected:
901
1045
  ExternalStringResourceBase() {}
1046
+
1047
+ /**
1048
+ * Internally V8 will call this Dispose method when the external string
1049
+ * resource is no longer needed. The default implementation will use the
1050
+ * delete operator. This method can be overridden in subclasses to
1051
+ * control how allocated external string resources are disposed.
1052
+ */
1053
+ virtual void Dispose() { delete this; }
1054
+
902
1055
  private:
903
1056
  // Disallow copying and assigning.
904
1057
  ExternalStringResourceBase(const ExternalStringResourceBase&);
905
1058
  void operator=(const ExternalStringResourceBase&);
1059
+
1060
+ friend class v8::internal::Heap;
906
1061
  };
907
1062
 
908
1063
  /**
@@ -919,10 +1074,17 @@ class V8EXPORT String : public Primitive {
919
1074
  * buffer.
920
1075
  */
921
1076
  virtual ~ExternalStringResource() {}
922
- /** The string data from the underlying buffer.*/
1077
+
1078
+ /**
1079
+ * The string data from the underlying buffer.
1080
+ */
923
1081
  virtual const uint16_t* data() const = 0;
924
- /** The length of the string. That is, the number of two-byte characters.*/
1082
+
1083
+ /**
1084
+ * The length of the string. That is, the number of two-byte characters.
1085
+ */
925
1086
  virtual size_t length() const = 0;
1087
+
926
1088
  protected:
927
1089
  ExternalStringResource() {}
928
1090
  };
@@ -964,7 +1126,7 @@ class V8EXPORT String : public Primitive {
964
1126
  * Get the ExternalAsciiStringResource for an external ascii string.
965
1127
  * Returns NULL if IsExternalAscii() doesn't return true.
966
1128
  */
967
- ExternalAsciiStringResource* GetExternalAsciiStringResource() const;
1129
+ V8EXPORT ExternalAsciiStringResource* GetExternalAsciiStringResource() const;
968
1130
 
969
1131
  static inline String* Cast(v8::Value* obj);
970
1132
 
@@ -977,29 +1139,30 @@ class V8EXPORT String : public Primitive {
977
1139
  * 'strlen' to determine the buffer length, it might be
978
1140
  * wrong if 'data' contains a null character.
979
1141
  */
980
- static Local<String> New(const char* data, int length = -1);
1142
+ V8EXPORT static Local<String> New(const char* data, int length = -1);
981
1143
 
982
1144
  /** Allocates a new string from utf16 data.*/
983
- static Local<String> New(const uint16_t* data, int length = -1);
1145
+ V8EXPORT static Local<String> New(const uint16_t* data, int length = -1);
984
1146
 
985
1147
  /** Creates a symbol. Returns one if it exists already.*/
986
- static Local<String> NewSymbol(const char* data, int length = -1);
1148
+ V8EXPORT static Local<String> NewSymbol(const char* data, int length = -1);
987
1149
 
988
1150
  /**
989
1151
  * Creates a new string by concatenating the left and the right strings
990
1152
  * passed in as parameters.
991
1153
  */
992
- static Local<String> Concat(Handle<String> left, Handle<String>right);
1154
+ V8EXPORT static Local<String> Concat(Handle<String> left,
1155
+ Handle<String>right);
993
1156
 
994
1157
  /**
995
1158
  * Creates a new external string using the data defined in the given
996
- * resource. The resource is deleted when the external string is no
997
- * longer live on V8's heap. The caller of this function should not
998
- * delete or modify the resource. Neither should the underlying buffer be
999
- * deallocated or modified except through the destructor of the
1000
- * external string resource.
1159
+ * resource. When the external string is no longer live on V8's heap the
1160
+ * resource will be disposed by calling its Dispose method. The caller of
1161
+ * this function should not otherwise delete or modify the resource. Neither
1162
+ * should the underlying buffer be deallocated or modified except through the
1163
+ * destructor of the external string resource.
1001
1164
  */
1002
- static Local<String> NewExternal(ExternalStringResource* resource);
1165
+ V8EXPORT static Local<String> NewExternal(ExternalStringResource* resource);
1003
1166
 
1004
1167
  /**
1005
1168
  * Associate an external string resource with this string by transforming it
@@ -1007,19 +1170,21 @@ class V8EXPORT String : public Primitive {
1007
1170
  * will use the external string resource. The external string resource's
1008
1171
  * character contents needs to be equivalent to this string.
1009
1172
  * Returns true if the string has been changed to be an external string.
1010
- * The string is not modified if the operation fails.
1173
+ * The string is not modified if the operation fails. See NewExternal for
1174
+ * information on the lifetime of the resource.
1011
1175
  */
1012
- bool MakeExternal(ExternalStringResource* resource);
1176
+ V8EXPORT bool MakeExternal(ExternalStringResource* resource);
1013
1177
 
1014
1178
  /**
1015
1179
  * Creates a new external string using the ascii data defined in the given
1016
- * resource. The resource is deleted when the external string is no
1017
- * longer live on V8's heap. The caller of this function should not
1018
- * delete or modify the resource. Neither should the underlying buffer be
1019
- * deallocated or modified except through the destructor of the
1020
- * external string resource.
1180
+ * resource. When the external string is no longer live on V8's heap the
1181
+ * resource will be disposed by calling its Dispose method. The caller of
1182
+ * this function should not otherwise delete or modify the resource. Neither
1183
+ * should the underlying buffer be deallocated or modified except through the
1184
+ * destructor of the external string resource.
1021
1185
  */
1022
- static Local<String> NewExternal(ExternalAsciiStringResource* resource);
1186
+ V8EXPORT static Local<String> NewExternal(
1187
+ ExternalAsciiStringResource* resource);
1023
1188
 
1024
1189
  /**
1025
1190
  * Associate an external string resource with this string by transforming it
@@ -1027,20 +1192,23 @@ class V8EXPORT String : public Primitive {
1027
1192
  * will use the external string resource. The external string resource's
1028
1193
  * character contents needs to be equivalent to this string.
1029
1194
  * Returns true if the string has been changed to be an external string.
1030
- * The string is not modified if the operation fails.
1195
+ * The string is not modified if the operation fails. See NewExternal for
1196
+ * information on the lifetime of the resource.
1031
1197
  */
1032
- bool MakeExternal(ExternalAsciiStringResource* resource);
1198
+ V8EXPORT bool MakeExternal(ExternalAsciiStringResource* resource);
1033
1199
 
1034
1200
  /**
1035
1201
  * Returns true if this string can be made external.
1036
1202
  */
1037
- bool CanMakeExternal();
1203
+ V8EXPORT bool CanMakeExternal();
1038
1204
 
1039
1205
  /** Creates an undetectable string from the supplied ascii or utf-8 data.*/
1040
- static Local<String> NewUndetectable(const char* data, int length = -1);
1206
+ V8EXPORT static Local<String> NewUndetectable(const char* data,
1207
+ int length = -1);
1041
1208
 
1042
1209
  /** Creates an undetectable string from the supplied utf-16 data.*/
1043
- static Local<String> NewUndetectable(const uint16_t* data, int length = -1);
1210
+ V8EXPORT static Local<String> NewUndetectable(const uint16_t* data,
1211
+ int length = -1);
1044
1212
 
1045
1213
  /**
1046
1214
  * Converts an object to a utf8-encoded character array. Useful if
@@ -1111,21 +1279,21 @@ class V8EXPORT String : public Primitive {
1111
1279
  };
1112
1280
 
1113
1281
  private:
1114
- void VerifyExternalStringResource(ExternalStringResource* val) const;
1115
- static void CheckCast(v8::Value* obj);
1282
+ V8EXPORT void VerifyExternalStringResource(ExternalStringResource* val) const;
1283
+ V8EXPORT static void CheckCast(v8::Value* obj);
1116
1284
  };
1117
1285
 
1118
1286
 
1119
1287
  /**
1120
1288
  * A JavaScript number value (ECMA-262, 4.3.20)
1121
1289
  */
1122
- class V8EXPORT Number : public Primitive {
1290
+ class Number : public Primitive {
1123
1291
  public:
1124
- double Value() const;
1125
- static Local<Number> New(double value);
1292
+ V8EXPORT double Value() const;
1293
+ V8EXPORT static Local<Number> New(double value);
1126
1294
  static inline Number* Cast(v8::Value* obj);
1127
1295
  private:
1128
- Number();
1296
+ V8EXPORT Number();
1129
1297
  static void CheckCast(v8::Value* obj);
1130
1298
  };
1131
1299
 
@@ -1133,56 +1301,56 @@ class V8EXPORT Number : public Primitive {
1133
1301
  /**
1134
1302
  * A JavaScript value representing a signed integer.
1135
1303
  */
1136
- class V8EXPORT Integer : public Number {
1304
+ class Integer : public Number {
1137
1305
  public:
1138
- static Local<Integer> New(int32_t value);
1139
- static Local<Integer> NewFromUnsigned(uint32_t value);
1140
- int64_t Value() const;
1306
+ V8EXPORT static Local<Integer> New(int32_t value);
1307
+ V8EXPORT static Local<Integer> NewFromUnsigned(uint32_t value);
1308
+ V8EXPORT int64_t Value() const;
1141
1309
  static inline Integer* Cast(v8::Value* obj);
1142
1310
  private:
1143
- Integer();
1144
- static void CheckCast(v8::Value* obj);
1311
+ V8EXPORT Integer();
1312
+ V8EXPORT static void CheckCast(v8::Value* obj);
1145
1313
  };
1146
1314
 
1147
1315
 
1148
1316
  /**
1149
1317
  * A JavaScript value representing a 32-bit signed integer.
1150
1318
  */
1151
- class V8EXPORT Int32 : public Integer {
1319
+ class Int32 : public Integer {
1152
1320
  public:
1153
- int32_t Value() const;
1321
+ V8EXPORT int32_t Value() const;
1154
1322
  private:
1155
- Int32();
1323
+ V8EXPORT Int32();
1156
1324
  };
1157
1325
 
1158
1326
 
1159
1327
  /**
1160
1328
  * A JavaScript value representing a 32-bit unsigned integer.
1161
1329
  */
1162
- class V8EXPORT Uint32 : public Integer {
1330
+ class Uint32 : public Integer {
1163
1331
  public:
1164
- uint32_t Value() const;
1332
+ V8EXPORT uint32_t Value() const;
1165
1333
  private:
1166
- Uint32();
1334
+ V8EXPORT Uint32();
1167
1335
  };
1168
1336
 
1169
1337
 
1170
1338
  /**
1171
1339
  * An instance of the built-in Date constructor (ECMA-262, 15.9).
1172
1340
  */
1173
- class V8EXPORT Date : public Value {
1341
+ class Date : public Value {
1174
1342
  public:
1175
- static Local<Value> New(double time);
1343
+ V8EXPORT static Local<Value> New(double time);
1176
1344
 
1177
1345
  /**
1178
1346
  * A specialization of Value::NumberValue that is more efficient
1179
1347
  * because we know the structure of this object.
1180
1348
  */
1181
- double NumberValue() const;
1349
+ V8EXPORT double NumberValue() const;
1182
1350
 
1183
1351
  static inline Date* Cast(v8::Value* obj);
1184
1352
  private:
1185
- static void CheckCast(v8::Value* obj);
1353
+ V8EXPORT static void CheckCast(v8::Value* obj);
1186
1354
  };
1187
1355
 
1188
1356
 
@@ -1203,17 +1371,52 @@ enum ExternalArrayType {
1203
1371
  kExternalFloatArray
1204
1372
  };
1205
1373
 
1374
+ /**
1375
+ * Accessor[Getter|Setter] are used as callback functions when
1376
+ * setting|getting a particular property. See Object and ObjectTemplate's
1377
+ * method SetAccessor.
1378
+ */
1379
+ typedef Handle<Value> (*AccessorGetter)(Local<String> property,
1380
+ const AccessorInfo& info);
1381
+
1382
+
1383
+ typedef void (*AccessorSetter)(Local<String> property,
1384
+ Local<Value> value,
1385
+ const AccessorInfo& info);
1386
+
1387
+
1388
+ /**
1389
+ * Access control specifications.
1390
+ *
1391
+ * Some accessors should be accessible across contexts. These
1392
+ * accessors have an explicit access control parameter which specifies
1393
+ * the kind of cross-context access that should be allowed.
1394
+ *
1395
+ * Additionally, for security, accessors can prohibit overwriting by
1396
+ * accessors defined in JavaScript. For objects that have such
1397
+ * accessors either locally or in their prototype chain it is not
1398
+ * possible to overwrite the accessor by using __defineGetter__ or
1399
+ * __defineSetter__ from JavaScript code.
1400
+ */
1401
+ enum AccessControl {
1402
+ DEFAULT = 0,
1403
+ ALL_CAN_READ = 1,
1404
+ ALL_CAN_WRITE = 1 << 1,
1405
+ PROHIBITS_OVERWRITING = 1 << 2
1406
+ };
1407
+
1408
+
1206
1409
  /**
1207
1410
  * A JavaScript object (ECMA-262, 4.3.3)
1208
1411
  */
1209
- class V8EXPORT Object : public Value {
1412
+ class Object : public Value {
1210
1413
  public:
1211
- bool Set(Handle<Value> key,
1212
- Handle<Value> value,
1213
- PropertyAttribute attribs = None);
1414
+ V8EXPORT bool Set(Handle<Value> key,
1415
+ Handle<Value> value,
1416
+ PropertyAttribute attribs = None);
1214
1417
 
1215
- bool Set(uint32_t index,
1216
- Handle<Value> value);
1418
+ V8EXPORT bool Set(uint32_t index,
1419
+ Handle<Value> value);
1217
1420
 
1218
1421
  // Sets a local property on this object bypassing interceptors and
1219
1422
  // overriding accessors or read-only properties.
@@ -1223,27 +1426,34 @@ class V8EXPORT Object : public Value {
1223
1426
  // will only be returned if the interceptor doesn't return a value.
1224
1427
  //
1225
1428
  // Note also that this only works for named properties.
1226
- bool ForceSet(Handle<Value> key,
1227
- Handle<Value> value,
1228
- PropertyAttribute attribs = None);
1429
+ V8EXPORT bool ForceSet(Handle<Value> key,
1430
+ Handle<Value> value,
1431
+ PropertyAttribute attribs = None);
1229
1432
 
1230
- Local<Value> Get(Handle<Value> key);
1433
+ V8EXPORT Local<Value> Get(Handle<Value> key);
1231
1434
 
1232
- Local<Value> Get(uint32_t index);
1435
+ V8EXPORT Local<Value> Get(uint32_t index);
1233
1436
 
1234
1437
  // TODO(1245389): Replace the type-specific versions of these
1235
1438
  // functions with generic ones that accept a Handle<Value> key.
1236
- bool Has(Handle<String> key);
1439
+ V8EXPORT bool Has(Handle<String> key);
1237
1440
 
1238
- bool Delete(Handle<String> key);
1441
+ V8EXPORT bool Delete(Handle<String> key);
1239
1442
 
1240
1443
  // Delete a property on this object bypassing interceptors and
1241
1444
  // ignoring dont-delete attributes.
1242
- bool ForceDelete(Handle<Value> key);
1445
+ V8EXPORT bool ForceDelete(Handle<Value> key);
1446
+
1447
+ V8EXPORT bool Has(uint32_t index);
1243
1448
 
1244
- bool Has(uint32_t index);
1449
+ V8EXPORT bool Delete(uint32_t index);
1245
1450
 
1246
- bool Delete(uint32_t index);
1451
+ V8EXPORT bool SetAccessor(Handle<String> name,
1452
+ AccessorGetter getter,
1453
+ AccessorSetter setter = 0,
1454
+ Handle<Value> data = Handle<Value>(),
1455
+ AccessControl settings = DEFAULT,
1456
+ PropertyAttribute attribute = None);
1247
1457
 
1248
1458
  /**
1249
1459
  * Returns an array containing the names of the enumerable properties
@@ -1251,78 +1461,80 @@ class V8EXPORT Object : public Value {
1251
1461
  * array returned by this method contains the same values as would
1252
1462
  * be enumerated by a for-in statement over this object.
1253
1463
  */
1254
- Local<Array> GetPropertyNames();
1464
+ V8EXPORT Local<Array> GetPropertyNames();
1255
1465
 
1256
1466
  /**
1257
1467
  * Get the prototype object. This does not skip objects marked to
1258
1468
  * be skipped by __proto__ and it does not consult the security
1259
1469
  * handler.
1260
1470
  */
1261
- Local<Value> GetPrototype();
1471
+ V8EXPORT Local<Value> GetPrototype();
1262
1472
 
1263
1473
  /**
1264
1474
  * Set the prototype object. This does not skip objects marked to
1265
1475
  * be skipped by __proto__ and it does not consult the security
1266
1476
  * handler.
1267
1477
  */
1268
- bool SetPrototype(Handle<Value> prototype);
1478
+ V8EXPORT bool SetPrototype(Handle<Value> prototype);
1269
1479
 
1270
1480
  /**
1271
1481
  * Finds an instance of the given function template in the prototype
1272
1482
  * chain.
1273
1483
  */
1274
- Local<Object> FindInstanceInPrototypeChain(Handle<FunctionTemplate> tmpl);
1484
+ V8EXPORT Local<Object> FindInstanceInPrototypeChain(
1485
+ Handle<FunctionTemplate> tmpl);
1275
1486
 
1276
1487
  /**
1277
1488
  * Call builtin Object.prototype.toString on this object.
1278
1489
  * This is different from Value::ToString() that may call
1279
1490
  * user-defined toString function. This one does not.
1280
1491
  */
1281
- Local<String> ObjectProtoToString();
1492
+ V8EXPORT Local<String> ObjectProtoToString();
1282
1493
 
1283
1494
  /** Gets the number of internal fields for this Object. */
1284
- int InternalFieldCount();
1495
+ V8EXPORT int InternalFieldCount();
1285
1496
  /** Gets the value in an internal field. */
1286
1497
  inline Local<Value> GetInternalField(int index);
1287
1498
  /** Sets the value in an internal field. */
1288
- void SetInternalField(int index, Handle<Value> value);
1499
+ V8EXPORT void SetInternalField(int index, Handle<Value> value);
1289
1500
 
1290
1501
  /** Gets a native pointer from an internal field. */
1291
1502
  inline void* GetPointerFromInternalField(int index);
1292
1503
 
1293
1504
  /** Sets a native pointer in an internal field. */
1294
- void SetPointerInInternalField(int index, void* value);
1505
+ V8EXPORT void SetPointerInInternalField(int index, void* value);
1295
1506
 
1296
1507
  // Testers for local properties.
1297
- bool HasRealNamedProperty(Handle<String> key);
1298
- bool HasRealIndexedProperty(uint32_t index);
1299
- bool HasRealNamedCallbackProperty(Handle<String> key);
1508
+ V8EXPORT bool HasRealNamedProperty(Handle<String> key);
1509
+ V8EXPORT bool HasRealIndexedProperty(uint32_t index);
1510
+ V8EXPORT bool HasRealNamedCallbackProperty(Handle<String> key);
1300
1511
 
1301
1512
  /**
1302
1513
  * If result.IsEmpty() no real property was located in the prototype chain.
1303
1514
  * This means interceptors in the prototype chain are not called.
1304
1515
  */
1305
- Local<Value> GetRealNamedPropertyInPrototypeChain(Handle<String> key);
1516
+ V8EXPORT Local<Value> GetRealNamedPropertyInPrototypeChain(
1517
+ Handle<String> key);
1306
1518
 
1307
1519
  /**
1308
1520
  * If result.IsEmpty() no real property was located on the object or
1309
1521
  * in the prototype chain.
1310
1522
  * This means interceptors in the prototype chain are not called.
1311
1523
  */
1312
- Local<Value> GetRealNamedProperty(Handle<String> key);
1524
+ V8EXPORT Local<Value> GetRealNamedProperty(Handle<String> key);
1313
1525
 
1314
1526
  /** Tests for a named lookup interceptor.*/
1315
- bool HasNamedLookupInterceptor();
1527
+ V8EXPORT bool HasNamedLookupInterceptor();
1316
1528
 
1317
1529
  /** Tests for an index lookup interceptor.*/
1318
- bool HasIndexedLookupInterceptor();
1530
+ V8EXPORT bool HasIndexedLookupInterceptor();
1319
1531
 
1320
1532
  /**
1321
1533
  * Turns on access check on the object if the object is an instance of
1322
1534
  * a template that has access check callbacks. If an object has no
1323
1535
  * access check info, the object cannot be accessed by anyone.
1324
1536
  */
1325
- void TurnOnAccessCheck();
1537
+ V8EXPORT void TurnOnAccessCheck();
1326
1538
 
1327
1539
  /**
1328
1540
  * Returns the identity hash for this object. The current implemenation uses
@@ -1331,7 +1543,7 @@ class V8EXPORT Object : public Value {
1331
1543
  * The return value will never be 0. Also, it is not guaranteed to be
1332
1544
  * unique.
1333
1545
  */
1334
- int GetIdentityHash();
1546
+ V8EXPORT int GetIdentityHash();
1335
1547
 
1336
1548
  /**
1337
1549
  * Access hidden properties on JavaScript objects. These properties are
@@ -1339,9 +1551,9 @@ class V8EXPORT Object : public Value {
1339
1551
  * C++ API. Hidden properties introduced by V8 internally (for example the
1340
1552
  * identity hash) are prefixed with "v8::".
1341
1553
  */
1342
- bool SetHiddenValue(Handle<String> key, Handle<Value> value);
1343
- Local<Value> GetHiddenValue(Handle<String> key);
1344
- bool DeleteHiddenValue(Handle<String> key);
1554
+ V8EXPORT bool SetHiddenValue(Handle<String> key, Handle<Value> value);
1555
+ V8EXPORT Local<Value> GetHiddenValue(Handle<String> key);
1556
+ V8EXPORT bool DeleteHiddenValue(Handle<String> key);
1345
1557
 
1346
1558
  /**
1347
1559
  * Returns true if this is an instance of an api function (one
@@ -1350,13 +1562,13 @@ class V8EXPORT Object : public Value {
1350
1562
  * conservative and may return true for objects that haven't actually
1351
1563
  * been modified.
1352
1564
  */
1353
- bool IsDirty();
1565
+ V8EXPORT bool IsDirty();
1354
1566
 
1355
1567
  /**
1356
1568
  * Clone this object with a fast but shallow copy. Values will point
1357
1569
  * to the same values as the original object.
1358
1570
  */
1359
- Local<Object> Clone();
1571
+ V8EXPORT Local<Object> Clone();
1360
1572
 
1361
1573
  /**
1362
1574
  * Set the backing store of the indexed properties to be managed by the
@@ -1365,7 +1577,10 @@ class V8EXPORT Object : public Value {
1365
1577
  * Note: The embedding program still owns the data and needs to ensure that
1366
1578
  * the backing store is preserved while V8 has a reference.
1367
1579
  */
1368
- void SetIndexedPropertiesToPixelData(uint8_t* data, int length);
1580
+ V8EXPORT void SetIndexedPropertiesToPixelData(uint8_t* data, int length);
1581
+ bool HasIndexedPropertiesInPixelData();
1582
+ uint8_t* GetIndexedPropertiesPixelData();
1583
+ int GetIndexedPropertiesPixelDataLength();
1369
1584
 
1370
1585
  /**
1371
1586
  * Set the backing store of the indexed properties to be managed by the
@@ -1374,17 +1589,22 @@ class V8EXPORT Object : public Value {
1374
1589
  * Note: The embedding program still owns the data and needs to ensure that
1375
1590
  * the backing store is preserved while V8 has a reference.
1376
1591
  */
1377
- void SetIndexedPropertiesToExternalArrayData(void* data,
1378
- ExternalArrayType array_type,
1379
- int number_of_elements);
1592
+ V8EXPORT void SetIndexedPropertiesToExternalArrayData(
1593
+ void* data,
1594
+ ExternalArrayType array_type,
1595
+ int number_of_elements);
1596
+ bool HasIndexedPropertiesInExternalArrayData();
1597
+ void* GetIndexedPropertiesExternalArrayData();
1598
+ ExternalArrayType GetIndexedPropertiesExternalArrayDataType();
1599
+ int GetIndexedPropertiesExternalArrayDataLength();
1380
1600
 
1381
- static Local<Object> New();
1601
+ V8EXPORT static Local<Object> New();
1382
1602
  static inline Object* Cast(Value* obj);
1383
1603
  private:
1384
- Object();
1385
- static void CheckCast(Value* obj);
1386
- Local<Value> CheckedGetInternalField(int index);
1387
- void* SlowGetPointerFromInternalField(int index);
1604
+ V8EXPORT Object();
1605
+ V8EXPORT static void CheckCast(Value* obj);
1606
+ V8EXPORT Local<Value> CheckedGetInternalField(int index);
1607
+ V8EXPORT void* SlowGetPointerFromInternalField(int index);
1388
1608
 
1389
1609
  /**
1390
1610
  * If quick access to the internal field is possible this method
@@ -1397,20 +1617,20 @@ class V8EXPORT Object : public Value {
1397
1617
  /**
1398
1618
  * An instance of the built-in array constructor (ECMA-262, 15.4.2).
1399
1619
  */
1400
- class V8EXPORT Array : public Object {
1620
+ class Array : public Object {
1401
1621
  public:
1402
- uint32_t Length() const;
1622
+ V8EXPORT uint32_t Length() const;
1403
1623
 
1404
1624
  /**
1405
1625
  * Clones an element at index |index|. Returns an empty
1406
1626
  * handle if cloning fails (for any reason).
1407
1627
  */
1408
- Local<Object> CloneElementAt(uint32_t index);
1628
+ V8EXPORT Local<Object> CloneElementAt(uint32_t index);
1409
1629
 
1410
- static Local<Array> New(int length = 0);
1630
+ V8EXPORT static Local<Array> New(int length = 0);
1411
1631
  static inline Array* Cast(Value* obj);
1412
1632
  private:
1413
- Array();
1633
+ V8EXPORT Array();
1414
1634
  static void CheckCast(Value* obj);
1415
1635
  };
1416
1636
 
@@ -1418,25 +1638,27 @@ class V8EXPORT Array : public Object {
1418
1638
  /**
1419
1639
  * A JavaScript function object (ECMA-262, 15.3).
1420
1640
  */
1421
- class V8EXPORT Function : public Object {
1641
+ class Function : public Object {
1422
1642
  public:
1423
- Local<Object> NewInstance() const;
1424
- Local<Object> NewInstance(int argc, Handle<Value> argv[]) const;
1425
- Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]);
1426
- void SetName(Handle<String> name);
1427
- Handle<Value> GetName() const;
1643
+ V8EXPORT Local<Object> NewInstance() const;
1644
+ V8EXPORT Local<Object> NewInstance(int argc, Handle<Value> argv[]) const;
1645
+ V8EXPORT Local<Value> Call(Handle<Object> recv,
1646
+ int argc,
1647
+ Handle<Value> argv[]);
1648
+ V8EXPORT void SetName(Handle<String> name);
1649
+ V8EXPORT Handle<Value> GetName() const;
1428
1650
 
1429
1651
  /**
1430
1652
  * Returns zero based line number of function body and
1431
1653
  * kLineOffsetNotFound if no information available.
1432
1654
  */
1433
- int GetScriptLineNumber() const;
1434
- ScriptOrigin GetScriptOrigin() const;
1655
+ V8EXPORT int GetScriptLineNumber() const;
1656
+ V8EXPORT ScriptOrigin GetScriptOrigin() const;
1435
1657
  static inline Function* Cast(Value* obj);
1436
- static const int kLineOffsetNotFound;
1658
+ V8EXPORT static const int kLineOffsetNotFound;
1437
1659
  private:
1438
- Function();
1439
- static void CheckCast(Value* obj);
1660
+ V8EXPORT Function();
1661
+ V8EXPORT static void CheckCast(Value* obj);
1440
1662
  };
1441
1663
 
1442
1664
 
@@ -1451,19 +1673,19 @@ class V8EXPORT Function : public Object {
1451
1673
  * value Unwrap should be used, all other operations on that object will lead
1452
1674
  * to unpredictable results.
1453
1675
  */
1454
- class V8EXPORT External : public Value {
1676
+ class External : public Value {
1455
1677
  public:
1456
- static Local<Value> Wrap(void* data);
1678
+ V8EXPORT static Local<Value> Wrap(void* data);
1457
1679
  static inline void* Unwrap(Handle<Value> obj);
1458
1680
 
1459
- static Local<External> New(void* value);
1681
+ V8EXPORT static Local<External> New(void* value);
1460
1682
  static inline External* Cast(Value* obj);
1461
- void* Value() const;
1683
+ V8EXPORT void* Value() const;
1462
1684
  private:
1463
- External();
1464
- static void CheckCast(v8::Value* obj);
1685
+ V8EXPORT External();
1686
+ V8EXPORT static void CheckCast(v8::Value* obj);
1465
1687
  static inline void* QuickUnwrap(Handle<v8::Value> obj);
1466
- static void* FullUnwrap(Handle<v8::Value> obj);
1688
+ V8EXPORT static void* FullUnwrap(Handle<v8::Value> obj);
1467
1689
  };
1468
1690
 
1469
1691
 
@@ -1493,7 +1715,7 @@ class V8EXPORT Template : public Data {
1493
1715
  * including the receiver, the number and values of arguments, and
1494
1716
  * the holder of the function.
1495
1717
  */
1496
- class V8EXPORT Arguments {
1718
+ class Arguments {
1497
1719
  public:
1498
1720
  inline int Length() const;
1499
1721
  inline Local<Value> operator[](int i) const;
@@ -1503,7 +1725,6 @@ class V8EXPORT Arguments {
1503
1725
  inline bool IsConstructCall() const;
1504
1726
  inline Local<Value> Data() const;
1505
1727
  private:
1506
- Arguments();
1507
1728
  friend class ImplementationUtilities;
1508
1729
  inline Arguments(Local<Value> data,
1509
1730
  Local<Object> holder,
@@ -1539,19 +1760,6 @@ typedef Handle<Value> (*InvocationCallback)(const Arguments& args);
1539
1760
 
1540
1761
  typedef int (*LookupCallback)(Local<Object> self, Local<String> name);
1541
1762
 
1542
- /**
1543
- * Accessor[Getter|Setter] are used as callback functions when
1544
- * setting|getting a particular property. See objectTemplate::SetAccessor.
1545
- */
1546
- typedef Handle<Value> (*AccessorGetter)(Local<String> property,
1547
- const AccessorInfo& info);
1548
-
1549
-
1550
- typedef void (*AccessorSetter)(Local<String> property,
1551
- Local<Value> value,
1552
- const AccessorInfo& info);
1553
-
1554
-
1555
1763
  /**
1556
1764
  * NamedProperty[Getter|Setter] are used as interceptors on object.
1557
1765
  * See ObjectTemplate::SetNamedPropertyHandler.
@@ -1568,12 +1776,12 @@ typedef Handle<Value> (*NamedPropertySetter)(Local<String> property,
1568
1776
  Local<Value> value,
1569
1777
  const AccessorInfo& info);
1570
1778
 
1571
-
1572
1779
  /**
1573
1780
  * Returns a non-empty handle if the interceptor intercepts the request.
1574
- * The result is true if the property exists and false otherwise.
1781
+ * The result is an integer encoding property attributes (like v8::None,
1782
+ * v8::DontEnum, etc.)
1575
1783
  */
1576
- typedef Handle<Boolean> (*NamedPropertyQuery)(Local<String> property,
1784
+ typedef Handle<Integer> (*NamedPropertyQuery)(Local<String> property,
1577
1785
  const AccessorInfo& info);
1578
1786
 
1579
1787
 
@@ -1631,27 +1839,6 @@ typedef Handle<Boolean> (*IndexedPropertyDeleter)(uint32_t index,
1631
1839
  typedef Handle<Array> (*IndexedPropertyEnumerator)(const AccessorInfo& info);
1632
1840
 
1633
1841
 
1634
- /**
1635
- * Access control specifications.
1636
- *
1637
- * Some accessors should be accessible across contexts. These
1638
- * accessors have an explicit access control parameter which specifies
1639
- * the kind of cross-context access that should be allowed.
1640
- *
1641
- * Additionally, for security, accessors can prohibit overwriting by
1642
- * accessors defined in JavaScript. For objects that have such
1643
- * accessors either locally or in their prototype chain it is not
1644
- * possible to overwrite the accessor by using __defineGetter__ or
1645
- * __defineSetter__ from JavaScript code.
1646
- */
1647
- enum AccessControl {
1648
- DEFAULT = 0,
1649
- ALL_CAN_READ = 1,
1650
- ALL_CAN_WRITE = 1 << 1,
1651
- PROHIBITS_OVERWRITING = 1 << 2
1652
- };
1653
-
1654
-
1655
1842
  /**
1656
1843
  * Access type specification.
1657
1844
  */
@@ -1916,7 +2103,8 @@ class V8EXPORT ObjectTemplate : public Template {
1916
2103
  *
1917
2104
  * \param getter The callback to invoke when getting a property.
1918
2105
  * \param setter The callback to invoke when setting a property.
1919
- * \param query The callback to invoke to check is an object has a property.
2106
+ * \param query The callback to invoke to check if a property is present,
2107
+ * and if present, get its attributes.
1920
2108
  * \param deleter The callback to invoke when deleting a property.
1921
2109
  * \param enumerator The callback to invoke to enumerate all the named
1922
2110
  * properties of an object.
@@ -2122,7 +2310,7 @@ class V8EXPORT ResourceConstraints {
2122
2310
  };
2123
2311
 
2124
2312
 
2125
- bool SetResourceConstraints(ResourceConstraints* constraints);
2313
+ bool V8EXPORT SetResourceConstraints(ResourceConstraints* constraints);
2126
2314
 
2127
2315
 
2128
2316
  // --- E x c e p t i o n s ---
@@ -2198,15 +2386,6 @@ typedef void (*GCEpilogueCallback)(GCType type, GCCallbackFlags flags);
2198
2386
  typedef void (*GCCallback)();
2199
2387
 
2200
2388
 
2201
- // --- C o n t e x t G e n e r a t o r ---
2202
-
2203
- /**
2204
- * Applications must provide a callback function which is called to generate
2205
- * a context if a context was not deserialized from the snapshot.
2206
- */
2207
- typedef Persistent<Context> (*ContextGenerator)();
2208
-
2209
-
2210
2389
  /**
2211
2390
  * Profiler modules.
2212
2391
  *
@@ -2289,6 +2468,15 @@ class V8EXPORT V8 {
2289
2468
  */
2290
2469
  static void RemoveMessageListeners(MessageCallback that);
2291
2470
 
2471
+ /**
2472
+ * Tells V8 to capture current stack trace when uncaught exception occurs
2473
+ * and report it to the message listeners. The option is off by default.
2474
+ */
2475
+ static void SetCaptureStackTraceForUncaughtExceptions(
2476
+ bool capture,
2477
+ int frame_limit = 10,
2478
+ StackTrace::StackTraceOptions options = StackTrace::kOverview);
2479
+
2292
2480
  /**
2293
2481
  * Sets V8 flags from a string.
2294
2482
  */
@@ -2764,7 +2952,12 @@ class V8EXPORT Context {
2764
2952
  */
2765
2953
  void ReattachGlobal(Handle<Object> global_object);
2766
2954
 
2767
- /** Creates a new context. */
2955
+ /** Creates a new context.
2956
+ *
2957
+ * Returns a persistent handle to the newly allocated context. This
2958
+ * persistent handle has to be disposed when the context is no
2959
+ * longer used so the context can be garbage collected.
2960
+ */
2768
2961
  static Persistent<Context> New(
2769
2962
  ExtensionConfiguration* extensions = NULL,
2770
2963
  Handle<ObjectTemplate> global_template = Handle<ObjectTemplate>(),
@@ -2827,7 +3020,7 @@ class V8EXPORT Context {
2827
3020
  * Stack-allocated class which sets the execution context for all
2828
3021
  * operations executed within a local scope.
2829
3022
  */
2830
- class V8EXPORT Scope {
3023
+ class Scope {
2831
3024
  public:
2832
3025
  inline Scope(Handle<Context> context) : context_(context) {
2833
3026
  context_->Enter();
@@ -3035,13 +3228,11 @@ class Internals {
3035
3228
  static const int kProxyProxyOffset = sizeof(void*);
3036
3229
  static const int kJSObjectHeaderSize = 3 * sizeof(void*);
3037
3230
  static const int kFullStringRepresentationMask = 0x07;
3038
- static const int kExternalTwoByteRepresentationTag = 0x03;
3231
+ static const int kExternalTwoByteRepresentationTag = 0x02;
3039
3232
 
3040
- // These constants are compiler dependent so their values must be
3041
- // defined within the implementation.
3042
- V8EXPORT static int kJSObjectType;
3043
- V8EXPORT static int kFirstNonstringType;
3044
- V8EXPORT static int kProxyType;
3233
+ static const int kJSObjectType = 0x9f;
3234
+ static const int kFirstNonstringType = 0x80;
3235
+ static const int kProxyType = 0x85;
3045
3236
 
3046
3237
  static inline bool HasHeapObjectTag(internal::Object* value) {
3047
3238
  return ((reinterpret_cast<intptr_t>(value) & kHeapObjectTagMask) ==
@@ -3148,6 +3339,17 @@ void Persistent<T>::ClearWeak() {
3148
3339
  V8::ClearWeak(reinterpret_cast<internal::Object**>(**this));
3149
3340
  }
3150
3341
 
3342
+
3343
+ Arguments::Arguments(v8::Local<v8::Value> data,
3344
+ v8::Local<v8::Object> holder,
3345
+ v8::Local<v8::Function> callee,
3346
+ bool is_construct_call,
3347
+ void** values, int length)
3348
+ : data_(data), holder_(holder), callee_(callee),
3349
+ is_construct_call_(is_construct_call),
3350
+ values_(values), length_(length) { }
3351
+
3352
+
3151
3353
  Local<Value> Arguments::operator[](int i) const {
3152
3354
  if (i < 0 || length_ <= i) return Local<Value>(*Undefined());
3153
3355
  return Local<Value>(reinterpret_cast<Value*>(values_ - i));
@@ -3408,7 +3610,6 @@ Local<Object> AccessorInfo::Holder() const {
3408
3610
 
3409
3611
 
3410
3612
  #undef V8EXPORT
3411
- #undef V8EXPORT_INLINE
3412
3613
  #undef TYPE_CHECK
3413
3614
 
3414
3615