therubyracer 0.9.0beta2 → 0.9.0beta3
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.
- data/.gitmodules +3 -0
- data/ext/v8/upstream/Makefile +1 -2
- data/ext/v8/upstream/v8/.gitignore +33 -0
- data/ext/v8/upstream/v8/AUTHORS +42 -0
- data/ext/v8/upstream/v8/ChangeLog +2663 -0
- data/ext/v8/upstream/{3.1.8 → v8}/LICENSE +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.strongtalk +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.v8 +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/LICENSE.valgrind +0 -0
- data/ext/v8/upstream/v8/SConstruct +1473 -0
- data/ext/v8/upstream/{3.1.8 → v8}/build/README.txt +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/build/all.gyp +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/build/armu.gypi +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/build/common.gypi +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/build/gyp_v8 +0 -0
- data/ext/v8/upstream/v8/include/v8-debug.h +394 -0
- data/ext/v8/upstream/v8/include/v8-preparser.h +116 -0
- data/ext/v8/upstream/v8/include/v8-profiler.h +505 -0
- data/ext/v8/upstream/v8/include/v8-testing.h +104 -0
- data/ext/v8/upstream/v8/include/v8.h +4000 -0
- data/ext/v8/upstream/{3.1.8 → v8}/include/v8stdint.h +0 -0
- data/ext/v8/upstream/v8/preparser/SConscript +38 -0
- data/ext/v8/upstream/v8/preparser/preparser-process.cc +169 -0
- data/ext/v8/upstream/v8/src/SConscript +380 -0
- data/ext/v8/upstream/v8/src/accessors.cc +766 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/accessors.h +0 -0
- data/ext/v8/upstream/v8/src/allocation-inl.h +49 -0
- data/ext/v8/upstream/v8/src/allocation.cc +122 -0
- data/ext/v8/upstream/v8/src/allocation.h +143 -0
- data/ext/v8/upstream/v8/src/api.cc +5678 -0
- data/ext/v8/upstream/v8/src/api.h +572 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/apinatives.js +0 -0
- data/ext/v8/upstream/v8/src/apiutils.h +73 -0
- data/ext/v8/upstream/v8/src/arguments.h +116 -0
- data/ext/v8/upstream/v8/src/arm/assembler-arm-inl.h +353 -0
- data/ext/v8/upstream/v8/src/arm/assembler-arm.cc +2877 -0
- data/ext/v8/upstream/v8/src/arm/assembler-arm.h +1382 -0
- data/ext/v8/upstream/v8/src/arm/builtins-arm.cc +1634 -0
- data/ext/v8/upstream/v8/src/arm/code-stubs-arm.cc +6917 -0
- data/ext/v8/upstream/v8/src/arm/code-stubs-arm.h +623 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/codegen-arm-inl.h +0 -0
- data/ext/v8/upstream/v8/src/arm/codegen-arm.cc +7437 -0
- data/ext/v8/upstream/v8/src/arm/codegen-arm.h +595 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/constants-arm.cc +0 -0
- data/ext/v8/upstream/v8/src/arm/constants-arm.h +778 -0
- data/ext/v8/upstream/v8/src/arm/cpu-arm.cc +149 -0
- data/ext/v8/upstream/v8/src/arm/debug-arm.cc +317 -0
- data/ext/v8/upstream/v8/src/arm/deoptimizer-arm.cc +737 -0
- data/ext/v8/upstream/v8/src/arm/disasm-arm.cc +1503 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/frames-arm.cc +0 -0
- data/ext/v8/upstream/v8/src/arm/frames-arm.h +168 -0
- data/ext/v8/upstream/v8/src/arm/full-codegen-arm.cc +4374 -0
- data/ext/v8/upstream/v8/src/arm/ic-arm.cc +1793 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/jump-target-arm.cc +0 -0
- data/ext/v8/upstream/v8/src/arm/lithium-arm.cc +2120 -0
- data/ext/v8/upstream/v8/src/arm/lithium-arm.h +2179 -0
- data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.cc +4132 -0
- data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.h +329 -0
- data/ext/v8/upstream/v8/src/arm/lithium-gap-resolver-arm.cc +305 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/lithium-gap-resolver-arm.h +0 -0
- data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.cc +2939 -0
- data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.h +1071 -0
- data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.cc +1287 -0
- data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.h +253 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/register-allocator-arm.h +0 -0
- data/ext/v8/upstream/v8/src/arm/simulator-arm.cc +3288 -0
- data/ext/v8/upstream/v8/src/arm/simulator-arm.h +413 -0
- data/ext/v8/upstream/v8/src/arm/stub-cache-arm.cc +4034 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/arm/virtual-frame-arm-inl.h +0 -0
- data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.cc +843 -0
- data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.h +523 -0
- data/ext/v8/upstream/v8/src/array.js +1249 -0
- data/ext/v8/upstream/v8/src/assembler.cc +1067 -0
- data/ext/v8/upstream/v8/src/assembler.h +823 -0
- data/ext/v8/upstream/v8/src/ast-inl.h +112 -0
- data/ext/v8/upstream/v8/src/ast.cc +1078 -0
- data/ext/v8/upstream/v8/src/ast.h +2234 -0
- data/ext/v8/upstream/v8/src/atomicops.h +167 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_arm_gcc.h +0 -0
- data/ext/v8/upstream/v8/src/atomicops_internals_mips_gcc.h +169 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_gcc.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_gcc.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_macosx.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/atomicops_internals_x86_msvc.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/bignum-dtoa.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/bignum-dtoa.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/bignum.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/bignum.h +0 -0
- data/ext/v8/upstream/v8/src/bootstrapper.cc +2138 -0
- data/ext/v8/upstream/v8/src/bootstrapper.h +185 -0
- data/ext/v8/upstream/v8/src/builtins.cc +1708 -0
- data/ext/v8/upstream/v8/src/builtins.h +368 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/cached-powers.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/cached-powers.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/v8/src/checks.cc +110 -0
- data/ext/v8/upstream/v8/src/checks.h +296 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/circular-queue.h +0 -0
- data/ext/v8/upstream/v8/src/code-stubs.cc +240 -0
- data/ext/v8/upstream/v8/src/code-stubs.h +971 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/code.h +0 -0
- data/ext/v8/upstream/v8/src/codegen-inl.h +68 -0
- data/ext/v8/upstream/v8/src/codegen.cc +505 -0
- data/ext/v8/upstream/v8/src/codegen.h +245 -0
- data/ext/v8/upstream/v8/src/compilation-cache.cc +540 -0
- data/ext/v8/upstream/v8/src/compilation-cache.h +287 -0
- data/ext/v8/upstream/v8/src/compiler.cc +792 -0
- data/ext/v8/upstream/v8/src/compiler.h +307 -0
- data/ext/v8/upstream/v8/src/contexts.cc +327 -0
- data/ext/v8/upstream/v8/src/contexts.h +382 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/conversions-inl.h +0 -0
- data/ext/v8/upstream/v8/src/conversions.cc +1125 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/conversions.h +0 -0
- data/ext/v8/upstream/v8/src/counters.cc +93 -0
- data/ext/v8/upstream/v8/src/counters.h +254 -0
- data/ext/v8/upstream/v8/src/cpu-profiler-inl.h +101 -0
- data/ext/v8/upstream/v8/src/cpu-profiler.cc +606 -0
- data/ext/v8/upstream/v8/src/cpu-profiler.h +305 -0
- data/ext/v8/upstream/v8/src/cpu.h +67 -0
- data/ext/v8/upstream/v8/src/d8-debug.cc +367 -0
- data/ext/v8/upstream/v8/src/d8-debug.h +158 -0
- data/ext/v8/upstream/v8/src/d8-posix.cc +695 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/d8-readline.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/v8/src/d8.cc +796 -0
- data/ext/v8/upstream/v8/src/d8.gyp +88 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/d8.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/d8.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/data-flow.cc +0 -0
- data/ext/v8/upstream/v8/src/data-flow.h +379 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/date.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/dateparser-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/dateparser.cc +0 -0
- data/ext/v8/upstream/v8/src/dateparser.h +265 -0
- data/ext/v8/upstream/v8/src/debug-agent.cc +447 -0
- data/ext/v8/upstream/v8/src/debug-agent.h +129 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/debug-debugger.js +0 -0
- data/ext/v8/upstream/v8/src/debug.cc +3188 -0
- data/ext/v8/upstream/v8/src/debug.h +1055 -0
- data/ext/v8/upstream/v8/src/deoptimizer.cc +1296 -0
- data/ext/v8/upstream/v8/src/deoptimizer.h +629 -0
- data/ext/v8/upstream/v8/src/disasm.h +80 -0
- data/ext/v8/upstream/v8/src/disassembler.cc +339 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/disassembler.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/diy-fp.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/diy-fp.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/double.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/dtoa.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/dtoa.h +0 -0
- data/ext/v8/upstream/v8/src/execution.cc +791 -0
- data/ext/v8/upstream/v8/src/execution.h +291 -0
- data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.cc +250 -0
- data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.h +89 -0
- data/ext/v8/upstream/v8/src/extensions/experimental/experimental.gyp +55 -0
- data/ext/v8/upstream/v8/src/extensions/experimental/i18n-extension.cc +284 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/experimental/i18n-extension.h +0 -0
- data/ext/v8/upstream/v8/src/extensions/externalize-string-extension.cc +141 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/externalize-string-extension.h +0 -0
- data/ext/v8/upstream/v8/src/extensions/gc-extension.cc +58 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/extensions/gc-extension.h +0 -0
- data/ext/v8/upstream/v8/src/factory.cc +1194 -0
- data/ext/v8/upstream/v8/src/factory.h +436 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/fast-dtoa.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/fast-dtoa.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/fixed-dtoa.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/fixed-dtoa.h +0 -0
- data/ext/v8/upstream/v8/src/flag-definitions.h +556 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/flags.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/flags.h +0 -0
- data/ext/v8/upstream/v8/src/frame-element.cc +37 -0
- data/ext/v8/upstream/v8/src/frame-element.h +269 -0
- data/ext/v8/upstream/v8/src/frames-inl.h +236 -0
- data/ext/v8/upstream/v8/src/frames.cc +1273 -0
- data/ext/v8/upstream/v8/src/frames.h +854 -0
- data/ext/v8/upstream/v8/src/full-codegen.cc +1385 -0
- data/ext/v8/upstream/v8/src/full-codegen.h +753 -0
- data/ext/v8/upstream/v8/src/func-name-inferrer.cc +91 -0
- data/ext/v8/upstream/v8/src/func-name-inferrer.h +111 -0
- data/ext/v8/upstream/v8/src/gdb-jit.cc +1548 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/gdb-jit.h +0 -0
- data/ext/v8/upstream/v8/src/global-handles.cc +596 -0
- data/ext/v8/upstream/v8/src/global-handles.h +239 -0
- data/ext/v8/upstream/v8/src/globals.h +325 -0
- data/ext/v8/upstream/v8/src/handles-inl.h +177 -0
- data/ext/v8/upstream/v8/src/handles.cc +965 -0
- data/ext/v8/upstream/v8/src/handles.h +372 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/v8/src/hashmap.h +121 -0
- data/ext/v8/upstream/v8/src/heap-inl.h +703 -0
- data/ext/v8/upstream/v8/src/heap-profiler.cc +1173 -0
- data/ext/v8/upstream/v8/src/heap-profiler.h +396 -0
- data/ext/v8/upstream/v8/src/heap.cc +5856 -0
- data/ext/v8/upstream/v8/src/heap.h +2264 -0
- data/ext/v8/upstream/v8/src/hydrogen-instructions.cc +1639 -0
- data/ext/v8/upstream/v8/src/hydrogen-instructions.h +3657 -0
- data/ext/v8/upstream/v8/src/hydrogen.cc +6011 -0
- data/ext/v8/upstream/v8/src/hydrogen.h +1137 -0
- data/ext/v8/upstream/v8/src/ia32/assembler-ia32-inl.h +430 -0
- data/ext/v8/upstream/v8/src/ia32/assembler-ia32.cc +2846 -0
- data/ext/v8/upstream/v8/src/ia32/assembler-ia32.h +1159 -0
- data/ext/v8/upstream/v8/src/ia32/builtins-ia32.cc +1596 -0
- data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.cc +6549 -0
- data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.h +495 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/v8/src/ia32/codegen-ia32.cc +10385 -0
- data/ext/v8/upstream/v8/src/ia32/codegen-ia32.h +801 -0
- data/ext/v8/upstream/v8/src/ia32/cpu-ia32.cc +88 -0
- data/ext/v8/upstream/v8/src/ia32/debug-ia32.cc +312 -0
- data/ext/v8/upstream/v8/src/ia32/deoptimizer-ia32.cc +774 -0
- data/ext/v8/upstream/v8/src/ia32/disasm-ia32.cc +1620 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/frames-ia32.cc +0 -0
- data/ext/v8/upstream/v8/src/ia32/frames-ia32.h +140 -0
- data/ext/v8/upstream/v8/src/ia32/full-codegen-ia32.cc +4357 -0
- data/ext/v8/upstream/v8/src/ia32/ic-ia32.cc +1779 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/jump-target-ia32.cc +0 -0
- data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.cc +4158 -0
- data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.h +318 -0
- data/ext/v8/upstream/v8/src/ia32/lithium-gap-resolver-ia32.cc +466 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/lithium-gap-resolver-ia32.h +0 -0
- data/ext/v8/upstream/v8/src/ia32/lithium-ia32.cc +2181 -0
- data/ext/v8/upstream/v8/src/ia32/lithium-ia32.h +2235 -0
- data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.cc +2056 -0
- data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.h +807 -0
- data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.cc +1264 -0
- data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.h +216 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/v8/src/ia32/register-allocator-ia32.cc +157 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/v8/src/ia32/simulator-ia32.h +72 -0
- data/ext/v8/upstream/v8/src/ia32/stub-cache-ia32.cc +3711 -0
- data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.cc +1366 -0
- data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.h +650 -0
- data/ext/v8/upstream/v8/src/ic-inl.h +130 -0
- data/ext/v8/upstream/v8/src/ic.cc +2389 -0
- data/ext/v8/upstream/v8/src/ic.h +675 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/inspector.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/inspector.h +0 -0
- data/ext/v8/upstream/v8/src/interpreter-irregexp.cc +659 -0
- data/ext/v8/upstream/v8/src/interpreter-irregexp.h +49 -0
- data/ext/v8/upstream/v8/src/isolate.cc +883 -0
- data/ext/v8/upstream/v8/src/isolate.h +1306 -0
- data/ext/v8/upstream/v8/src/json.js +342 -0
- data/ext/v8/upstream/v8/src/jsregexp.cc +5371 -0
- data/ext/v8/upstream/v8/src/jsregexp.h +1483 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-heavy-inl.h +0 -0
- data/ext/v8/upstream/v8/src/jump-target-heavy.cc +427 -0
- data/ext/v8/upstream/v8/src/jump-target-heavy.h +238 -0
- data/ext/v8/upstream/v8/src/jump-target-inl.h +48 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-light-inl.h +0 -0
- data/ext/v8/upstream/v8/src/jump-target-light.cc +111 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target-light.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/jump-target.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/list.h +0 -0
- data/ext/v8/upstream/v8/src/lithium-allocator-inl.h +142 -0
- data/ext/v8/upstream/v8/src/lithium-allocator.cc +2105 -0
- data/ext/v8/upstream/v8/src/lithium-allocator.h +630 -0
- data/ext/v8/upstream/v8/src/lithium.cc +169 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/lithium.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/liveedit-debugger.js +0 -0
- data/ext/v8/upstream/v8/src/liveedit.cc +1693 -0
- data/ext/v8/upstream/v8/src/liveedit.h +179 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/liveobjectlist-inl.h +0 -0
- data/ext/v8/upstream/v8/src/liveobjectlist.cc +2589 -0
- data/ext/v8/upstream/v8/src/liveobjectlist.h +322 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/log-inl.h +0 -0
- data/ext/v8/upstream/v8/src/log-utils.cc +423 -0
- data/ext/v8/upstream/v8/src/log-utils.h +229 -0
- data/ext/v8/upstream/v8/src/log.cc +1666 -0
- data/ext/v8/upstream/v8/src/log.h +446 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/macro-assembler.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/macros.py +0 -0
- data/ext/v8/upstream/v8/src/mark-compact.cc +3092 -0
- data/ext/v8/upstream/v8/src/mark-compact.h +506 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/math.js +0 -0
- data/ext/v8/upstream/v8/src/messages.cc +166 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/messages.h +0 -0
- data/ext/v8/upstream/v8/src/messages.js +1090 -0
- data/ext/v8/upstream/v8/src/mips/assembler-mips-inl.h +335 -0
- data/ext/v8/upstream/v8/src/mips/assembler-mips.cc +2093 -0
- data/ext/v8/upstream/v8/src/mips/assembler-mips.h +1066 -0
- data/ext/v8/upstream/v8/src/mips/builtins-mips.cc +148 -0
- data/ext/v8/upstream/v8/src/mips/code-stubs-mips.cc +752 -0
- data/ext/v8/upstream/v8/src/mips/code-stubs-mips.h +511 -0
- data/ext/v8/upstream/v8/src/mips/codegen-mips-inl.h +64 -0
- data/ext/v8/upstream/v8/src/mips/codegen-mips.cc +1213 -0
- data/ext/v8/upstream/v8/src/mips/codegen-mips.h +633 -0
- data/ext/v8/upstream/v8/src/mips/constants-mips.cc +352 -0
- data/ext/v8/upstream/v8/src/mips/constants-mips.h +723 -0
- data/ext/v8/upstream/v8/src/mips/cpu-mips.cc +90 -0
- data/ext/v8/upstream/v8/src/mips/debug-mips.cc +155 -0
- data/ext/v8/upstream/v8/src/mips/deoptimizer-mips.cc +91 -0
- data/ext/v8/upstream/v8/src/mips/disasm-mips.cc +1023 -0
- data/ext/v8/upstream/v8/src/mips/frames-mips.cc +48 -0
- data/ext/v8/upstream/v8/src/mips/frames-mips.h +179 -0
- data/ext/v8/upstream/v8/src/mips/full-codegen-mips.cc +727 -0
- data/ext/v8/upstream/v8/src/mips/ic-mips.cc +244 -0
- data/ext/v8/upstream/v8/src/mips/jump-target-mips.cc +80 -0
- data/ext/v8/upstream/v8/src/mips/lithium-codegen-mips.h +65 -0
- data/ext/v8/upstream/v8/src/mips/lithium-mips.h +304 -0
- data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.cc +3327 -0
- data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.h +1058 -0
- data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.cc +478 -0
- data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.h +250 -0
- data/ext/v8/upstream/v8/src/mips/register-allocator-mips-inl.h +134 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/mips/register-allocator-mips.cc +0 -0
- data/ext/v8/upstream/v8/src/mips/register-allocator-mips.h +47 -0
- data/ext/v8/upstream/v8/src/mips/simulator-mips.cc +2438 -0
- data/ext/v8/upstream/v8/src/mips/simulator-mips.h +394 -0
- data/ext/v8/upstream/v8/src/mips/stub-cache-mips.cc +601 -0
- data/ext/v8/upstream/v8/src/mips/virtual-frame-mips-inl.h +58 -0
- data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.cc +307 -0
- data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.h +530 -0
- data/ext/v8/upstream/v8/src/mirror-debugger.js +2381 -0
- data/ext/v8/upstream/v8/src/mksnapshot.cc +256 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/natives.h +0 -0
- data/ext/v8/upstream/v8/src/objects-debug.cc +722 -0
- data/ext/v8/upstream/v8/src/objects-inl.h +4166 -0
- data/ext/v8/upstream/v8/src/objects-printer.cc +801 -0
- data/ext/v8/upstream/v8/src/objects-visiting.cc +142 -0
- data/ext/v8/upstream/v8/src/objects-visiting.h +422 -0
- data/ext/v8/upstream/v8/src/objects.cc +10296 -0
- data/ext/v8/upstream/v8/src/objects.h +6662 -0
- data/ext/v8/upstream/v8/src/parser.cc +5168 -0
- data/ext/v8/upstream/v8/src/parser.h +823 -0
- data/ext/v8/upstream/v8/src/platform-cygwin.cc +811 -0
- data/ext/v8/upstream/v8/src/platform-freebsd.cc +854 -0
- data/ext/v8/upstream/v8/src/platform-linux.cc +1120 -0
- data/ext/v8/upstream/v8/src/platform-macos.cc +865 -0
- data/ext/v8/upstream/v8/src/platform-nullos.cc +504 -0
- data/ext/v8/upstream/v8/src/platform-openbsd.cc +672 -0
- data/ext/v8/upstream/v8/src/platform-posix.cc +424 -0
- data/ext/v8/upstream/v8/src/platform-solaris.cc +796 -0
- data/ext/v8/upstream/v8/src/platform-tls-mac.h +62 -0
- data/ext/v8/upstream/v8/src/platform-tls-win32.h +62 -0
- data/ext/v8/upstream/v8/src/platform-tls.h +50 -0
- data/ext/v8/upstream/v8/src/platform-win32.cc +2072 -0
- data/ext/v8/upstream/v8/src/platform.h +693 -0
- data/ext/v8/upstream/v8/src/preparse-data.cc +185 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/preparse-data.h +0 -0
- data/ext/v8/upstream/v8/src/preparser-api.cc +219 -0
- data/ext/v8/upstream/v8/src/preparser.cc +1205 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/preparser.h +0 -0
- data/ext/v8/upstream/v8/src/prettyprinter.cc +1530 -0
- data/ext/v8/upstream/v8/src/prettyprinter.h +223 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/profile-generator-inl.h +0 -0
- data/ext/v8/upstream/v8/src/profile-generator.cc +3095 -0
- data/ext/v8/upstream/v8/src/profile-generator.h +1125 -0
- data/ext/v8/upstream/v8/src/property.cc +102 -0
- data/ext/v8/upstream/v8/src/property.h +348 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
- data/ext/v8/upstream/v8/src/regexp-macro-assembler-irregexp.cc +470 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-irregexp.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-tracer.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/v8/src/regexp-macro-assembler.cc +266 -0
- data/ext/v8/upstream/v8/src/regexp-macro-assembler.h +236 -0
- data/ext/v8/upstream/v8/src/regexp-stack.cc +111 -0
- data/ext/v8/upstream/v8/src/regexp-stack.h +147 -0
- data/ext/v8/upstream/v8/src/regexp.js +483 -0
- data/ext/v8/upstream/v8/src/register-allocator-inl.h +141 -0
- data/ext/v8/upstream/v8/src/register-allocator.cc +98 -0
- data/ext/v8/upstream/v8/src/register-allocator.h +310 -0
- data/ext/v8/upstream/v8/src/rewriter.cc +1024 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/rewriter.h +0 -0
- data/ext/v8/upstream/v8/src/runtime-profiler.cc +478 -0
- data/ext/v8/upstream/v8/src/runtime-profiler.h +192 -0
- data/ext/v8/upstream/v8/src/runtime.cc +11949 -0
- data/ext/v8/upstream/v8/src/runtime.h +643 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/runtime.js +0 -0
- data/ext/v8/upstream/v8/src/safepoint-table.cc +256 -0
- data/ext/v8/upstream/v8/src/safepoint-table.h +269 -0
- data/ext/v8/upstream/v8/src/scanner-base.cc +964 -0
- data/ext/v8/upstream/v8/src/scanner-base.h +664 -0
- data/ext/v8/upstream/v8/src/scanner.cc +584 -0
- data/ext/v8/upstream/v8/src/scanner.h +196 -0
- data/ext/v8/upstream/v8/src/scopeinfo.cc +631 -0
- data/ext/v8/upstream/v8/src/scopeinfo.h +249 -0
- data/ext/v8/upstream/v8/src/scopes.cc +1093 -0
- data/ext/v8/upstream/v8/src/scopes.h +508 -0
- data/ext/v8/upstream/v8/src/serialize.cc +1574 -0
- data/ext/v8/upstream/v8/src/serialize.h +589 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/shell.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/simulator.h +0 -0
- data/ext/v8/upstream/v8/src/small-pointer-list.h +163 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/v8/src/snapshot-common.cc +82 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/snapshot-empty.cc +0 -0
- data/ext/v8/upstream/v8/src/snapshot.h +73 -0
- data/ext/v8/upstream/v8/src/spaces-inl.h +529 -0
- data/ext/v8/upstream/v8/src/spaces.cc +3147 -0
- data/ext/v8/upstream/v8/src/spaces.h +2368 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/splay-tree-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/splay-tree.h +0 -0
- data/ext/v8/upstream/v8/src/string-search.cc +41 -0
- data/ext/v8/upstream/v8/src/string-search.h +568 -0
- data/ext/v8/upstream/v8/src/string-stream.cc +592 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/string-stream.h +0 -0
- data/ext/v8/upstream/v8/src/string.js +915 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/strtod.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/strtod.h +0 -0
- data/ext/v8/upstream/v8/src/stub-cache.cc +1940 -0
- data/ext/v8/upstream/v8/src/stub-cache.h +866 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/v8/src/token.cc +63 -0
- data/ext/v8/upstream/v8/src/token.h +288 -0
- data/ext/v8/upstream/v8/src/top.cc +983 -0
- data/ext/v8/upstream/v8/src/type-info.cc +472 -0
- data/ext/v8/upstream/v8/src/type-info.h +290 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/unbound-queue-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/unbound-queue.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/v8/src/unicode.cc +1624 -0
- data/ext/v8/upstream/v8/src/unicode.h +280 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/uri.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/utils.cc +0 -0
- data/ext/v8/upstream/v8/src/utils.h +796 -0
- data/ext/v8/upstream/v8/src/v8-counters.cc +62 -0
- data/ext/v8/upstream/v8/src/v8-counters.h +311 -0
- data/ext/v8/upstream/v8/src/v8.cc +215 -0
- data/ext/v8/upstream/v8/src/v8.h +130 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/v8checks.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/v8dll-main.cc +0 -0
- data/ext/v8/upstream/v8/src/v8globals.h +486 -0
- data/ext/v8/upstream/{3.1.8/src/memory.h → v8/src/v8memory.h} +0 -0
- data/ext/v8/upstream/v8/src/v8natives.js +1293 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/v8preparserdll-main.cc +0 -0
- data/ext/v8/upstream/v8/src/v8threads.cc +453 -0
- data/ext/v8/upstream/v8/src/v8threads.h +164 -0
- data/ext/v8/upstream/v8/src/v8utils.h +317 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/variables.cc +0 -0
- data/ext/v8/upstream/v8/src/variables.h +212 -0
- data/ext/v8/upstream/v8/src/version.cc +116 -0
- data/ext/v8/upstream/v8/src/version.h +68 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-heavy-inl.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-heavy.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-inl.h +0 -0
- data/ext/v8/upstream/v8/src/virtual-frame-light-inl.h +171 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame-light.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/virtual-frame.h +0 -0
- data/ext/v8/upstream/v8/src/vm-state-inl.h +138 -0
- data/ext/v8/upstream/v8/src/vm-state.h +70 -0
- data/ext/v8/upstream/v8/src/win32-headers.h +96 -0
- data/ext/v8/upstream/v8/src/x64/assembler-x64-inl.h +456 -0
- data/ext/v8/upstream/v8/src/x64/assembler-x64.cc +2954 -0
- data/ext/v8/upstream/v8/src/x64/assembler-x64.h +1630 -0
- data/ext/v8/upstream/v8/src/x64/builtins-x64.cc +1493 -0
- data/ext/v8/upstream/v8/src/x64/code-stubs-x64.cc +5132 -0
- data/ext/v8/upstream/v8/src/x64/code-stubs-x64.h +477 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/v8/src/x64/codegen-x64.cc +8843 -0
- data/ext/v8/upstream/v8/src/x64/codegen-x64.h +753 -0
- data/ext/v8/upstream/v8/src/x64/cpu-x64.cc +88 -0
- data/ext/v8/upstream/v8/src/x64/debug-x64.cc +318 -0
- data/ext/v8/upstream/v8/src/x64/deoptimizer-x64.cc +815 -0
- data/ext/v8/upstream/v8/src/x64/disasm-x64.cc +1752 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/frames-x64.cc +0 -0
- data/ext/v8/upstream/v8/src/x64/frames-x64.h +130 -0
- data/ext/v8/upstream/v8/src/x64/full-codegen-x64.cc +4339 -0
- data/ext/v8/upstream/v8/src/x64/ic-x64.cc +1752 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/jump-target-x64.cc +0 -0
- data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.cc +3970 -0
- data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.h +318 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/lithium-gap-resolver-x64.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/lithium-gap-resolver-x64.h +0 -0
- data/ext/v8/upstream/v8/src/x64/lithium-x64.cc +2115 -0
- data/ext/v8/upstream/v8/src/x64/lithium-x64.h +2161 -0
- data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.cc +2911 -0
- data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.h +1984 -0
- data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.cc +1398 -0
- data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.h +282 -0
- data/ext/v8/upstream/v8/src/x64/register-allocator-x64-inl.h +87 -0
- data/ext/v8/upstream/v8/src/x64/register-allocator-x64.cc +95 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/register-allocator-x64.h +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/v8/src/x64/simulator-x64.h +71 -0
- data/ext/v8/upstream/v8/src/x64/stub-cache-x64.cc +3460 -0
- data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.cc +1296 -0
- data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.h +597 -0
- data/ext/v8/upstream/v8/src/zone-inl.h +129 -0
- data/ext/v8/upstream/v8/src/zone.cc +196 -0
- data/ext/v8/upstream/v8/src/zone.h +236 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/codemap.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/csvparser.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/disasm.py +0 -0
- data/ext/v8/upstream/v8/tools/freebsd-tick-processor +10 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/gc-nvp-trace-processor.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/generate-ten-powers.scm +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/grokdump.py +0 -0
- data/ext/v8/upstream/v8/tools/gyp/v8.gyp +844 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/js2c.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/v8/tools/linux-tick-processor +35 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/ll_prof.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/logreader.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/README +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/SConstruct +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/oom_dump/oom_dump.cc +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/profile.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/stats-viewer.py +0 -0
- data/ext/v8/upstream/v8/tools/test.py +1490 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/tickprocessor-driver.js +0 -0
- data/ext/v8/upstream/v8/tools/tickprocessor.js +877 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/utils.py +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/arm.vsprops +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/common.vsprops +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8_arm.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/ia32.vsprops +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/js2c.cmd +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_arm.vcproj +0 -0
- data/ext/v8/upstream/v8/tools/visual_studio/v8_base.vcproj +1308 -0
- data/ext/v8/upstream/v8/tools/visual_studio/v8_base_arm.vcproj +1238 -0
- data/ext/v8/upstream/v8/tools/visual_studio/v8_base_x64.vcproj +1300 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/visual_studio/v8_x64.vcproj +0 -0
- data/ext/v8/upstream/v8/tools/visual_studio/x64.vsprops +18 -0
- data/ext/v8/upstream/{3.1.8 → v8}/tools/windows-tick-processor.bat +0 -0
- data/ext/v8/v8_callbacks.cpp +52 -92
- data/ext/v8/v8_date.cpp +2 -3
- data/ext/v8/v8_object.cpp +4 -0
- data/ext/v8/v8_template.cpp +2 -2
- data/ext/v8/v8_try_catch.cpp +8 -38
- data/lib/v8/version.rb +1 -1
- data/spec/ext/ext_spec_helper.rb +2 -20
- data/spec/ext/object_spec.rb +0 -12
- data/spec/ext/try_catch_spec.rb +29 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/v8/portal/proxies_spec.rb +1 -84
- data/specmem/handle_memspec.rb +41 -0
- data/specmem/object_memspec.rb +16 -0
- data/specmem/proxies_memspec.rb +86 -0
- data/specmem/spec_helper.rb +24 -0
- data/therubyracer.gemspec +7 -2
- metadata +564 -541
- data/ext/v8/upstream/3.1.8/.gitignore +0 -31
- data/ext/v8/upstream/3.1.8/AUTHORS +0 -40
- data/ext/v8/upstream/3.1.8/ChangeLog +0 -2566
- data/ext/v8/upstream/3.1.8/SConstruct +0 -1192
- data/ext/v8/upstream/3.1.8/include/v8-debug.h +0 -384
- data/ext/v8/upstream/3.1.8/include/v8-preparser.h +0 -116
- data/ext/v8/upstream/3.1.8/include/v8-profiler.h +0 -426
- data/ext/v8/upstream/3.1.8/include/v8-testing.h +0 -99
- data/ext/v8/upstream/3.1.8/include/v8.h +0 -3846
- data/ext/v8/upstream/3.1.8/preparser/preparser-process.cc +0 -206
- data/ext/v8/upstream/3.1.8/src/SConscript +0 -356
- data/ext/v8/upstream/3.1.8/src/accessors.cc +0 -907
- data/ext/v8/upstream/3.1.8/src/allocation.cc +0 -204
- data/ext/v8/upstream/3.1.8/src/allocation.h +0 -176
- data/ext/v8/upstream/3.1.8/src/api.cc +0 -5191
- data/ext/v8/upstream/3.1.8/src/api.h +0 -508
- data/ext/v8/upstream/3.1.8/src/apiutils.h +0 -80
- data/ext/v8/upstream/3.1.8/src/arguments.h +0 -105
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm-inl.h +0 -352
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.cc +0 -2756
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.h +0 -1294
- data/ext/v8/upstream/3.1.8/src/arm/builtins-arm.cc +0 -1628
- data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.cc +0 -6783
- data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.h +0 -657
- data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.cc +0 -7403
- data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.h +0 -595
- data/ext/v8/upstream/3.1.8/src/arm/constants-arm.h +0 -769
- data/ext/v8/upstream/3.1.8/src/arm/cpu-arm.cc +0 -147
- data/ext/v8/upstream/3.1.8/src/arm/debug-arm.cc +0 -315
- data/ext/v8/upstream/3.1.8/src/arm/deoptimizer-arm.cc +0 -700
- data/ext/v8/upstream/3.1.8/src/arm/disasm-arm.cc +0 -1439
- data/ext/v8/upstream/3.1.8/src/arm/frames-arm.h +0 -168
- data/ext/v8/upstream/3.1.8/src/arm/full-codegen-arm.cc +0 -4230
- data/ext/v8/upstream/3.1.8/src/arm/ic-arm.cc +0 -1799
- data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.cc +0 -2041
- data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.h +0 -2046
- data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.cc +0 -3822
- data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.h +0 -312
- data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.cc +0 -303
- data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.cc +0 -2701
- data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.h +0 -1015
- data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.cc +0 -1280
- data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.h +0 -252
- data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.cc +0 -3165
- data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.h +0 -402
- data/ext/v8/upstream/3.1.8/src/arm/stub-cache-arm.cc +0 -4077
- data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.cc +0 -843
- data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.h +0 -520
- data/ext/v8/upstream/3.1.8/src/array.js +0 -1231
- data/ext/v8/upstream/3.1.8/src/assembler.cc +0 -973
- data/ext/v8/upstream/3.1.8/src/assembler.h +0 -787
- data/ext/v8/upstream/3.1.8/src/ast-inl.h +0 -107
- data/ext/v8/upstream/3.1.8/src/ast.cc +0 -1067
- data/ext/v8/upstream/3.1.8/src/ast.h +0 -2177
- data/ext/v8/upstream/3.1.8/src/atomicops.h +0 -165
- data/ext/v8/upstream/3.1.8/src/bootstrapper.cc +0 -1888
- data/ext/v8/upstream/3.1.8/src/bootstrapper.h +0 -118
- data/ext/v8/upstream/3.1.8/src/builtins.cc +0 -1586
- data/ext/v8/upstream/3.1.8/src/builtins.h +0 -339
- data/ext/v8/upstream/3.1.8/src/checks.cc +0 -110
- data/ext/v8/upstream/3.1.8/src/checks.h +0 -292
- data/ext/v8/upstream/3.1.8/src/code-stubs.cc +0 -230
- data/ext/v8/upstream/3.1.8/src/code-stubs.h +0 -950
- data/ext/v8/upstream/3.1.8/src/codegen-inl.h +0 -64
- data/ext/v8/upstream/3.1.8/src/codegen.cc +0 -495
- data/ext/v8/upstream/3.1.8/src/codegen.h +0 -245
- data/ext/v8/upstream/3.1.8/src/compilation-cache.cc +0 -654
- data/ext/v8/upstream/3.1.8/src/compilation-cache.h +0 -112
- data/ext/v8/upstream/3.1.8/src/compiler.cc +0 -806
- data/ext/v8/upstream/3.1.8/src/compiler.h +0 -290
- data/ext/v8/upstream/3.1.8/src/contexts.cc +0 -320
- data/ext/v8/upstream/3.1.8/src/contexts.h +0 -376
- data/ext/v8/upstream/3.1.8/src/conversions.cc +0 -1069
- data/ext/v8/upstream/3.1.8/src/counters.cc +0 -78
- data/ext/v8/upstream/3.1.8/src/counters.h +0 -242
- data/ext/v8/upstream/3.1.8/src/cpu-profiler-inl.h +0 -100
- data/ext/v8/upstream/3.1.8/src/cpu-profiler.cc +0 -554
- data/ext/v8/upstream/3.1.8/src/cpu-profiler.h +0 -291
- data/ext/v8/upstream/3.1.8/src/cpu.h +0 -65
- data/ext/v8/upstream/3.1.8/src/d8-debug.cc +0 -367
- data/ext/v8/upstream/3.1.8/src/d8-debug.h +0 -157
- data/ext/v8/upstream/3.1.8/src/d8-posix.cc +0 -693
- data/ext/v8/upstream/3.1.8/src/d8.cc +0 -792
- data/ext/v8/upstream/3.1.8/src/d8.gyp +0 -85
- data/ext/v8/upstream/3.1.8/src/data-flow.h +0 -379
- data/ext/v8/upstream/3.1.8/src/dateparser.h +0 -263
- data/ext/v8/upstream/3.1.8/src/debug-agent.cc +0 -446
- data/ext/v8/upstream/3.1.8/src/debug-agent.h +0 -131
- data/ext/v8/upstream/3.1.8/src/debug.cc +0 -3085
- data/ext/v8/upstream/3.1.8/src/debug.h +0 -1025
- data/ext/v8/upstream/3.1.8/src/deoptimizer.cc +0 -1185
- data/ext/v8/upstream/3.1.8/src/deoptimizer.h +0 -529
- data/ext/v8/upstream/3.1.8/src/disasm.h +0 -77
- data/ext/v8/upstream/3.1.8/src/disassembler.cc +0 -338
- data/ext/v8/upstream/3.1.8/src/execution.cc +0 -735
- data/ext/v8/upstream/3.1.8/src/execution.h +0 -322
- data/ext/v8/upstream/3.1.8/src/extensions/experimental/experimental.gyp +0 -53
- data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.cc +0 -264
- data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.cc +0 -141
- data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.cc +0 -58
- data/ext/v8/upstream/3.1.8/src/factory.cc +0 -1087
- data/ext/v8/upstream/3.1.8/src/factory.h +0 -432
- data/ext/v8/upstream/3.1.8/src/flag-definitions.h +0 -552
- data/ext/v8/upstream/3.1.8/src/frame-element.cc +0 -42
- data/ext/v8/upstream/3.1.8/src/frame-element.h +0 -277
- data/ext/v8/upstream/3.1.8/src/frames-inl.h +0 -210
- data/ext/v8/upstream/3.1.8/src/frames.cc +0 -1232
- data/ext/v8/upstream/3.1.8/src/frames.h +0 -826
- data/ext/v8/upstream/3.1.8/src/full-codegen.cc +0 -1382
- data/ext/v8/upstream/3.1.8/src/full-codegen.h +0 -751
- data/ext/v8/upstream/3.1.8/src/func-name-inferrer.cc +0 -90
- data/ext/v8/upstream/3.1.8/src/func-name-inferrer.h +0 -111
- data/ext/v8/upstream/3.1.8/src/gdb-jit.cc +0 -1547
- data/ext/v8/upstream/3.1.8/src/global-handles.cc +0 -534
- data/ext/v8/upstream/3.1.8/src/global-handles.h +0 -181
- data/ext/v8/upstream/3.1.8/src/globals.h +0 -325
- data/ext/v8/upstream/3.1.8/src/handles-inl.h +0 -80
- data/ext/v8/upstream/3.1.8/src/handles.cc +0 -910
- data/ext/v8/upstream/3.1.8/src/handles.h +0 -424
- data/ext/v8/upstream/3.1.8/src/hashmap.h +0 -121
- data/ext/v8/upstream/3.1.8/src/heap-inl.h +0 -587
- data/ext/v8/upstream/3.1.8/src/heap-profiler.cc +0 -1128
- data/ext/v8/upstream/3.1.8/src/heap-profiler.h +0 -381
- data/ext/v8/upstream/3.1.8/src/heap.cc +0 -5610
- data/ext/v8/upstream/3.1.8/src/heap.h +0 -2218
- data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.cc +0 -1490
- data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.h +0 -3493
- data/ext/v8/upstream/3.1.8/src/hydrogen.cc +0 -6056
- data/ext/v8/upstream/3.1.8/src/hydrogen.h +0 -1091
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32-inl.h +0 -429
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.cc +0 -2800
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.h +0 -1093
- data/ext/v8/upstream/3.1.8/src/ia32/builtins-ia32.cc +0 -1590
- data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.cc +0 -6624
- data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.h +0 -536
- data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.cc +0 -10354
- data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.h +0 -798
- data/ext/v8/upstream/3.1.8/src/ia32/cpu-ia32.cc +0 -87
- data/ext/v8/upstream/3.1.8/src/ia32/debug-ia32.cc +0 -309
- data/ext/v8/upstream/3.1.8/src/ia32/deoptimizer-ia32.cc +0 -664
- data/ext/v8/upstream/3.1.8/src/ia32/disasm-ia32.cc +0 -1597
- data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.h +0 -140
- data/ext/v8/upstream/3.1.8/src/ia32/full-codegen-ia32.cc +0 -4278
- data/ext/v8/upstream/3.1.8/src/ia32/ic-ia32.cc +0 -1786
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.cc +0 -3880
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.h +0 -309
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.cc +0 -460
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.cc +0 -2095
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.h +0 -2127
- data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.cc +0 -2031
- data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.h +0 -798
- data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.cc +0 -1253
- data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.h +0 -215
- data/ext/v8/upstream/3.1.8/src/ia32/register-allocator-ia32.cc +0 -157
- data/ext/v8/upstream/3.1.8/src/ia32/simulator-ia32.h +0 -72
- data/ext/v8/upstream/3.1.8/src/ia32/stub-cache-ia32.cc +0 -3732
- data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.cc +0 -1360
- data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.h +0 -646
- data/ext/v8/upstream/3.1.8/src/ic-inl.h +0 -129
- data/ext/v8/upstream/3.1.8/src/ic.cc +0 -2333
- data/ext/v8/upstream/3.1.8/src/ic.h +0 -639
- data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.cc +0 -655
- data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.h +0 -48
- data/ext/v8/upstream/3.1.8/src/json.js +0 -342
- data/ext/v8/upstream/3.1.8/src/jsregexp.cc +0 -5340
- data/ext/v8/upstream/3.1.8/src/jsregexp.h +0 -1484
- data/ext/v8/upstream/3.1.8/src/jump-target-heavy.cc +0 -430
- data/ext/v8/upstream/3.1.8/src/jump-target-heavy.h +0 -244
- data/ext/v8/upstream/3.1.8/src/jump-target-inl.h +0 -48
- data/ext/v8/upstream/3.1.8/src/jump-target-light.cc +0 -111
- data/ext/v8/upstream/3.1.8/src/lithium-allocator-inl.h +0 -140
- data/ext/v8/upstream/3.1.8/src/lithium-allocator.cc +0 -2093
- data/ext/v8/upstream/3.1.8/src/lithium-allocator.h +0 -644
- data/ext/v8/upstream/3.1.8/src/lithium.cc +0 -168
- data/ext/v8/upstream/3.1.8/src/liveedit.cc +0 -1650
- data/ext/v8/upstream/3.1.8/src/liveedit.h +0 -174
- data/ext/v8/upstream/3.1.8/src/liveobjectlist.cc +0 -2527
- data/ext/v8/upstream/3.1.8/src/liveobjectlist.h +0 -322
- data/ext/v8/upstream/3.1.8/src/log-utils.cc +0 -336
- data/ext/v8/upstream/3.1.8/src/log-utils.h +0 -232
- data/ext/v8/upstream/3.1.8/src/log.cc +0 -1608
- data/ext/v8/upstream/3.1.8/src/log.h +0 -379
- data/ext/v8/upstream/3.1.8/src/mark-compact.cc +0 -2957
- data/ext/v8/upstream/3.1.8/src/mark-compact.h +0 -433
- data/ext/v8/upstream/3.1.8/src/messages.cc +0 -164
- data/ext/v8/upstream/3.1.8/src/messages.js +0 -1071
- data/ext/v8/upstream/3.1.8/src/mips/assembler-mips-inl.h +0 -215
- data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.cc +0 -1219
- data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.h +0 -667
- data/ext/v8/upstream/3.1.8/src/mips/builtins-mips.cc +0 -205
- data/ext/v8/upstream/3.1.8/src/mips/codegen-mips-inl.h +0 -70
- data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.cc +0 -1437
- data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.h +0 -431
- data/ext/v8/upstream/3.1.8/src/mips/constants-mips.cc +0 -328
- data/ext/v8/upstream/3.1.8/src/mips/constants-mips.h +0 -525
- data/ext/v8/upstream/3.1.8/src/mips/cpu-mips.cc +0 -73
- data/ext/v8/upstream/3.1.8/src/mips/debug-mips.cc +0 -127
- data/ext/v8/upstream/3.1.8/src/mips/disasm-mips.cc +0 -787
- data/ext/v8/upstream/3.1.8/src/mips/fast-codegen-mips.cc +0 -77
- data/ext/v8/upstream/3.1.8/src/mips/frames-mips.cc +0 -96
- data/ext/v8/upstream/3.1.8/src/mips/frames-mips.h +0 -164
- data/ext/v8/upstream/3.1.8/src/mips/full-codegen-mips.cc +0 -277
- data/ext/v8/upstream/3.1.8/src/mips/ic-mips.cc +0 -208
- data/ext/v8/upstream/3.1.8/src/mips/jump-target-mips.cc +0 -175
- data/ext/v8/upstream/3.1.8/src/mips/macro-assembler-mips.cc +0 -1326
- data/ext/v8/upstream/3.1.8/src/mips/macro-assembler-mips.h +0 -461
- data/ext/v8/upstream/3.1.8/src/mips/register-allocator-mips-inl.h +0 -137
- data/ext/v8/upstream/3.1.8/src/mips/register-allocator-mips.h +0 -46
- data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.cc +0 -1650
- data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.h +0 -311
- data/ext/v8/upstream/3.1.8/src/mips/stub-cache-mips.cc +0 -418
- data/ext/v8/upstream/3.1.8/src/mips/virtual-frame-mips.cc +0 -319
- data/ext/v8/upstream/3.1.8/src/mips/virtual-frame-mips.h +0 -548
- data/ext/v8/upstream/3.1.8/src/mirror-debugger.js +0 -2380
- data/ext/v8/upstream/3.1.8/src/mksnapshot.cc +0 -256
- data/ext/v8/upstream/3.1.8/src/objects-debug.cc +0 -722
- data/ext/v8/upstream/3.1.8/src/objects-inl.h +0 -3946
- data/ext/v8/upstream/3.1.8/src/objects-printer.cc +0 -801
- data/ext/v8/upstream/3.1.8/src/objects-visiting.cc +0 -142
- data/ext/v8/upstream/3.1.8/src/objects-visiting.h +0 -401
- data/ext/v8/upstream/3.1.8/src/objects.cc +0 -10044
- data/ext/v8/upstream/3.1.8/src/objects.h +0 -6571
- data/ext/v8/upstream/3.1.8/src/parser.cc +0 -5165
- data/ext/v8/upstream/3.1.8/src/parser.h +0 -802
- data/ext/v8/upstream/3.1.8/src/platform-cygwin.cc +0 -745
- data/ext/v8/upstream/3.1.8/src/platform-freebsd.cc +0 -702
- data/ext/v8/upstream/3.1.8/src/platform-linux.cc +0 -981
- data/ext/v8/upstream/3.1.8/src/platform-macos.cc +0 -732
- data/ext/v8/upstream/3.1.8/src/platform-nullos.cc +0 -498
- data/ext/v8/upstream/3.1.8/src/platform-openbsd.cc +0 -657
- data/ext/v8/upstream/3.1.8/src/platform-posix.cc +0 -399
- data/ext/v8/upstream/3.1.8/src/platform-solaris.cc +0 -714
- data/ext/v8/upstream/3.1.8/src/platform-win32.cc +0 -1974
- data/ext/v8/upstream/3.1.8/src/platform.h +0 -636
- data/ext/v8/upstream/3.1.8/src/preparse-data.cc +0 -183
- data/ext/v8/upstream/3.1.8/src/preparser-api.cc +0 -213
- data/ext/v8/upstream/3.1.8/src/preparser.cc +0 -1205
- data/ext/v8/upstream/3.1.8/src/prettyprinter.cc +0 -1539
- data/ext/v8/upstream/3.1.8/src/prettyprinter.h +0 -223
- data/ext/v8/upstream/3.1.8/src/profile-generator.cc +0 -2899
- data/ext/v8/upstream/3.1.8/src/profile-generator.h +0 -1151
- data/ext/v8/upstream/3.1.8/src/property.cc +0 -96
- data/ext/v8/upstream/3.1.8/src/property.h +0 -337
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.cc +0 -470
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.cc +0 -257
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.h +0 -231
- data/ext/v8/upstream/3.1.8/src/regexp-stack.cc +0 -103
- data/ext/v8/upstream/3.1.8/src/regexp-stack.h +0 -123
- data/ext/v8/upstream/3.1.8/src/regexp.js +0 -483
- data/ext/v8/upstream/3.1.8/src/register-allocator-inl.h +0 -141
- data/ext/v8/upstream/3.1.8/src/register-allocator.cc +0 -104
- data/ext/v8/upstream/3.1.8/src/register-allocator.h +0 -320
- data/ext/v8/upstream/3.1.8/src/rewriter.cc +0 -1023
- data/ext/v8/upstream/3.1.8/src/runtime-profiler.cc +0 -443
- data/ext/v8/upstream/3.1.8/src/runtime-profiler.h +0 -77
- data/ext/v8/upstream/3.1.8/src/runtime.cc +0 -11592
- data/ext/v8/upstream/3.1.8/src/runtime.h +0 -582
- data/ext/v8/upstream/3.1.8/src/safepoint-table.cc +0 -253
- data/ext/v8/upstream/3.1.8/src/safepoint-table.h +0 -263
- data/ext/v8/upstream/3.1.8/src/scanner-base.cc +0 -971
- data/ext/v8/upstream/3.1.8/src/scanner-base.h +0 -653
- data/ext/v8/upstream/3.1.8/src/scanner.cc +0 -586
- data/ext/v8/upstream/3.1.8/src/scanner.h +0 -194
- data/ext/v8/upstream/3.1.8/src/scopeinfo.cc +0 -636
- data/ext/v8/upstream/3.1.8/src/scopeinfo.h +0 -238
- data/ext/v8/upstream/3.1.8/src/scopes.cc +0 -1063
- data/ext/v8/upstream/3.1.8/src/scopes.h +0 -494
- data/ext/v8/upstream/3.1.8/src/serialize.cc +0 -1535
- data/ext/v8/upstream/3.1.8/src/serialize.h +0 -584
- data/ext/v8/upstream/3.1.8/src/snapshot-common.cc +0 -82
- data/ext/v8/upstream/3.1.8/src/snapshot.h +0 -71
- data/ext/v8/upstream/3.1.8/src/spaces-inl.h +0 -524
- data/ext/v8/upstream/3.1.8/src/spaces.cc +0 -3254
- data/ext/v8/upstream/3.1.8/src/spaces.h +0 -2362
- data/ext/v8/upstream/3.1.8/src/string-search.cc +0 -40
- data/ext/v8/upstream/3.1.8/src/string-search.h +0 -567
- data/ext/v8/upstream/3.1.8/src/string-stream.cc +0 -584
- data/ext/v8/upstream/3.1.8/src/string.js +0 -915
- data/ext/v8/upstream/3.1.8/src/stub-cache.cc +0 -1878
- data/ext/v8/upstream/3.1.8/src/stub-cache.h +0 -849
- data/ext/v8/upstream/3.1.8/src/token.cc +0 -63
- data/ext/v8/upstream/3.1.8/src/token.h +0 -288
- data/ext/v8/upstream/3.1.8/src/top.cc +0 -1152
- data/ext/v8/upstream/3.1.8/src/top.h +0 -608
- data/ext/v8/upstream/3.1.8/src/type-info.cc +0 -406
- data/ext/v8/upstream/3.1.8/src/type-info.h +0 -283
- data/ext/v8/upstream/3.1.8/src/unicode.cc +0 -1624
- data/ext/v8/upstream/3.1.8/src/unicode.h +0 -280
- data/ext/v8/upstream/3.1.8/src/utils.h +0 -793
- data/ext/v8/upstream/3.1.8/src/v8-counters.cc +0 -55
- data/ext/v8/upstream/3.1.8/src/v8-counters.h +0 -290
- data/ext/v8/upstream/3.1.8/src/v8.cc +0 -270
- data/ext/v8/upstream/3.1.8/src/v8.h +0 -127
- data/ext/v8/upstream/3.1.8/src/v8globals.h +0 -480
- data/ext/v8/upstream/3.1.8/src/v8natives.js +0 -1252
- data/ext/v8/upstream/3.1.8/src/v8threads.cc +0 -440
- data/ext/v8/upstream/3.1.8/src/v8threads.h +0 -157
- data/ext/v8/upstream/3.1.8/src/v8utils.h +0 -354
- data/ext/v8/upstream/3.1.8/src/variables.h +0 -212
- data/ext/v8/upstream/3.1.8/src/version.cc +0 -95
- data/ext/v8/upstream/3.1.8/src/version.h +0 -64
- data/ext/v8/upstream/3.1.8/src/virtual-frame-light-inl.h +0 -170
- data/ext/v8/upstream/3.1.8/src/vm-state-inl.h +0 -134
- data/ext/v8/upstream/3.1.8/src/vm-state.h +0 -68
- data/ext/v8/upstream/3.1.8/src/win32-headers.h +0 -95
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64-inl.h +0 -455
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.cc +0 -3162
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.h +0 -1584
- data/ext/v8/upstream/3.1.8/src/x64/builtins-x64.cc +0 -1492
- data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.cc +0 -5150
- data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.h +0 -519
- data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.cc +0 -8835
- data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.h +0 -750
- data/ext/v8/upstream/3.1.8/src/x64/cpu-x64.cc +0 -86
- data/ext/v8/upstream/3.1.8/src/x64/debug-x64.cc +0 -316
- data/ext/v8/upstream/3.1.8/src/x64/deoptimizer-x64.cc +0 -781
- data/ext/v8/upstream/3.1.8/src/x64/disasm-x64.cc +0 -1737
- data/ext/v8/upstream/3.1.8/src/x64/frames-x64.h +0 -130
- data/ext/v8/upstream/3.1.8/src/x64/full-codegen-x64.cc +0 -3984
- data/ext/v8/upstream/3.1.8/src/x64/ic-x64.cc +0 -1761
- data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.cc +0 -3639
- data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.h +0 -305
- data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.cc +0 -2044
- data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.h +0 -2052
- data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.cc +0 -2660
- data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.h +0 -1852
- data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.cc +0 -1382
- data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.h +0 -278
- data/ext/v8/upstream/3.1.8/src/x64/register-allocator-x64-inl.h +0 -87
- data/ext/v8/upstream/3.1.8/src/x64/register-allocator-x64.cc +0 -91
- data/ext/v8/upstream/3.1.8/src/x64/simulator-x64.h +0 -71
- data/ext/v8/upstream/3.1.8/src/x64/stub-cache-x64.cc +0 -3509
- data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.cc +0 -1292
- data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.h +0 -593
- data/ext/v8/upstream/3.1.8/src/zone-inl.h +0 -83
- data/ext/v8/upstream/3.1.8/src/zone.cc +0 -195
- data/ext/v8/upstream/3.1.8/src/zone.h +0 -233
- data/ext/v8/upstream/3.1.8/tools/gyp/v8.gyp +0 -869
- data/ext/v8/upstream/3.1.8/tools/linux-tick-processor +0 -33
- data/ext/v8/upstream/3.1.8/tools/tickprocessor.js +0 -863
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base.vcproj +0 -1296
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_arm.vcproj +0 -1234
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_x64.vcproj +0 -1296
- data/ext/v8/upstream/3.1.8/tools/visual_studio/x64.vsprops +0 -17
- data/spec/ext/mem_spec.rb +0 -42
@@ -1,77 +0,0 @@
|
|
1
|
-
// Copyright 2007-2008 the V8 project authors. All rights reserved.
|
2
|
-
// Redistribution and use in source and binary forms, with or without
|
3
|
-
// modification, are permitted provided that the following conditions are
|
4
|
-
// met:
|
5
|
-
//
|
6
|
-
// * Redistributions of source code must retain the above copyright
|
7
|
-
// notice, this list of conditions and the following disclaimer.
|
8
|
-
// * Redistributions in binary form must reproduce the above
|
9
|
-
// copyright notice, this list of conditions and the following
|
10
|
-
// disclaimer in the documentation and/or other materials provided
|
11
|
-
// with the distribution.
|
12
|
-
// * Neither the name of Google Inc. nor the names of its
|
13
|
-
// contributors may be used to endorse or promote products derived
|
14
|
-
// from this software without specific prior written permission.
|
15
|
-
//
|
16
|
-
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
-
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
-
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
-
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
-
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
-
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
|
28
|
-
#ifndef V8_DISASM_H_
|
29
|
-
#define V8_DISASM_H_
|
30
|
-
|
31
|
-
namespace disasm {
|
32
|
-
|
33
|
-
typedef unsigned char byte;
|
34
|
-
|
35
|
-
// Interface and default implementation for converting addresses and
|
36
|
-
// register-numbers to text. The default implementation is machine
|
37
|
-
// specific.
|
38
|
-
class NameConverter {
|
39
|
-
public:
|
40
|
-
virtual ~NameConverter() {}
|
41
|
-
virtual const char* NameOfCPURegister(int reg) const;
|
42
|
-
virtual const char* NameOfByteCPURegister(int reg) const;
|
43
|
-
virtual const char* NameOfXMMRegister(int reg) const;
|
44
|
-
virtual const char* NameOfAddress(byte* addr) const;
|
45
|
-
virtual const char* NameOfConstant(byte* addr) const;
|
46
|
-
virtual const char* NameInCode(byte* addr) const;
|
47
|
-
};
|
48
|
-
|
49
|
-
|
50
|
-
// A generic Disassembler interface
|
51
|
-
class Disassembler {
|
52
|
-
public:
|
53
|
-
// Caller deallocates converter.
|
54
|
-
explicit Disassembler(const NameConverter& converter);
|
55
|
-
|
56
|
-
virtual ~Disassembler();
|
57
|
-
|
58
|
-
// Writes one disassembled instruction into 'buffer' (0-terminated).
|
59
|
-
// Returns the length of the disassembled machine instruction in bytes.
|
60
|
-
int InstructionDecode(v8::internal::Vector<char> buffer, byte* instruction);
|
61
|
-
|
62
|
-
// Returns -1 if instruction does not mark the beginning of a constant pool,
|
63
|
-
// or the number of entries in the constant pool beginning here.
|
64
|
-
int ConstantPoolSizeAt(byte* instruction);
|
65
|
-
|
66
|
-
// Write disassembly into specified file 'f' using specified NameConverter
|
67
|
-
// (see constructor).
|
68
|
-
static void Disassemble(FILE* f, byte* begin, byte* end);
|
69
|
-
private:
|
70
|
-
const NameConverter& converter_;
|
71
|
-
|
72
|
-
DISALLOW_IMPLICIT_CONSTRUCTORS(Disassembler);
|
73
|
-
};
|
74
|
-
|
75
|
-
} // namespace disasm
|
76
|
-
|
77
|
-
#endif // V8_DISASM_H_
|
@@ -1,338 +0,0 @@
|
|
1
|
-
// Copyright 2011 the V8 project authors. All rights reserved.
|
2
|
-
// Redistribution and use in source and binary forms, with or without
|
3
|
-
// modification, are permitted provided that the following conditions are
|
4
|
-
// met:
|
5
|
-
//
|
6
|
-
// * Redistributions of source code must retain the above copyright
|
7
|
-
// notice, this list of conditions and the following disclaimer.
|
8
|
-
// * Redistributions in binary form must reproduce the above
|
9
|
-
// copyright notice, this list of conditions and the following
|
10
|
-
// disclaimer in the documentation and/or other materials provided
|
11
|
-
// with the distribution.
|
12
|
-
// * Neither the name of Google Inc. nor the names of its
|
13
|
-
// contributors may be used to endorse or promote products derived
|
14
|
-
// from this software without specific prior written permission.
|
15
|
-
//
|
16
|
-
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
-
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
-
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
-
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
-
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
-
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
|
28
|
-
#include "v8.h"
|
29
|
-
|
30
|
-
#include "code-stubs.h"
|
31
|
-
#include "codegen-inl.h"
|
32
|
-
#include "debug.h"
|
33
|
-
#include "deoptimizer.h"
|
34
|
-
#include "disasm.h"
|
35
|
-
#include "disassembler.h"
|
36
|
-
#include "macro-assembler.h"
|
37
|
-
#include "serialize.h"
|
38
|
-
#include "string-stream.h"
|
39
|
-
|
40
|
-
namespace v8 {
|
41
|
-
namespace internal {
|
42
|
-
|
43
|
-
#ifdef ENABLE_DISASSEMBLER
|
44
|
-
|
45
|
-
void Disassembler::Dump(FILE* f, byte* begin, byte* end) {
|
46
|
-
for (byte* pc = begin; pc < end; pc++) {
|
47
|
-
if (f == NULL) {
|
48
|
-
PrintF("%" V8PRIxPTR " %4" V8PRIdPTR " %02x\n",
|
49
|
-
reinterpret_cast<intptr_t>(pc),
|
50
|
-
pc - begin,
|
51
|
-
*pc);
|
52
|
-
} else {
|
53
|
-
fprintf(f, "%" V8PRIxPTR " %4" V8PRIdPTR " %02x\n",
|
54
|
-
reinterpret_cast<uintptr_t>(pc), pc - begin, *pc);
|
55
|
-
}
|
56
|
-
}
|
57
|
-
}
|
58
|
-
|
59
|
-
|
60
|
-
class V8NameConverter: public disasm::NameConverter {
|
61
|
-
public:
|
62
|
-
explicit V8NameConverter(Code* code) : code_(code) {}
|
63
|
-
virtual const char* NameOfAddress(byte* pc) const;
|
64
|
-
virtual const char* NameInCode(byte* addr) const;
|
65
|
-
Code* code() const { return code_; }
|
66
|
-
private:
|
67
|
-
Code* code_;
|
68
|
-
};
|
69
|
-
|
70
|
-
|
71
|
-
const char* V8NameConverter::NameOfAddress(byte* pc) const {
|
72
|
-
static v8::internal::EmbeddedVector<char, 128> buffer;
|
73
|
-
|
74
|
-
const char* name = Builtins::Lookup(pc);
|
75
|
-
if (name != NULL) {
|
76
|
-
OS::SNPrintF(buffer, "%s (%p)", name, pc);
|
77
|
-
return buffer.start();
|
78
|
-
}
|
79
|
-
|
80
|
-
if (code_ != NULL) {
|
81
|
-
int offs = static_cast<int>(pc - code_->instruction_start());
|
82
|
-
// print as code offset, if it seems reasonable
|
83
|
-
if (0 <= offs && offs < code_->instruction_size()) {
|
84
|
-
OS::SNPrintF(buffer, "%d (%p)", offs, pc);
|
85
|
-
return buffer.start();
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
return disasm::NameConverter::NameOfAddress(pc);
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
const char* V8NameConverter::NameInCode(byte* addr) const {
|
94
|
-
// The V8NameConverter is used for well known code, so we can "safely"
|
95
|
-
// dereference pointers in generated code.
|
96
|
-
return (code_ != NULL) ? reinterpret_cast<const char*>(addr) : "";
|
97
|
-
}
|
98
|
-
|
99
|
-
|
100
|
-
static void DumpBuffer(FILE* f, char* buff) {
|
101
|
-
if (f == NULL) {
|
102
|
-
PrintF("%s", buff);
|
103
|
-
} else {
|
104
|
-
fprintf(f, "%s", buff);
|
105
|
-
}
|
106
|
-
}
|
107
|
-
|
108
|
-
static const int kOutBufferSize = 2048 + String::kMaxShortPrintLength;
|
109
|
-
static const int kRelocInfoPosition = 57;
|
110
|
-
|
111
|
-
static int DecodeIt(FILE* f,
|
112
|
-
const V8NameConverter& converter,
|
113
|
-
byte* begin,
|
114
|
-
byte* end) {
|
115
|
-
NoHandleAllocation ha;
|
116
|
-
AssertNoAllocation no_alloc;
|
117
|
-
ExternalReferenceEncoder ref_encoder;
|
118
|
-
|
119
|
-
v8::internal::EmbeddedVector<char, 128> decode_buffer;
|
120
|
-
v8::internal::EmbeddedVector<char, kOutBufferSize> out_buffer;
|
121
|
-
byte* pc = begin;
|
122
|
-
disasm::Disassembler d(converter);
|
123
|
-
RelocIterator* it = NULL;
|
124
|
-
if (converter.code() != NULL) {
|
125
|
-
it = new RelocIterator(converter.code());
|
126
|
-
} else {
|
127
|
-
// No relocation information when printing code stubs.
|
128
|
-
}
|
129
|
-
int constants = -1; // no constants being decoded at the start
|
130
|
-
|
131
|
-
while (pc < end) {
|
132
|
-
// First decode instruction so that we know its length.
|
133
|
-
byte* prev_pc = pc;
|
134
|
-
if (constants > 0) {
|
135
|
-
OS::SNPrintF(decode_buffer,
|
136
|
-
"%08x constant",
|
137
|
-
*reinterpret_cast<int32_t*>(pc));
|
138
|
-
constants--;
|
139
|
-
pc += 4;
|
140
|
-
} else {
|
141
|
-
int num_const = d.ConstantPoolSizeAt(pc);
|
142
|
-
if (num_const >= 0) {
|
143
|
-
OS::SNPrintF(decode_buffer,
|
144
|
-
"%08x constant pool begin",
|
145
|
-
*reinterpret_cast<int32_t*>(pc));
|
146
|
-
constants = num_const;
|
147
|
-
pc += 4;
|
148
|
-
} else if (it != NULL && !it->done() && it->rinfo()->pc() == pc &&
|
149
|
-
it->rinfo()->rmode() == RelocInfo::INTERNAL_REFERENCE) {
|
150
|
-
// raw pointer embedded in code stream, e.g., jump table
|
151
|
-
byte* ptr = *reinterpret_cast<byte**>(pc);
|
152
|
-
OS::SNPrintF(decode_buffer,
|
153
|
-
"%08" V8PRIxPTR " jump table entry %4" V8PRIdPTR,
|
154
|
-
ptr,
|
155
|
-
ptr - begin);
|
156
|
-
pc += 4;
|
157
|
-
} else {
|
158
|
-
decode_buffer[0] = '\0';
|
159
|
-
pc += d.InstructionDecode(decode_buffer, pc);
|
160
|
-
}
|
161
|
-
}
|
162
|
-
|
163
|
-
// Collect RelocInfo for this instruction (prev_pc .. pc-1)
|
164
|
-
List<const char*> comments(4);
|
165
|
-
List<byte*> pcs(1);
|
166
|
-
List<RelocInfo::Mode> rmodes(1);
|
167
|
-
List<intptr_t> datas(1);
|
168
|
-
if (it != NULL) {
|
169
|
-
while (!it->done() && it->rinfo()->pc() < pc) {
|
170
|
-
if (RelocInfo::IsComment(it->rinfo()->rmode())) {
|
171
|
-
// For comments just collect the text.
|
172
|
-
comments.Add(reinterpret_cast<const char*>(it->rinfo()->data()));
|
173
|
-
} else {
|
174
|
-
// For other reloc info collect all data.
|
175
|
-
pcs.Add(it->rinfo()->pc());
|
176
|
-
rmodes.Add(it->rinfo()->rmode());
|
177
|
-
datas.Add(it->rinfo()->data());
|
178
|
-
}
|
179
|
-
it->next();
|
180
|
-
}
|
181
|
-
}
|
182
|
-
|
183
|
-
StringBuilder out(out_buffer.start(), out_buffer.length());
|
184
|
-
|
185
|
-
// Comments.
|
186
|
-
for (int i = 0; i < comments.length(); i++) {
|
187
|
-
out.AddFormatted(" %s\n", comments[i]);
|
188
|
-
}
|
189
|
-
|
190
|
-
// Write out comments, resets outp so that we can format the next line.
|
191
|
-
DumpBuffer(f, out.Finalize());
|
192
|
-
out.Reset();
|
193
|
-
|
194
|
-
// Instruction address and instruction offset.
|
195
|
-
out.AddFormatted("%p %4d ", prev_pc, prev_pc - begin);
|
196
|
-
|
197
|
-
// Instruction.
|
198
|
-
out.AddFormatted("%s", decode_buffer.start());
|
199
|
-
|
200
|
-
// Print all the reloc info for this instruction which are not comments.
|
201
|
-
for (int i = 0; i < pcs.length(); i++) {
|
202
|
-
// Put together the reloc info
|
203
|
-
RelocInfo relocinfo(pcs[i], rmodes[i], datas[i]);
|
204
|
-
|
205
|
-
// Indent the printing of the reloc info.
|
206
|
-
if (i == 0) {
|
207
|
-
// The first reloc info is printed after the disassembled instruction.
|
208
|
-
out.AddPadding(' ', kRelocInfoPosition - out.position());
|
209
|
-
} else {
|
210
|
-
// Additional reloc infos are printed on separate lines.
|
211
|
-
out.AddFormatted("\n");
|
212
|
-
out.AddPadding(' ', kRelocInfoPosition);
|
213
|
-
}
|
214
|
-
|
215
|
-
RelocInfo::Mode rmode = relocinfo.rmode();
|
216
|
-
if (RelocInfo::IsPosition(rmode)) {
|
217
|
-
if (RelocInfo::IsStatementPosition(rmode)) {
|
218
|
-
out.AddFormatted(" ;; debug: statement %d", relocinfo.data());
|
219
|
-
} else {
|
220
|
-
out.AddFormatted(" ;; debug: position %d", relocinfo.data());
|
221
|
-
}
|
222
|
-
} else if (rmode == RelocInfo::EMBEDDED_OBJECT) {
|
223
|
-
HeapStringAllocator allocator;
|
224
|
-
StringStream accumulator(&allocator);
|
225
|
-
relocinfo.target_object()->ShortPrint(&accumulator);
|
226
|
-
SmartPointer<const char> obj_name = accumulator.ToCString();
|
227
|
-
out.AddFormatted(" ;; object: %s", *obj_name);
|
228
|
-
} else if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
|
229
|
-
const char* reference_name =
|
230
|
-
ref_encoder.NameOfAddress(*relocinfo.target_reference_address());
|
231
|
-
out.AddFormatted(" ;; external reference (%s)", reference_name);
|
232
|
-
} else if (RelocInfo::IsCodeTarget(rmode)) {
|
233
|
-
out.AddFormatted(" ;; code:");
|
234
|
-
if (rmode == RelocInfo::CONSTRUCT_CALL) {
|
235
|
-
out.AddFormatted(" constructor,");
|
236
|
-
}
|
237
|
-
Code* code = Code::GetCodeFromTargetAddress(relocinfo.target_address());
|
238
|
-
Code::Kind kind = code->kind();
|
239
|
-
if (code->is_inline_cache_stub()) {
|
240
|
-
if (rmode == RelocInfo::CODE_TARGET_CONTEXT) {
|
241
|
-
out.AddFormatted(" contextual,");
|
242
|
-
}
|
243
|
-
InlineCacheState ic_state = code->ic_state();
|
244
|
-
out.AddFormatted(" %s, %s", Code::Kind2String(kind),
|
245
|
-
Code::ICState2String(ic_state));
|
246
|
-
if (ic_state == MONOMORPHIC) {
|
247
|
-
PropertyType type = code->type();
|
248
|
-
out.AddFormatted(", %s", Code::PropertyType2String(type));
|
249
|
-
}
|
250
|
-
if (code->ic_in_loop() == IN_LOOP) {
|
251
|
-
out.AddFormatted(", in_loop");
|
252
|
-
}
|
253
|
-
if (kind == Code::CALL_IC || kind == Code::KEYED_CALL_IC) {
|
254
|
-
out.AddFormatted(", argc = %d", code->arguments_count());
|
255
|
-
}
|
256
|
-
} else if (kind == Code::STUB) {
|
257
|
-
// Reverse lookup required as the minor key cannot be retrieved
|
258
|
-
// from the code object.
|
259
|
-
Object* obj = Heap::code_stubs()->SlowReverseLookup(code);
|
260
|
-
if (obj != Heap::undefined_value()) {
|
261
|
-
ASSERT(obj->IsSmi());
|
262
|
-
// Get the STUB key and extract major and minor key.
|
263
|
-
uint32_t key = Smi::cast(obj)->value();
|
264
|
-
uint32_t minor_key = CodeStub::MinorKeyFromKey(key);
|
265
|
-
CodeStub::Major major_key = CodeStub::GetMajorKey(code);
|
266
|
-
ASSERT(major_key == CodeStub::MajorKeyFromKey(key));
|
267
|
-
out.AddFormatted(" %s, %s, ",
|
268
|
-
Code::Kind2String(kind),
|
269
|
-
CodeStub::MajorName(major_key, false));
|
270
|
-
switch (major_key) {
|
271
|
-
case CodeStub::CallFunction: {
|
272
|
-
int argc =
|
273
|
-
CallFunctionStub::ExtractArgcFromMinorKey(minor_key);
|
274
|
-
out.AddFormatted("argc = %d", argc);
|
275
|
-
break;
|
276
|
-
}
|
277
|
-
default:
|
278
|
-
out.AddFormatted("minor: %d", minor_key);
|
279
|
-
}
|
280
|
-
}
|
281
|
-
} else {
|
282
|
-
out.AddFormatted(" %s", Code::Kind2String(kind));
|
283
|
-
}
|
284
|
-
} else if (rmode == RelocInfo::RUNTIME_ENTRY) {
|
285
|
-
// A runtime entry reloinfo might be a deoptimization bailout.
|
286
|
-
Address addr = relocinfo.target_address();
|
287
|
-
int id = Deoptimizer::GetDeoptimizationId(addr, Deoptimizer::EAGER);
|
288
|
-
if (id == Deoptimizer::kNotDeoptimizationEntry) {
|
289
|
-
out.AddFormatted(" ;; %s", RelocInfo::RelocModeName(rmode));
|
290
|
-
} else {
|
291
|
-
out.AddFormatted(" ;; deoptimization bailout %d", id);
|
292
|
-
}
|
293
|
-
} else {
|
294
|
-
out.AddFormatted(" ;; %s", RelocInfo::RelocModeName(rmode));
|
295
|
-
}
|
296
|
-
}
|
297
|
-
out.AddString("\n");
|
298
|
-
DumpBuffer(f, out.Finalize());
|
299
|
-
out.Reset();
|
300
|
-
}
|
301
|
-
|
302
|
-
delete it;
|
303
|
-
return static_cast<int>(pc - begin);
|
304
|
-
}
|
305
|
-
|
306
|
-
|
307
|
-
int Disassembler::Decode(FILE* f, byte* begin, byte* end) {
|
308
|
-
V8NameConverter defaultConverter(NULL);
|
309
|
-
return DecodeIt(f, defaultConverter, begin, end);
|
310
|
-
}
|
311
|
-
|
312
|
-
|
313
|
-
// Called by Code::CodePrint.
|
314
|
-
void Disassembler::Decode(FILE* f, Code* code) {
|
315
|
-
int decode_size = (code->kind() == Code::OPTIMIZED_FUNCTION)
|
316
|
-
? static_cast<int>(code->safepoint_table_offset())
|
317
|
-
: code->instruction_size();
|
318
|
-
// If there might be a stack check table, stop before reaching it.
|
319
|
-
if (code->kind() == Code::FUNCTION) {
|
320
|
-
decode_size =
|
321
|
-
Min(decode_size, static_cast<int>(code->stack_check_table_offset()));
|
322
|
-
}
|
323
|
-
|
324
|
-
byte* begin = code->instruction_start();
|
325
|
-
byte* end = begin + decode_size;
|
326
|
-
V8NameConverter v8NameConverter(code);
|
327
|
-
DecodeIt(f, v8NameConverter, begin, end);
|
328
|
-
}
|
329
|
-
|
330
|
-
#else // ENABLE_DISASSEMBLER
|
331
|
-
|
332
|
-
void Disassembler::Dump(FILE* f, byte* begin, byte* end) {}
|
333
|
-
int Disassembler::Decode(FILE* f, byte* begin, byte* end) { return 0; }
|
334
|
-
void Disassembler::Decode(FILE* f, Code* code) {}
|
335
|
-
|
336
|
-
#endif // ENABLE_DISASSEMBLER
|
337
|
-
|
338
|
-
} } // namespace v8::internal
|
@@ -1,735 +0,0 @@
|
|
1
|
-
// Copyright 2006-2008 the V8 project authors. All rights reserved.
|
2
|
-
// Redistribution and use in source and binary forms, with or without
|
3
|
-
// modification, are permitted provided that the following conditions are
|
4
|
-
// met:
|
5
|
-
//
|
6
|
-
// * Redistributions of source code must retain the above copyright
|
7
|
-
// notice, this list of conditions and the following disclaimer.
|
8
|
-
// * Redistributions in binary form must reproduce the above
|
9
|
-
// copyright notice, this list of conditions and the following
|
10
|
-
// disclaimer in the documentation and/or other materials provided
|
11
|
-
// with the distribution.
|
12
|
-
// * Neither the name of Google Inc. nor the names of its
|
13
|
-
// contributors may be used to endorse or promote products derived
|
14
|
-
// from this software without specific prior written permission.
|
15
|
-
//
|
16
|
-
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
-
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
-
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
-
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
-
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
-
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
-
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
|
28
|
-
#include <stdlib.h>
|
29
|
-
|
30
|
-
#include "v8.h"
|
31
|
-
|
32
|
-
#include "api.h"
|
33
|
-
#include "bootstrapper.h"
|
34
|
-
#include "codegen-inl.h"
|
35
|
-
#include "debug.h"
|
36
|
-
#include "runtime-profiler.h"
|
37
|
-
#include "simulator.h"
|
38
|
-
#include "v8threads.h"
|
39
|
-
#include "vm-state-inl.h"
|
40
|
-
|
41
|
-
namespace v8 {
|
42
|
-
namespace internal {
|
43
|
-
|
44
|
-
|
45
|
-
static Handle<Object> Invoke(bool construct,
|
46
|
-
Handle<JSFunction> func,
|
47
|
-
Handle<Object> receiver,
|
48
|
-
int argc,
|
49
|
-
Object*** args,
|
50
|
-
bool* has_pending_exception) {
|
51
|
-
// Entering JavaScript.
|
52
|
-
VMState state(JS);
|
53
|
-
|
54
|
-
// Placeholder for return value.
|
55
|
-
MaybeObject* value = reinterpret_cast<Object*>(kZapValue);
|
56
|
-
|
57
|
-
typedef Object* (*JSEntryFunction)(
|
58
|
-
byte* entry,
|
59
|
-
Object* function,
|
60
|
-
Object* receiver,
|
61
|
-
int argc,
|
62
|
-
Object*** args);
|
63
|
-
|
64
|
-
Handle<Code> code;
|
65
|
-
if (construct) {
|
66
|
-
JSConstructEntryStub stub;
|
67
|
-
code = stub.GetCode();
|
68
|
-
} else {
|
69
|
-
JSEntryStub stub;
|
70
|
-
code = stub.GetCode();
|
71
|
-
}
|
72
|
-
|
73
|
-
// Convert calls on global objects to be calls on the global
|
74
|
-
// receiver instead to avoid having a 'this' pointer which refers
|
75
|
-
// directly to a global object.
|
76
|
-
if (receiver->IsGlobalObject()) {
|
77
|
-
Handle<GlobalObject> global = Handle<GlobalObject>::cast(receiver);
|
78
|
-
receiver = Handle<JSObject>(global->global_receiver());
|
79
|
-
}
|
80
|
-
|
81
|
-
// Make sure that the global object of the context we're about to
|
82
|
-
// make the current one is indeed a global object.
|
83
|
-
ASSERT(func->context()->global()->IsGlobalObject());
|
84
|
-
|
85
|
-
{
|
86
|
-
// Save and restore context around invocation and block the
|
87
|
-
// allocation of handles without explicit handle scopes.
|
88
|
-
SaveContext save;
|
89
|
-
NoHandleAllocation na;
|
90
|
-
JSEntryFunction entry = FUNCTION_CAST<JSEntryFunction>(code->entry());
|
91
|
-
|
92
|
-
// Call the function through the right JS entry stub.
|
93
|
-
byte* entry_address = func->code()->entry();
|
94
|
-
JSFunction* function = *func;
|
95
|
-
Object* receiver_pointer = *receiver;
|
96
|
-
value = CALL_GENERATED_CODE(entry, entry_address, function,
|
97
|
-
receiver_pointer, argc, args);
|
98
|
-
}
|
99
|
-
|
100
|
-
#ifdef DEBUG
|
101
|
-
value->Verify();
|
102
|
-
#endif
|
103
|
-
|
104
|
-
// Update the pending exception flag and return the value.
|
105
|
-
*has_pending_exception = value->IsException();
|
106
|
-
ASSERT(*has_pending_exception == Top::has_pending_exception());
|
107
|
-
if (*has_pending_exception) {
|
108
|
-
Top::ReportPendingMessages();
|
109
|
-
if (Top::pending_exception() == Failure::OutOfMemoryException()) {
|
110
|
-
if (!HandleScopeImplementer::instance()->ignore_out_of_memory()) {
|
111
|
-
V8::FatalProcessOutOfMemory("JS", true);
|
112
|
-
}
|
113
|
-
}
|
114
|
-
return Handle<Object>();
|
115
|
-
} else {
|
116
|
-
Top::clear_pending_message();
|
117
|
-
}
|
118
|
-
|
119
|
-
return Handle<Object>(value->ToObjectUnchecked());
|
120
|
-
}
|
121
|
-
|
122
|
-
|
123
|
-
Handle<Object> Execution::Call(Handle<JSFunction> func,
|
124
|
-
Handle<Object> receiver,
|
125
|
-
int argc,
|
126
|
-
Object*** args,
|
127
|
-
bool* pending_exception) {
|
128
|
-
return Invoke(false, func, receiver, argc, args, pending_exception);
|
129
|
-
}
|
130
|
-
|
131
|
-
|
132
|
-
Handle<Object> Execution::New(Handle<JSFunction> func, int argc,
|
133
|
-
Object*** args, bool* pending_exception) {
|
134
|
-
return Invoke(true, func, Top::global(), argc, args, pending_exception);
|
135
|
-
}
|
136
|
-
|
137
|
-
|
138
|
-
Handle<Object> Execution::TryCall(Handle<JSFunction> func,
|
139
|
-
Handle<Object> receiver,
|
140
|
-
int argc,
|
141
|
-
Object*** args,
|
142
|
-
bool* caught_exception) {
|
143
|
-
// Enter a try-block while executing the JavaScript code. To avoid
|
144
|
-
// duplicate error printing it must be non-verbose. Also, to avoid
|
145
|
-
// creating message objects during stack overflow we shouldn't
|
146
|
-
// capture messages.
|
147
|
-
v8::TryCatch catcher;
|
148
|
-
catcher.SetVerbose(false);
|
149
|
-
catcher.SetCaptureMessage(false);
|
150
|
-
|
151
|
-
Handle<Object> result = Invoke(false, func, receiver, argc, args,
|
152
|
-
caught_exception);
|
153
|
-
|
154
|
-
if (*caught_exception) {
|
155
|
-
ASSERT(catcher.HasCaught());
|
156
|
-
ASSERT(Top::has_pending_exception());
|
157
|
-
ASSERT(Top::external_caught_exception());
|
158
|
-
if (Top::pending_exception() == Heap::termination_exception()) {
|
159
|
-
result = Factory::termination_exception();
|
160
|
-
} else {
|
161
|
-
result = v8::Utils::OpenHandle(*catcher.Exception());
|
162
|
-
}
|
163
|
-
Top::OptionalRescheduleException(true);
|
164
|
-
}
|
165
|
-
|
166
|
-
ASSERT(!Top::has_pending_exception());
|
167
|
-
ASSERT(!Top::external_caught_exception());
|
168
|
-
return result;
|
169
|
-
}
|
170
|
-
|
171
|
-
|
172
|
-
Handle<Object> Execution::GetFunctionDelegate(Handle<Object> object) {
|
173
|
-
ASSERT(!object->IsJSFunction());
|
174
|
-
|
175
|
-
// If you return a function from here, it will be called when an
|
176
|
-
// attempt is made to call the given object as a function.
|
177
|
-
|
178
|
-
// Regular expressions can be called as functions in both Firefox
|
179
|
-
// and Safari so we allow it too.
|
180
|
-
if (object->IsJSRegExp()) {
|
181
|
-
Handle<String> exec = Factory::exec_symbol();
|
182
|
-
// TODO(lrn): Bug 617. We should use the default function here, not the
|
183
|
-
// one on the RegExp object.
|
184
|
-
Object* exec_function;
|
185
|
-
{ MaybeObject* maybe_exec_function = object->GetProperty(*exec);
|
186
|
-
// This can lose an exception, but the alternative is to put a failure
|
187
|
-
// object in a handle, which is not GC safe.
|
188
|
-
if (!maybe_exec_function->ToObject(&exec_function)) {
|
189
|
-
return Factory::undefined_value();
|
190
|
-
}
|
191
|
-
}
|
192
|
-
return Handle<Object>(exec_function);
|
193
|
-
}
|
194
|
-
|
195
|
-
// Objects created through the API can have an instance-call handler
|
196
|
-
// that should be used when calling the object as a function.
|
197
|
-
if (object->IsHeapObject() &&
|
198
|
-
HeapObject::cast(*object)->map()->has_instance_call_handler()) {
|
199
|
-
return Handle<JSFunction>(
|
200
|
-
Top::global_context()->call_as_function_delegate());
|
201
|
-
}
|
202
|
-
|
203
|
-
return Factory::undefined_value();
|
204
|
-
}
|
205
|
-
|
206
|
-
|
207
|
-
Handle<Object> Execution::GetConstructorDelegate(Handle<Object> object) {
|
208
|
-
ASSERT(!object->IsJSFunction());
|
209
|
-
|
210
|
-
// If you return a function from here, it will be called when an
|
211
|
-
// attempt is made to call the given object as a constructor.
|
212
|
-
|
213
|
-
// Objects created through the API can have an instance-call handler
|
214
|
-
// that should be used when calling the object as a function.
|
215
|
-
if (object->IsHeapObject() &&
|
216
|
-
HeapObject::cast(*object)->map()->has_instance_call_handler()) {
|
217
|
-
return Handle<JSFunction>(
|
218
|
-
Top::global_context()->call_as_constructor_delegate());
|
219
|
-
}
|
220
|
-
|
221
|
-
return Factory::undefined_value();
|
222
|
-
}
|
223
|
-
|
224
|
-
|
225
|
-
// Static state for stack guards.
|
226
|
-
StackGuard::ThreadLocal StackGuard::thread_local_;
|
227
|
-
|
228
|
-
|
229
|
-
bool StackGuard::IsStackOverflow() {
|
230
|
-
ExecutionAccess access;
|
231
|
-
return (thread_local_.jslimit_ != kInterruptLimit &&
|
232
|
-
thread_local_.climit_ != kInterruptLimit);
|
233
|
-
}
|
234
|
-
|
235
|
-
|
236
|
-
void StackGuard::EnableInterrupts() {
|
237
|
-
ExecutionAccess access;
|
238
|
-
if (has_pending_interrupts(access)) {
|
239
|
-
set_interrupt_limits(access);
|
240
|
-
}
|
241
|
-
}
|
242
|
-
|
243
|
-
|
244
|
-
void StackGuard::SetStackLimit(uintptr_t limit) {
|
245
|
-
ExecutionAccess access;
|
246
|
-
// If the current limits are special (eg due to a pending interrupt) then
|
247
|
-
// leave them alone.
|
248
|
-
uintptr_t jslimit = SimulatorStack::JsLimitFromCLimit(limit);
|
249
|
-
if (thread_local_.jslimit_ == thread_local_.real_jslimit_) {
|
250
|
-
thread_local_.jslimit_ = jslimit;
|
251
|
-
}
|
252
|
-
if (thread_local_.climit_ == thread_local_.real_climit_) {
|
253
|
-
thread_local_.climit_ = limit;
|
254
|
-
}
|
255
|
-
thread_local_.real_climit_ = limit;
|
256
|
-
thread_local_.real_jslimit_ = jslimit;
|
257
|
-
}
|
258
|
-
|
259
|
-
|
260
|
-
void StackGuard::DisableInterrupts() {
|
261
|
-
ExecutionAccess access;
|
262
|
-
reset_limits(access);
|
263
|
-
}
|
264
|
-
|
265
|
-
|
266
|
-
bool StackGuard::IsInterrupted() {
|
267
|
-
ExecutionAccess access;
|
268
|
-
return thread_local_.interrupt_flags_ & INTERRUPT;
|
269
|
-
}
|
270
|
-
|
271
|
-
|
272
|
-
void StackGuard::Interrupt() {
|
273
|
-
ExecutionAccess access;
|
274
|
-
thread_local_.interrupt_flags_ |= INTERRUPT;
|
275
|
-
set_interrupt_limits(access);
|
276
|
-
}
|
277
|
-
|
278
|
-
|
279
|
-
bool StackGuard::IsPreempted() {
|
280
|
-
ExecutionAccess access;
|
281
|
-
return thread_local_.interrupt_flags_ & PREEMPT;
|
282
|
-
}
|
283
|
-
|
284
|
-
|
285
|
-
void StackGuard::Preempt() {
|
286
|
-
ExecutionAccess access;
|
287
|
-
thread_local_.interrupt_flags_ |= PREEMPT;
|
288
|
-
set_interrupt_limits(access);
|
289
|
-
}
|
290
|
-
|
291
|
-
|
292
|
-
bool StackGuard::IsTerminateExecution() {
|
293
|
-
ExecutionAccess access;
|
294
|
-
return thread_local_.interrupt_flags_ & TERMINATE;
|
295
|
-
}
|
296
|
-
|
297
|
-
|
298
|
-
void StackGuard::TerminateExecution() {
|
299
|
-
ExecutionAccess access;
|
300
|
-
thread_local_.interrupt_flags_ |= TERMINATE;
|
301
|
-
set_interrupt_limits(access);
|
302
|
-
}
|
303
|
-
|
304
|
-
|
305
|
-
bool StackGuard::IsRuntimeProfilerTick() {
|
306
|
-
ExecutionAccess access;
|
307
|
-
return thread_local_.interrupt_flags_ & RUNTIME_PROFILER_TICK;
|
308
|
-
}
|
309
|
-
|
310
|
-
|
311
|
-
void StackGuard::RequestRuntimeProfilerTick() {
|
312
|
-
// Ignore calls if we're not optimizing or if we can't get the lock.
|
313
|
-
if (FLAG_opt && ExecutionAccess::TryLock()) {
|
314
|
-
thread_local_.interrupt_flags_ |= RUNTIME_PROFILER_TICK;
|
315
|
-
if (thread_local_.postpone_interrupts_nesting_ == 0) {
|
316
|
-
thread_local_.jslimit_ = thread_local_.climit_ = kInterruptLimit;
|
317
|
-
Heap::SetStackLimits();
|
318
|
-
}
|
319
|
-
ExecutionAccess::Unlock();
|
320
|
-
}
|
321
|
-
}
|
322
|
-
|
323
|
-
|
324
|
-
#ifdef ENABLE_DEBUGGER_SUPPORT
|
325
|
-
bool StackGuard::IsDebugBreak() {
|
326
|
-
ExecutionAccess access;
|
327
|
-
return thread_local_.interrupt_flags_ & DEBUGBREAK;
|
328
|
-
}
|
329
|
-
|
330
|
-
|
331
|
-
void StackGuard::DebugBreak() {
|
332
|
-
ExecutionAccess access;
|
333
|
-
thread_local_.interrupt_flags_ |= DEBUGBREAK;
|
334
|
-
set_interrupt_limits(access);
|
335
|
-
}
|
336
|
-
|
337
|
-
|
338
|
-
bool StackGuard::IsDebugCommand() {
|
339
|
-
ExecutionAccess access;
|
340
|
-
return thread_local_.interrupt_flags_ & DEBUGCOMMAND;
|
341
|
-
}
|
342
|
-
|
343
|
-
|
344
|
-
void StackGuard::DebugCommand() {
|
345
|
-
if (FLAG_debugger_auto_break) {
|
346
|
-
ExecutionAccess access;
|
347
|
-
thread_local_.interrupt_flags_ |= DEBUGCOMMAND;
|
348
|
-
set_interrupt_limits(access);
|
349
|
-
}
|
350
|
-
}
|
351
|
-
#endif
|
352
|
-
|
353
|
-
void StackGuard::Continue(InterruptFlag after_what) {
|
354
|
-
ExecutionAccess access;
|
355
|
-
thread_local_.interrupt_flags_ &= ~static_cast<int>(after_what);
|
356
|
-
if (!should_postpone_interrupts(access) && !has_pending_interrupts(access)) {
|
357
|
-
reset_limits(access);
|
358
|
-
}
|
359
|
-
}
|
360
|
-
|
361
|
-
|
362
|
-
int StackGuard::ArchiveSpacePerThread() {
|
363
|
-
return sizeof(ThreadLocal);
|
364
|
-
}
|
365
|
-
|
366
|
-
|
367
|
-
char* StackGuard::ArchiveStackGuard(char* to) {
|
368
|
-
ExecutionAccess access;
|
369
|
-
memcpy(to, reinterpret_cast<char*>(&thread_local_), sizeof(ThreadLocal));
|
370
|
-
ThreadLocal blank;
|
371
|
-
thread_local_ = blank;
|
372
|
-
return to + sizeof(ThreadLocal);
|
373
|
-
}
|
374
|
-
|
375
|
-
|
376
|
-
char* StackGuard::RestoreStackGuard(char* from) {
|
377
|
-
ExecutionAccess access;
|
378
|
-
memcpy(reinterpret_cast<char*>(&thread_local_), from, sizeof(ThreadLocal));
|
379
|
-
Heap::SetStackLimits();
|
380
|
-
return from + sizeof(ThreadLocal);
|
381
|
-
}
|
382
|
-
|
383
|
-
|
384
|
-
static internal::Thread::LocalStorageKey stack_limit_key =
|
385
|
-
internal::Thread::CreateThreadLocalKey();
|
386
|
-
|
387
|
-
|
388
|
-
void StackGuard::FreeThreadResources() {
|
389
|
-
Thread::SetThreadLocal(
|
390
|
-
stack_limit_key,
|
391
|
-
reinterpret_cast<void*>(thread_local_.real_climit_));
|
392
|
-
}
|
393
|
-
|
394
|
-
|
395
|
-
void StackGuard::ThreadLocal::Clear() {
|
396
|
-
real_jslimit_ = kIllegalLimit;
|
397
|
-
jslimit_ = kIllegalLimit;
|
398
|
-
real_climit_ = kIllegalLimit;
|
399
|
-
climit_ = kIllegalLimit;
|
400
|
-
nesting_ = 0;
|
401
|
-
postpone_interrupts_nesting_ = 0;
|
402
|
-
interrupt_flags_ = 0;
|
403
|
-
Heap::SetStackLimits();
|
404
|
-
}
|
405
|
-
|
406
|
-
|
407
|
-
void StackGuard::ThreadLocal::Initialize() {
|
408
|
-
if (real_climit_ == kIllegalLimit) {
|
409
|
-
// Takes the address of the limit variable in order to find out where
|
410
|
-
// the top of stack is right now.
|
411
|
-
const uintptr_t kLimitSize = FLAG_stack_size * KB;
|
412
|
-
uintptr_t limit = reinterpret_cast<uintptr_t>(&limit) - kLimitSize;
|
413
|
-
ASSERT(reinterpret_cast<uintptr_t>(&limit) > kLimitSize);
|
414
|
-
real_jslimit_ = SimulatorStack::JsLimitFromCLimit(limit);
|
415
|
-
jslimit_ = SimulatorStack::JsLimitFromCLimit(limit);
|
416
|
-
real_climit_ = limit;
|
417
|
-
climit_ = limit;
|
418
|
-
Heap::SetStackLimits();
|
419
|
-
}
|
420
|
-
nesting_ = 0;
|
421
|
-
postpone_interrupts_nesting_ = 0;
|
422
|
-
interrupt_flags_ = 0;
|
423
|
-
}
|
424
|
-
|
425
|
-
|
426
|
-
void StackGuard::ClearThread(const ExecutionAccess& lock) {
|
427
|
-
thread_local_.Clear();
|
428
|
-
}
|
429
|
-
|
430
|
-
|
431
|
-
void StackGuard::InitThread(const ExecutionAccess& lock) {
|
432
|
-
thread_local_.Initialize();
|
433
|
-
void* stored_limit = Thread::GetThreadLocal(stack_limit_key);
|
434
|
-
// You should hold the ExecutionAccess lock when you call this.
|
435
|
-
if (stored_limit != NULL) {
|
436
|
-
StackGuard::SetStackLimit(reinterpret_cast<intptr_t>(stored_limit));
|
437
|
-
}
|
438
|
-
}
|
439
|
-
|
440
|
-
|
441
|
-
// --- C a l l s t o n a t i v e s ---
|
442
|
-
|
443
|
-
#define RETURN_NATIVE_CALL(name, argc, argv, has_pending_exception) \
|
444
|
-
do { \
|
445
|
-
Object** args[argc] = argv; \
|
446
|
-
ASSERT(has_pending_exception != NULL); \
|
447
|
-
return Call(Top::name##_fun(), Top::builtins(), argc, args, \
|
448
|
-
has_pending_exception); \
|
449
|
-
} while (false)
|
450
|
-
|
451
|
-
|
452
|
-
Handle<Object> Execution::ToBoolean(Handle<Object> obj) {
|
453
|
-
// See the similar code in runtime.js:ToBoolean.
|
454
|
-
if (obj->IsBoolean()) return obj;
|
455
|
-
bool result = true;
|
456
|
-
if (obj->IsString()) {
|
457
|
-
result = Handle<String>::cast(obj)->length() != 0;
|
458
|
-
} else if (obj->IsNull() || obj->IsUndefined()) {
|
459
|
-
result = false;
|
460
|
-
} else if (obj->IsNumber()) {
|
461
|
-
double value = obj->Number();
|
462
|
-
result = !((value == 0) || isnan(value));
|
463
|
-
}
|
464
|
-
return Handle<Object>(Heap::ToBoolean(result));
|
465
|
-
}
|
466
|
-
|
467
|
-
|
468
|
-
Handle<Object> Execution::ToNumber(Handle<Object> obj, bool* exc) {
|
469
|
-
RETURN_NATIVE_CALL(to_number, 1, { obj.location() }, exc);
|
470
|
-
}
|
471
|
-
|
472
|
-
|
473
|
-
Handle<Object> Execution::ToString(Handle<Object> obj, bool* exc) {
|
474
|
-
RETURN_NATIVE_CALL(to_string, 1, { obj.location() }, exc);
|
475
|
-
}
|
476
|
-
|
477
|
-
|
478
|
-
Handle<Object> Execution::ToDetailString(Handle<Object> obj, bool* exc) {
|
479
|
-
RETURN_NATIVE_CALL(to_detail_string, 1, { obj.location() }, exc);
|
480
|
-
}
|
481
|
-
|
482
|
-
|
483
|
-
Handle<Object> Execution::ToObject(Handle<Object> obj, bool* exc) {
|
484
|
-
if (obj->IsJSObject()) return obj;
|
485
|
-
RETURN_NATIVE_CALL(to_object, 1, { obj.location() }, exc);
|
486
|
-
}
|
487
|
-
|
488
|
-
|
489
|
-
Handle<Object> Execution::ToInteger(Handle<Object> obj, bool* exc) {
|
490
|
-
RETURN_NATIVE_CALL(to_integer, 1, { obj.location() }, exc);
|
491
|
-
}
|
492
|
-
|
493
|
-
|
494
|
-
Handle<Object> Execution::ToUint32(Handle<Object> obj, bool* exc) {
|
495
|
-
RETURN_NATIVE_CALL(to_uint32, 1, { obj.location() }, exc);
|
496
|
-
}
|
497
|
-
|
498
|
-
|
499
|
-
Handle<Object> Execution::ToInt32(Handle<Object> obj, bool* exc) {
|
500
|
-
RETURN_NATIVE_CALL(to_int32, 1, { obj.location() }, exc);
|
501
|
-
}
|
502
|
-
|
503
|
-
|
504
|
-
Handle<Object> Execution::NewDate(double time, bool* exc) {
|
505
|
-
Handle<Object> time_obj = Factory::NewNumber(time);
|
506
|
-
RETURN_NATIVE_CALL(create_date, 1, { time_obj.location() }, exc);
|
507
|
-
}
|
508
|
-
|
509
|
-
|
510
|
-
#undef RETURN_NATIVE_CALL
|
511
|
-
|
512
|
-
|
513
|
-
Handle<JSRegExp> Execution::NewJSRegExp(Handle<String> pattern,
|
514
|
-
Handle<String> flags,
|
515
|
-
bool* exc) {
|
516
|
-
Handle<Object> re_obj = RegExpImpl::CreateRegExpLiteral(
|
517
|
-
Handle<JSFunction>(Top::global_context()->regexp_function()),
|
518
|
-
pattern,
|
519
|
-
flags,
|
520
|
-
exc);
|
521
|
-
if (*exc) return Handle<JSRegExp>();
|
522
|
-
return Handle<JSRegExp>::cast(re_obj);
|
523
|
-
}
|
524
|
-
|
525
|
-
|
526
|
-
Handle<Object> Execution::CharAt(Handle<String> string, uint32_t index) {
|
527
|
-
int int_index = static_cast<int>(index);
|
528
|
-
if (int_index < 0 || int_index >= string->length()) {
|
529
|
-
return Factory::undefined_value();
|
530
|
-
}
|
531
|
-
|
532
|
-
Handle<Object> char_at =
|
533
|
-
GetProperty(Top::builtins(), Factory::char_at_symbol());
|
534
|
-
if (!char_at->IsJSFunction()) {
|
535
|
-
return Factory::undefined_value();
|
536
|
-
}
|
537
|
-
|
538
|
-
bool caught_exception;
|
539
|
-
Handle<Object> index_object = Factory::NewNumberFromInt(int_index);
|
540
|
-
Object** index_arg[] = { index_object.location() };
|
541
|
-
Handle<Object> result = TryCall(Handle<JSFunction>::cast(char_at),
|
542
|
-
string,
|
543
|
-
ARRAY_SIZE(index_arg),
|
544
|
-
index_arg,
|
545
|
-
&caught_exception);
|
546
|
-
if (caught_exception) {
|
547
|
-
return Factory::undefined_value();
|
548
|
-
}
|
549
|
-
return result;
|
550
|
-
}
|
551
|
-
|
552
|
-
|
553
|
-
Handle<JSFunction> Execution::InstantiateFunction(
|
554
|
-
Handle<FunctionTemplateInfo> data, bool* exc) {
|
555
|
-
// Fast case: see if the function has already been instantiated
|
556
|
-
int serial_number = Smi::cast(data->serial_number())->value();
|
557
|
-
Object* elm = Top::global_context()->function_cache()->
|
558
|
-
GetElementNoExceptionThrown(serial_number);
|
559
|
-
if (elm->IsJSFunction()) return Handle<JSFunction>(JSFunction::cast(elm));
|
560
|
-
// The function has not yet been instantiated in this context; do it.
|
561
|
-
Object** args[1] = { Handle<Object>::cast(data).location() };
|
562
|
-
Handle<Object> result =
|
563
|
-
Call(Top::instantiate_fun(), Top::builtins(), 1, args, exc);
|
564
|
-
if (*exc) return Handle<JSFunction>::null();
|
565
|
-
return Handle<JSFunction>::cast(result);
|
566
|
-
}
|
567
|
-
|
568
|
-
|
569
|
-
Handle<JSObject> Execution::InstantiateObject(Handle<ObjectTemplateInfo> data,
|
570
|
-
bool* exc) {
|
571
|
-
if (data->property_list()->IsUndefined() &&
|
572
|
-
!data->constructor()->IsUndefined()) {
|
573
|
-
// Initialization to make gcc happy.
|
574
|
-
Object* result = NULL;
|
575
|
-
{
|
576
|
-
HandleScope scope;
|
577
|
-
Handle<FunctionTemplateInfo> cons_template =
|
578
|
-
Handle<FunctionTemplateInfo>(
|
579
|
-
FunctionTemplateInfo::cast(data->constructor()));
|
580
|
-
Handle<JSFunction> cons = InstantiateFunction(cons_template, exc);
|
581
|
-
if (*exc) return Handle<JSObject>::null();
|
582
|
-
Handle<Object> value = New(cons, 0, NULL, exc);
|
583
|
-
if (*exc) return Handle<JSObject>::null();
|
584
|
-
result = *value;
|
585
|
-
}
|
586
|
-
ASSERT(!*exc);
|
587
|
-
return Handle<JSObject>(JSObject::cast(result));
|
588
|
-
} else {
|
589
|
-
Object** args[1] = { Handle<Object>::cast(data).location() };
|
590
|
-
Handle<Object> result =
|
591
|
-
Call(Top::instantiate_fun(), Top::builtins(), 1, args, exc);
|
592
|
-
if (*exc) return Handle<JSObject>::null();
|
593
|
-
return Handle<JSObject>::cast(result);
|
594
|
-
}
|
595
|
-
}
|
596
|
-
|
597
|
-
|
598
|
-
void Execution::ConfigureInstance(Handle<Object> instance,
|
599
|
-
Handle<Object> instance_template,
|
600
|
-
bool* exc) {
|
601
|
-
Object** args[2] = { instance.location(), instance_template.location() };
|
602
|
-
Execution::Call(Top::configure_instance_fun(), Top::builtins(), 2, args, exc);
|
603
|
-
}
|
604
|
-
|
605
|
-
|
606
|
-
Handle<String> Execution::GetStackTraceLine(Handle<Object> recv,
|
607
|
-
Handle<JSFunction> fun,
|
608
|
-
Handle<Object> pos,
|
609
|
-
Handle<Object> is_global) {
|
610
|
-
const int argc = 4;
|
611
|
-
Object** args[argc] = { recv.location(),
|
612
|
-
Handle<Object>::cast(fun).location(),
|
613
|
-
pos.location(),
|
614
|
-
is_global.location() };
|
615
|
-
bool caught_exception = false;
|
616
|
-
Handle<Object> result = TryCall(Top::get_stack_trace_line_fun(),
|
617
|
-
Top::builtins(), argc, args,
|
618
|
-
&caught_exception);
|
619
|
-
if (caught_exception || !result->IsString()) return Factory::empty_symbol();
|
620
|
-
return Handle<String>::cast(result);
|
621
|
-
}
|
622
|
-
|
623
|
-
|
624
|
-
static Object* RuntimePreempt() {
|
625
|
-
// Clear the preempt request flag.
|
626
|
-
StackGuard::Continue(PREEMPT);
|
627
|
-
|
628
|
-
ContextSwitcher::PreemptionReceived();
|
629
|
-
|
630
|
-
#ifdef ENABLE_DEBUGGER_SUPPORT
|
631
|
-
if (Debug::InDebugger()) {
|
632
|
-
// If currently in the debugger don't do any actual preemption but record
|
633
|
-
// that preemption occoured while in the debugger.
|
634
|
-
Debug::PreemptionWhileInDebugger();
|
635
|
-
} else {
|
636
|
-
// Perform preemption.
|
637
|
-
v8::Unlocker unlocker;
|
638
|
-
Thread::YieldCPU();
|
639
|
-
}
|
640
|
-
#else
|
641
|
-
// Perform preemption.
|
642
|
-
v8::Unlocker unlocker;
|
643
|
-
Thread::YieldCPU();
|
644
|
-
#endif
|
645
|
-
|
646
|
-
return Heap::undefined_value();
|
647
|
-
}
|
648
|
-
|
649
|
-
|
650
|
-
#ifdef ENABLE_DEBUGGER_SUPPORT
|
651
|
-
Object* Execution::DebugBreakHelper() {
|
652
|
-
// Just continue if breaks are disabled.
|
653
|
-
if (Debug::disable_break()) {
|
654
|
-
return Heap::undefined_value();
|
655
|
-
}
|
656
|
-
|
657
|
-
// Ignore debug break during bootstrapping.
|
658
|
-
if (Bootstrapper::IsActive()) {
|
659
|
-
return Heap::undefined_value();
|
660
|
-
}
|
661
|
-
|
662
|
-
{
|
663
|
-
JavaScriptFrameIterator it;
|
664
|
-
ASSERT(!it.done());
|
665
|
-
Object* fun = it.frame()->function();
|
666
|
-
if (fun && fun->IsJSFunction()) {
|
667
|
-
// Don't stop in builtin functions.
|
668
|
-
if (JSFunction::cast(fun)->IsBuiltin()) {
|
669
|
-
return Heap::undefined_value();
|
670
|
-
}
|
671
|
-
GlobalObject* global = JSFunction::cast(fun)->context()->global();
|
672
|
-
// Don't stop in debugger functions.
|
673
|
-
if (Debug::IsDebugGlobal(global)) {
|
674
|
-
return Heap::undefined_value();
|
675
|
-
}
|
676
|
-
}
|
677
|
-
}
|
678
|
-
|
679
|
-
// Collect the break state before clearing the flags.
|
680
|
-
bool debug_command_only =
|
681
|
-
StackGuard::IsDebugCommand() && !StackGuard::IsDebugBreak();
|
682
|
-
|
683
|
-
// Clear the debug break request flag.
|
684
|
-
StackGuard::Continue(DEBUGBREAK);
|
685
|
-
|
686
|
-
ProcessDebugMesssages(debug_command_only);
|
687
|
-
|
688
|
-
// Return to continue execution.
|
689
|
-
return Heap::undefined_value();
|
690
|
-
}
|
691
|
-
|
692
|
-
void Execution::ProcessDebugMesssages(bool debug_command_only) {
|
693
|
-
// Clear the debug command request flag.
|
694
|
-
StackGuard::Continue(DEBUGCOMMAND);
|
695
|
-
|
696
|
-
HandleScope scope;
|
697
|
-
// Enter the debugger. Just continue if we fail to enter the debugger.
|
698
|
-
EnterDebugger debugger;
|
699
|
-
if (debugger.FailedToEnter()) {
|
700
|
-
return;
|
701
|
-
}
|
702
|
-
|
703
|
-
// Notify the debug event listeners. Indicate auto continue if the break was
|
704
|
-
// a debug command break.
|
705
|
-
Debugger::OnDebugBreak(Factory::undefined_value(), debug_command_only);
|
706
|
-
}
|
707
|
-
|
708
|
-
|
709
|
-
#endif
|
710
|
-
|
711
|
-
MaybeObject* Execution::HandleStackGuardInterrupt() {
|
712
|
-
Counters::stack_interrupts.Increment();
|
713
|
-
if (StackGuard::IsRuntimeProfilerTick()) {
|
714
|
-
Counters::runtime_profiler_ticks.Increment();
|
715
|
-
StackGuard::Continue(RUNTIME_PROFILER_TICK);
|
716
|
-
RuntimeProfiler::OptimizeNow();
|
717
|
-
}
|
718
|
-
#ifdef ENABLE_DEBUGGER_SUPPORT
|
719
|
-
if (StackGuard::IsDebugBreak() || StackGuard::IsDebugCommand()) {
|
720
|
-
DebugBreakHelper();
|
721
|
-
}
|
722
|
-
#endif
|
723
|
-
if (StackGuard::IsPreempted()) RuntimePreempt();
|
724
|
-
if (StackGuard::IsTerminateExecution()) {
|
725
|
-
StackGuard::Continue(TERMINATE);
|
726
|
-
return Top::TerminateExecution();
|
727
|
-
}
|
728
|
-
if (StackGuard::IsInterrupted()) {
|
729
|
-
StackGuard::Continue(INTERRUPT);
|
730
|
-
return Top::StackOverflow();
|
731
|
-
}
|
732
|
-
return Heap::undefined_value();
|
733
|
-
}
|
734
|
-
|
735
|
-
} } // namespace v8::internal
|