therubyracer 0.8.1.pre2 → 0.8.1
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/Changelog.md +2 -1
- data/README.md +6 -3
- data/ext/v8/upstream/3.1.8/.gitignore +31 -0
- data/ext/v8/upstream/3.1.8/AUTHORS +40 -0
- data/ext/v8/upstream/3.1.8/ChangeLog +2566 -0
- data/ext/v8/upstream/3.1.8/LICENSE +52 -0
- data/ext/v8/upstream/3.1.8/LICENSE.strongtalk +29 -0
- data/ext/v8/upstream/3.1.8/LICENSE.v8 +26 -0
- data/ext/v8/upstream/3.1.8/LICENSE.valgrind +45 -0
- data/ext/v8/upstream/3.1.8/SConstruct +1192 -0
- data/ext/v8/upstream/3.1.8/build/README.txt +25 -0
- data/ext/v8/upstream/3.1.8/build/all.gyp +18 -0
- data/ext/v8/upstream/3.1.8/build/armu.gypi +32 -0
- data/ext/v8/upstream/3.1.8/build/common.gypi +82 -0
- data/ext/v8/upstream/3.1.8/build/gyp_v8 +145 -0
- data/ext/v8/upstream/3.1.8/include/v8-debug.h +384 -0
- data/ext/v8/upstream/3.1.8/include/v8-preparser.h +116 -0
- data/ext/v8/upstream/3.1.8/include/v8-profiler.h +426 -0
- data/ext/v8/upstream/3.1.8/include/v8-testing.h +99 -0
- data/ext/v8/upstream/3.1.8/include/v8.h +3846 -0
- data/ext/v8/upstream/3.1.8/include/v8stdint.h +53 -0
- data/ext/v8/upstream/3.1.8/preparser/preparser-process.cc +206 -0
- data/ext/v8/upstream/3.1.8/src/SConscript +356 -0
- data/ext/v8/upstream/3.1.8/src/accessors.cc +907 -0
- data/ext/v8/upstream/3.1.8/src/accessors.h +121 -0
- data/ext/v8/upstream/3.1.8/src/allocation.cc +204 -0
- data/ext/v8/upstream/3.1.8/src/allocation.h +176 -0
- data/ext/v8/upstream/3.1.8/src/api.cc +5191 -0
- data/ext/v8/upstream/3.1.8/src/api.h +508 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/apinatives.js +0 -0
- data/ext/v8/upstream/3.1.8/src/apiutils.h +80 -0
- data/ext/v8/upstream/3.1.8/src/arguments.h +105 -0
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm-inl.h +352 -0
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.cc +2756 -0
- data/ext/v8/upstream/3.1.8/src/arm/assembler-arm.h +1294 -0
- data/ext/v8/upstream/3.1.8/src/arm/builtins-arm.cc +1628 -0
- data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.cc +6783 -0
- data/ext/v8/upstream/3.1.8/src/arm/code-stubs-arm.h +657 -0
- data/ext/v8/upstream/3.1.8/src/arm/codegen-arm-inl.h +48 -0
- data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.cc +7403 -0
- data/ext/v8/upstream/3.1.8/src/arm/codegen-arm.h +595 -0
- data/ext/v8/upstream/3.1.8/src/arm/constants-arm.cc +152 -0
- data/ext/v8/upstream/3.1.8/src/arm/constants-arm.h +769 -0
- data/ext/v8/upstream/3.1.8/src/arm/cpu-arm.cc +147 -0
- data/ext/v8/upstream/3.1.8/src/arm/debug-arm.cc +315 -0
- data/ext/v8/upstream/3.1.8/src/arm/deoptimizer-arm.cc +700 -0
- data/ext/v8/upstream/3.1.8/src/arm/disasm-arm.cc +1439 -0
- data/ext/v8/upstream/3.1.8/src/arm/frames-arm.cc +45 -0
- data/ext/v8/upstream/3.1.8/src/arm/frames-arm.h +168 -0
- data/ext/v8/upstream/3.1.8/src/arm/full-codegen-arm.cc +4230 -0
- data/ext/v8/upstream/3.1.8/src/arm/ic-arm.cc +1799 -0
- data/ext/v8/upstream/3.1.8/src/arm/jump-target-arm.cc +174 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.cc +2041 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-arm.h +2046 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.cc +3822 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-codegen-arm.h +312 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.cc +303 -0
- data/ext/v8/upstream/3.1.8/src/arm/lithium-gap-resolver-arm.h +84 -0
- data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.cc +2701 -0
- data/ext/v8/upstream/3.1.8/src/arm/macro-assembler-arm.h +1015 -0
- data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.cc +1280 -0
- data/ext/v8/upstream/3.1.8/src/arm/regexp-macro-assembler-arm.h +252 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/register-allocator-arm.h +0 -0
- data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.cc +3165 -0
- data/ext/v8/upstream/3.1.8/src/arm/simulator-arm.h +402 -0
- data/ext/v8/upstream/3.1.8/src/arm/stub-cache-arm.cc +4077 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/arm/virtual-frame-arm-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.cc +843 -0
- data/ext/v8/upstream/3.1.8/src/arm/virtual-frame-arm.h +520 -0
- data/ext/v8/upstream/3.1.8/src/array.js +1231 -0
- data/ext/v8/upstream/3.1.8/src/assembler.cc +973 -0
- data/ext/v8/upstream/3.1.8/src/assembler.h +787 -0
- data/ext/v8/upstream/3.1.8/src/ast-inl.h +107 -0
- data/ext/v8/upstream/3.1.8/src/ast.cc +1067 -0
- data/ext/v8/upstream/3.1.8/src/ast.h +2177 -0
- data/ext/v8/upstream/3.1.8/src/atomicops.h +165 -0
- data/ext/v8/upstream/3.1.8/src/atomicops_internals_arm_gcc.h +145 -0
- data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.cc +126 -0
- data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_gcc.h +287 -0
- data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_macosx.h +301 -0
- data/ext/v8/upstream/3.1.8/src/atomicops_internals_x86_msvc.h +203 -0
- data/ext/v8/upstream/3.1.8/src/bignum-dtoa.cc +655 -0
- data/ext/v8/upstream/3.1.8/src/bignum-dtoa.h +81 -0
- data/ext/v8/upstream/3.1.8/src/bignum.cc +768 -0
- data/ext/v8/upstream/3.1.8/src/bignum.h +140 -0
- data/ext/v8/upstream/3.1.8/src/bootstrapper.cc +1888 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/bootstrapper.h +0 -0
- data/ext/v8/upstream/3.1.8/src/builtins.cc +1586 -0
- data/ext/v8/upstream/3.1.8/src/builtins.h +339 -0
- data/ext/v8/upstream/3.1.8/src/bytecodes-irregexp.h +105 -0
- data/ext/v8/upstream/3.1.8/src/cached-powers.cc +177 -0
- data/ext/v8/upstream/3.1.8/src/cached-powers.h +65 -0
- data/ext/v8/upstream/3.1.8/src/char-predicates-inl.h +94 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/3.1.8/src/checks.cc +110 -0
- data/ext/v8/upstream/3.1.8/src/checks.h +292 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/circular-queue.cc +122 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/circular-queue.h +0 -0
- data/ext/v8/upstream/3.1.8/src/code-stubs.cc +230 -0
- data/ext/v8/upstream/3.1.8/src/code-stubs.h +950 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/code.h +0 -0
- data/ext/v8/upstream/3.1.8/src/codegen-inl.h +64 -0
- data/ext/v8/upstream/3.1.8/src/codegen.cc +495 -0
- data/ext/v8/upstream/3.1.8/src/codegen.h +245 -0
- data/ext/v8/upstream/3.1.8/src/compilation-cache.cc +654 -0
- data/ext/v8/upstream/3.1.8/src/compilation-cache.h +112 -0
- data/ext/v8/upstream/3.1.8/src/compiler.cc +806 -0
- data/ext/v8/upstream/3.1.8/src/compiler.h +290 -0
- data/ext/v8/upstream/3.1.8/src/contexts.cc +320 -0
- data/ext/v8/upstream/3.1.8/src/contexts.h +376 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/conversions-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/conversions.cc +1069 -0
- data/ext/v8/upstream/3.1.8/src/conversions.h +122 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/counters.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/counters.h +242 -0
- data/ext/v8/upstream/3.1.8/src/cpu-profiler-inl.h +100 -0
- data/ext/v8/upstream/3.1.8/src/cpu-profiler.cc +554 -0
- data/ext/v8/upstream/3.1.8/src/cpu-profiler.h +291 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/cpu.h +0 -0
- data/ext/v8/upstream/3.1.8/src/d8-debug.cc +367 -0
- data/ext/v8/upstream/3.1.8/src/d8-debug.h +157 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-posix.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-readline.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/d8.cc +792 -0
- data/ext/v8/upstream/3.1.8/src/d8.gyp +85 -0
- data/ext/v8/upstream/3.1.8/src/d8.h +231 -0
- data/ext/v8/upstream/3.1.8/src/d8.js +2798 -0
- data/ext/v8/upstream/3.1.8/src/data-flow.cc +545 -0
- data/ext/v8/upstream/3.1.8/src/data-flow.h +379 -0
- data/ext/v8/upstream/3.1.8/src/date.js +1103 -0
- data/ext/v8/upstream/3.1.8/src/dateparser-inl.h +125 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/dateparser.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/dateparser.h +263 -0
- data/ext/v8/upstream/3.1.8/src/debug-agent.cc +446 -0
- data/ext/v8/upstream/3.1.8/src/debug-agent.h +131 -0
- data/ext/v8/upstream/3.1.8/src/debug-debugger.js +2569 -0
- data/ext/v8/upstream/3.1.8/src/debug.cc +3085 -0
- data/ext/v8/upstream/3.1.8/src/debug.h +1025 -0
- data/ext/v8/upstream/3.1.8/src/deoptimizer.cc +1185 -0
- data/ext/v8/upstream/3.1.8/src/deoptimizer.h +529 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disasm.h +0 -0
- data/ext/v8/upstream/3.1.8/src/disassembler.cc +338 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/disassembler.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/diy-fp.h +0 -0
- data/ext/v8/upstream/3.1.8/src/double.h +238 -0
- data/ext/v8/upstream/3.1.8/src/dtoa.cc +103 -0
- data/ext/v8/upstream/3.1.8/src/dtoa.h +85 -0
- data/ext/v8/upstream/3.1.8/src/execution.cc +735 -0
- data/ext/v8/upstream/3.1.8/src/execution.h +322 -0
- data/ext/v8/upstream/3.1.8/src/extensions/experimental/experimental.gyp +53 -0
- data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.cc +264 -0
- data/ext/v8/upstream/3.1.8/src/extensions/experimental/i18n-extension.h +64 -0
- data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.cc +141 -0
- data/ext/v8/upstream/3.1.8/src/extensions/externalize-string-extension.h +50 -0
- data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.cc +58 -0
- data/ext/v8/upstream/3.1.8/src/extensions/gc-extension.h +49 -0
- data/ext/v8/upstream/3.1.8/src/factory.cc +1087 -0
- data/ext/v8/upstream/3.1.8/src/factory.h +432 -0
- data/ext/v8/upstream/3.1.8/src/fast-dtoa.cc +736 -0
- data/ext/v8/upstream/3.1.8/src/fast-dtoa.h +83 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/fixed-dtoa.h +0 -0
- data/ext/v8/upstream/3.1.8/src/flag-definitions.h +552 -0
- data/ext/v8/upstream/3.1.8/src/flags.cc +551 -0
- data/ext/v8/upstream/3.1.8/src/flags.h +79 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/frame-element.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/frame-element.h +277 -0
- data/ext/v8/upstream/3.1.8/src/frames-inl.h +210 -0
- data/ext/v8/upstream/3.1.8/src/frames.cc +1232 -0
- data/ext/v8/upstream/3.1.8/src/frames.h +826 -0
- data/ext/v8/upstream/3.1.8/src/full-codegen.cc +1382 -0
- data/ext/v8/upstream/3.1.8/src/full-codegen.h +751 -0
- data/ext/v8/upstream/3.1.8/src/func-name-inferrer.cc +90 -0
- data/ext/v8/upstream/3.1.8/src/func-name-inferrer.h +111 -0
- data/ext/v8/upstream/3.1.8/src/gdb-jit.cc +1547 -0
- data/ext/v8/upstream/3.1.8/src/gdb-jit.h +138 -0
- data/ext/v8/upstream/3.1.8/src/global-handles.cc +534 -0
- data/ext/v8/upstream/3.1.8/src/global-handles.h +181 -0
- data/ext/v8/upstream/3.1.8/src/globals.h +325 -0
- data/ext/v8/upstream/3.1.8/src/handles-inl.h +80 -0
- data/ext/v8/upstream/3.1.8/src/handles.cc +910 -0
- data/ext/v8/upstream/3.1.8/src/handles.h +424 -0
- data/ext/v8/upstream/3.1.8/src/hashmap.cc +230 -0
- data/ext/v8/upstream/3.1.8/src/hashmap.h +121 -0
- data/ext/v8/upstream/3.1.8/src/heap-inl.h +587 -0
- data/ext/v8/upstream/3.1.8/src/heap-profiler.cc +1128 -0
- data/ext/v8/upstream/3.1.8/src/heap-profiler.h +381 -0
- data/ext/v8/upstream/3.1.8/src/heap.cc +5610 -0
- data/ext/v8/upstream/3.1.8/src/heap.h +2218 -0
- data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.cc +1490 -0
- data/ext/v8/upstream/3.1.8/src/hydrogen-instructions.h +3493 -0
- data/ext/v8/upstream/3.1.8/src/hydrogen.cc +6056 -0
- data/ext/v8/upstream/3.1.8/src/hydrogen.h +1091 -0
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32-inl.h +429 -0
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.cc +2800 -0
- data/ext/v8/upstream/3.1.8/src/ia32/assembler-ia32.h +1093 -0
- data/ext/v8/upstream/3.1.8/src/ia32/builtins-ia32.cc +1590 -0
- data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.cc +6624 -0
- data/ext/v8/upstream/3.1.8/src/ia32/code-stubs-ia32.h +536 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.cc +10354 -0
- data/ext/v8/upstream/3.1.8/src/ia32/codegen-ia32.h +798 -0
- data/ext/v8/upstream/3.1.8/src/ia32/cpu-ia32.cc +87 -0
- data/ext/v8/upstream/3.1.8/src/ia32/debug-ia32.cc +309 -0
- data/ext/v8/upstream/3.1.8/src/ia32/deoptimizer-ia32.cc +664 -0
- data/ext/v8/upstream/3.1.8/src/ia32/disasm-ia32.cc +1597 -0
- data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.cc +45 -0
- data/ext/v8/upstream/3.1.8/src/ia32/frames-ia32.h +140 -0
- data/ext/v8/upstream/3.1.8/src/ia32/full-codegen-ia32.cc +4278 -0
- data/ext/v8/upstream/3.1.8/src/ia32/ic-ia32.cc +1786 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/jump-target-ia32.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.cc +3880 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-codegen-ia32.h +309 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.cc +460 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-gap-resolver-ia32.h +110 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.cc +2095 -0
- data/ext/v8/upstream/3.1.8/src/ia32/lithium-ia32.h +2127 -0
- data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.cc +2031 -0
- data/ext/v8/upstream/3.1.8/src/ia32/macro-assembler-ia32.h +798 -0
- data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.cc +1253 -0
- data/ext/v8/upstream/3.1.8/src/ia32/regexp-macro-assembler-ia32.h +215 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/ia32/simulator-ia32.h +72 -0
- data/ext/v8/upstream/3.1.8/src/ia32/stub-cache-ia32.cc +3732 -0
- data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.cc +1360 -0
- data/ext/v8/upstream/3.1.8/src/ia32/virtual-frame-ia32.h +646 -0
- data/ext/v8/upstream/3.1.8/src/ic-inl.h +129 -0
- data/ext/v8/upstream/3.1.8/src/ic.cc +2333 -0
- data/ext/v8/upstream/3.1.8/src/ic.h +639 -0
- data/ext/v8/upstream/3.1.8/src/inspector.cc +63 -0
- data/ext/v8/upstream/3.1.8/src/inspector.h +62 -0
- data/ext/v8/upstream/3.1.8/src/interpreter-irregexp.cc +655 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/3.1.8/src/json.js +342 -0
- data/ext/v8/upstream/3.1.8/src/jsregexp.cc +5340 -0
- data/ext/v8/upstream/3.1.8/src/jsregexp.h +1484 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-heavy-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/jump-target-heavy.cc +430 -0
- data/ext/v8/upstream/3.1.8/src/jump-target-heavy.h +244 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target-light-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/jump-target-light.cc +111 -0
- data/ext/v8/upstream/3.1.8/src/jump-target-light.h +193 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/jump-target.h +0 -0
- data/ext/v8/upstream/3.1.8/src/list-inl.h +206 -0
- data/ext/v8/upstream/3.1.8/src/list.h +164 -0
- data/ext/v8/upstream/3.1.8/src/lithium-allocator-inl.h +140 -0
- data/ext/v8/upstream/3.1.8/src/lithium-allocator.cc +2093 -0
- data/ext/v8/upstream/3.1.8/src/lithium-allocator.h +644 -0
- data/ext/v8/upstream/3.1.8/src/lithium.cc +168 -0
- data/ext/v8/upstream/3.1.8/src/lithium.h +592 -0
- data/ext/v8/upstream/3.1.8/src/liveedit-debugger.js +1082 -0
- data/ext/v8/upstream/3.1.8/src/liveedit.cc +1650 -0
- data/ext/v8/upstream/3.1.8/src/liveedit.h +174 -0
- data/ext/v8/upstream/3.1.8/src/liveobjectlist-inl.h +126 -0
- data/ext/v8/upstream/3.1.8/src/liveobjectlist.cc +2527 -0
- data/ext/v8/upstream/3.1.8/src/liveobjectlist.h +322 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/log-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/log-utils.cc +336 -0
- data/ext/v8/upstream/3.1.8/src/log-utils.h +232 -0
- data/ext/v8/upstream/3.1.8/src/log.cc +1608 -0
- data/ext/v8/upstream/3.1.8/src/log.h +379 -0
- data/ext/v8/upstream/3.1.8/src/macro-assembler.h +120 -0
- data/ext/v8/upstream/3.1.8/src/macros.py +178 -0
- data/ext/v8/upstream/3.1.8/src/mark-compact.cc +2957 -0
- data/ext/v8/upstream/3.1.8/src/mark-compact.h +433 -0
- data/ext/v8/upstream/3.1.8/src/math.js +264 -0
- data/ext/v8/upstream/3.1.8/src/memory.h +82 -0
- data/ext/v8/upstream/3.1.8/src/messages.cc +164 -0
- data/ext/v8/upstream/3.1.8/src/messages.h +114 -0
- data/ext/v8/upstream/3.1.8/src/messages.js +1071 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/assembler-mips.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/assembler-mips.h +667 -0
- data/ext/v8/upstream/3.1.8/src/mips/builtins-mips.cc +205 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/codegen-mips.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/codegen-mips.h +431 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/constants-mips.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/cpu-mips.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/debug-mips.cc +127 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/disasm-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/fast-codegen-mips.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/frames-mips.cc +96 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/frames-mips.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/full-codegen-mips.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/ic-mips.cc +208 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/jump-target-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/macro-assembler-mips.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/register-allocator-mips.h +0 -0
- data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.cc +1650 -0
- data/ext/v8/upstream/3.1.8/src/mips/simulator-mips.h +311 -0
- data/ext/v8/upstream/3.1.8/src/mips/stub-cache-mips.cc +418 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mips/virtual-frame-mips.h +0 -0
- data/ext/v8/upstream/3.1.8/src/mirror-debugger.js +2380 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/mksnapshot.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/natives.h +0 -0
- data/ext/v8/upstream/3.1.8/src/objects-debug.cc +722 -0
- data/ext/v8/upstream/3.1.8/src/objects-inl.h +3946 -0
- data/ext/v8/upstream/3.1.8/src/objects-printer.cc +801 -0
- data/ext/v8/upstream/3.1.8/src/objects-visiting.cc +142 -0
- data/ext/v8/upstream/3.1.8/src/objects-visiting.h +401 -0
- data/ext/v8/upstream/3.1.8/src/objects.cc +10044 -0
- data/ext/v8/upstream/3.1.8/src/objects.h +6571 -0
- data/ext/v8/upstream/3.1.8/src/parser.cc +5165 -0
- data/ext/v8/upstream/3.1.8/src/parser.h +802 -0
- data/ext/v8/upstream/3.1.8/src/platform-cygwin.cc +745 -0
- data/ext/v8/upstream/3.1.8/src/platform-freebsd.cc +702 -0
- data/ext/v8/upstream/3.1.8/src/platform-linux.cc +981 -0
- data/ext/v8/upstream/3.1.8/src/platform-macos.cc +732 -0
- data/ext/v8/upstream/3.1.8/src/platform-nullos.cc +498 -0
- data/ext/v8/upstream/3.1.8/src/platform-openbsd.cc +657 -0
- data/ext/v8/upstream/3.1.8/src/platform-posix.cc +399 -0
- data/ext/v8/upstream/3.1.8/src/platform-solaris.cc +714 -0
- data/ext/v8/upstream/3.1.8/src/platform-win32.cc +1974 -0
- data/ext/v8/upstream/3.1.8/src/platform.h +636 -0
- data/ext/v8/upstream/3.1.8/src/preparse-data.cc +183 -0
- data/ext/v8/upstream/3.1.8/src/preparse-data.h +249 -0
- data/ext/v8/upstream/3.1.8/src/preparser-api.cc +213 -0
- data/ext/v8/upstream/3.1.8/src/preparser.cc +1205 -0
- data/ext/v8/upstream/3.1.8/src/preparser.h +278 -0
- data/ext/v8/upstream/3.1.8/src/prettyprinter.cc +1539 -0
- data/ext/v8/upstream/3.1.8/src/prettyprinter.h +223 -0
- data/ext/v8/upstream/3.1.8/src/profile-generator-inl.h +128 -0
- data/ext/v8/upstream/3.1.8/src/profile-generator.cc +2899 -0
- data/ext/v8/upstream/3.1.8/src/profile-generator.h +1151 -0
- data/ext/v8/upstream/3.1.8/src/property.cc +96 -0
- data/ext/v8/upstream/3.1.8/src/property.h +337 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.cc +470 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-irregexp.h +142 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.cc +373 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler-tracer.h +104 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.cc +257 -0
- data/ext/v8/upstream/3.1.8/src/regexp-macro-assembler.h +231 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/3.1.8/src/regexp.js +483 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/register-allocator.h +0 -0
- data/ext/v8/upstream/3.1.8/src/rewriter.cc +1023 -0
- data/ext/v8/upstream/3.1.8/src/rewriter.h +59 -0
- data/ext/v8/upstream/3.1.8/src/runtime-profiler.cc +443 -0
- data/ext/v8/upstream/3.1.8/src/runtime-profiler.h +77 -0
- data/ext/v8/upstream/3.1.8/src/runtime.cc +11592 -0
- data/ext/v8/upstream/3.1.8/src/runtime.h +582 -0
- data/ext/v8/upstream/3.1.8/src/runtime.js +643 -0
- data/ext/v8/upstream/3.1.8/src/safepoint-table.cc +253 -0
- data/ext/v8/upstream/3.1.8/src/safepoint-table.h +263 -0
- data/ext/v8/upstream/3.1.8/src/scanner-base.cc +971 -0
- data/ext/v8/upstream/3.1.8/src/scanner-base.h +653 -0
- data/ext/v8/upstream/3.1.8/src/scanner.cc +586 -0
- data/ext/v8/upstream/3.1.8/src/scanner.h +194 -0
- data/ext/v8/upstream/3.1.8/src/scopeinfo.cc +636 -0
- data/ext/v8/upstream/3.1.8/src/scopeinfo.h +238 -0
- data/ext/v8/upstream/3.1.8/src/scopes.cc +1063 -0
- data/ext/v8/upstream/3.1.8/src/scopes.h +494 -0
- data/ext/v8/upstream/3.1.8/src/serialize.cc +1535 -0
- data/ext/v8/upstream/3.1.8/src/serialize.h +584 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/simulator.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-common.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot-empty.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/snapshot.h +0 -0
- data/ext/v8/upstream/3.1.8/src/spaces-inl.h +524 -0
- data/ext/v8/upstream/3.1.8/src/spaces.cc +3254 -0
- data/ext/v8/upstream/3.1.8/src/spaces.h +2362 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/splay-tree.h +0 -0
- data/ext/v8/upstream/3.1.8/src/string-search.cc +40 -0
- data/ext/v8/upstream/3.1.8/src/string-search.h +567 -0
- data/ext/v8/upstream/3.1.8/src/string-stream.cc +584 -0
- data/ext/v8/upstream/3.1.8/src/string-stream.h +191 -0
- data/ext/v8/upstream/3.1.8/src/string.js +915 -0
- data/ext/v8/upstream/3.1.8/src/strtod.cc +440 -0
- data/ext/v8/upstream/3.1.8/src/strtod.h +40 -0
- data/ext/v8/upstream/3.1.8/src/stub-cache.cc +1878 -0
- data/ext/v8/upstream/3.1.8/src/stub-cache.h +849 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/3.1.8/src/token.cc +63 -0
- data/ext/v8/upstream/3.1.8/src/token.h +288 -0
- data/ext/v8/upstream/3.1.8/src/top.cc +1152 -0
- data/ext/v8/upstream/3.1.8/src/top.h +608 -0
- data/ext/v8/upstream/3.1.8/src/type-info.cc +406 -0
- data/ext/v8/upstream/3.1.8/src/type-info.h +283 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/unbound-queue.h +0 -0
- data/ext/v8/upstream/3.1.8/src/unicode-inl.h +238 -0
- data/ext/v8/upstream/3.1.8/src/unicode.cc +1624 -0
- data/ext/v8/upstream/3.1.8/src/unicode.h +280 -0
- data/ext/v8/upstream/3.1.8/src/uri.js +402 -0
- data/ext/v8/upstream/3.1.8/src/utils.cc +371 -0
- data/ext/v8/upstream/3.1.8/src/utils.h +793 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/v8-counters.h +290 -0
- data/ext/v8/upstream/3.1.8/src/v8.cc +270 -0
- data/ext/v8/upstream/3.1.8/src/v8.h +127 -0
- data/ext/v8/upstream/3.1.8/src/v8checks.h +64 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/v8dll-main.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/v8globals.h +480 -0
- data/ext/v8/upstream/3.1.8/src/v8natives.js +1252 -0
- data/ext/v8/upstream/3.1.8/src/v8preparserdll-main.cc +39 -0
- data/ext/v8/upstream/3.1.8/src/v8threads.cc +440 -0
- data/ext/v8/upstream/3.1.8/src/v8threads.h +157 -0
- data/ext/v8/upstream/3.1.8/src/v8utils.h +354 -0
- data/ext/v8/upstream/3.1.8/src/variables.cc +132 -0
- data/ext/v8/upstream/3.1.8/src/variables.h +212 -0
- data/ext/v8/upstream/3.1.8/src/version.cc +95 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/version.h +0 -0
- data/ext/v8/upstream/3.1.8/src/virtual-frame-heavy-inl.h +190 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-heavy.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame-light.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/virtual-frame.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/virtual-frame.h +59 -0
- data/ext/v8/upstream/3.1.8/src/vm-state-inl.h +134 -0
- data/ext/v8/upstream/3.1.8/src/vm-state.h +68 -0
- data/ext/v8/upstream/3.1.8/src/win32-headers.h +95 -0
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64-inl.h +455 -0
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.cc +3162 -0
- data/ext/v8/upstream/3.1.8/src/x64/assembler-x64.h +1584 -0
- data/ext/v8/upstream/3.1.8/src/x64/builtins-x64.cc +1492 -0
- data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.cc +5150 -0
- data/ext/v8/upstream/3.1.8/src/x64/code-stubs-x64.h +519 -0
- data/ext/v8/upstream/3.1.8/src/x64/codegen-x64-inl.h +46 -0
- data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.cc +8835 -0
- data/ext/v8/upstream/3.1.8/src/x64/codegen-x64.h +750 -0
- data/ext/v8/upstream/3.1.8/src/x64/cpu-x64.cc +86 -0
- data/ext/v8/upstream/3.1.8/src/x64/debug-x64.cc +316 -0
- data/ext/v8/upstream/3.1.8/src/x64/deoptimizer-x64.cc +781 -0
- data/ext/v8/upstream/3.1.8/src/x64/disasm-x64.cc +1737 -0
- data/ext/v8/upstream/3.1.8/src/x64/frames-x64.cc +45 -0
- data/ext/v8/upstream/3.1.8/src/x64/frames-x64.h +130 -0
- data/ext/v8/upstream/3.1.8/src/x64/full-codegen-x64.cc +3984 -0
- data/ext/v8/upstream/3.1.8/src/x64/ic-x64.cc +1761 -0
- data/ext/v8/upstream/3.1.8/src/x64/jump-target-x64.cc +437 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.cc +3639 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-codegen-x64.h +305 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.cc +320 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-gap-resolver-x64.h +74 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.cc +2044 -0
- data/ext/v8/upstream/3.1.8/src/x64/lithium-x64.h +2052 -0
- data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.cc +2660 -0
- data/ext/v8/upstream/3.1.8/src/x64/macro-assembler-x64.h +1852 -0
- data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.cc +1382 -0
- data/ext/v8/upstream/3.1.8/src/x64/regexp-macro-assembler-x64.h +278 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.cc +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/register-allocator-x64.h +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/3.1.8/src/x64/simulator-x64.h +71 -0
- data/ext/v8/upstream/3.1.8/src/x64/stub-cache-x64.cc +3509 -0
- data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.cc +1292 -0
- data/ext/v8/upstream/3.1.8/src/x64/virtual-frame-x64.h +593 -0
- data/ext/v8/upstream/3.1.8/src/zone-inl.h +83 -0
- data/ext/v8/upstream/3.1.8/src/zone.cc +195 -0
- data/ext/v8/upstream/3.1.8/src/zone.h +233 -0
- data/ext/v8/upstream/3.1.8/tools/codemap.js +265 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/consarray.js +0 -0
- data/ext/v8/upstream/3.1.8/tools/csvparser.js +78 -0
- data/ext/v8/upstream/3.1.8/tools/disasm.py +92 -0
- data/ext/v8/upstream/3.1.8/tools/gc-nvp-trace-processor.py +328 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/generate-ten-powers.scm +0 -0
- data/ext/v8/upstream/3.1.8/tools/grokdump.py +840 -0
- data/ext/v8/upstream/3.1.8/tools/gyp/v8.gyp +869 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/js2c.py +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/linux-tick-processor +0 -0
- data/ext/v8/upstream/3.1.8/tools/ll_prof.py +919 -0
- data/ext/v8/upstream/3.1.8/tools/logreader.js +185 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/3.1.8/tools/oom_dump/README +31 -0
- data/ext/v8/upstream/3.1.8/tools/oom_dump/SConstruct +42 -0
- data/ext/v8/upstream/3.1.8/tools/oom_dump/oom_dump.cc +288 -0
- data/ext/v8/upstream/3.1.8/tools/presubmit.py +305 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/3.1.8/tools/profile.js +751 -0
- data/ext/v8/upstream/3.1.8/tools/profile_view.js +219 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/3.1.8/tools/splaytree.js +316 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/stats-viewer.py +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/tickprocessor-driver.js +0 -0
- data/ext/v8/upstream/3.1.8/tools/tickprocessor.js +863 -0
- data/ext/v8/upstream/3.1.8/tools/utils.py +96 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/README.txt +70 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/arm.vsprops +0 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/common.vsprops +34 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/debug.vsprops +17 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/ia32.vsprops +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/js2c.cmd +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_arm.vcproj +0 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base.vcproj +1296 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_arm.vcproj +1234 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_base_x64.vcproj +1296 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample.vcproj +147 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_arm.vcproj +147 -0
- data/ext/v8/upstream/3.1.8/tools/visual_studio/v8_shell_sample_x64.vcproj +163 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/v8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.3.3 → 3.1.8}/tools/visual_studio/x64.vsprops +0 -0
- data/ext/v8/upstream/3.1.8/tools/windows-tick-processor.bat +30 -0
- data/ext/v8/upstream/Makefile +2 -1
- data/ext/v8/v8_template.cpp +2 -2
- data/lib/v8/version.rb +1 -1
- data/spec/redjs/jsapi_spec.rb +2 -2
- metadata +552 -490
- data/ext/v8/upstream/2.3.3/.gitignore +0 -26
- data/ext/v8/upstream/2.3.3/AUTHORS +0 -31
- data/ext/v8/upstream/2.3.3/ChangeLog +0 -1916
- data/ext/v8/upstream/2.3.3/LICENSE +0 -55
- data/ext/v8/upstream/2.3.3/SConstruct +0 -1154
- data/ext/v8/upstream/2.3.3/include/v8-debug.h +0 -381
- data/ext/v8/upstream/2.3.3/include/v8-profiler.h +0 -353
- data/ext/v8/upstream/2.3.3/include/v8.h +0 -3616
- data/ext/v8/upstream/2.3.3/src/SConscript +0 -330
- data/ext/v8/upstream/2.3.3/src/accessors.cc +0 -661
- data/ext/v8/upstream/2.3.3/src/accessors.h +0 -114
- data/ext/v8/upstream/2.3.3/src/allocation.cc +0 -198
- data/ext/v8/upstream/2.3.3/src/allocation.h +0 -169
- data/ext/v8/upstream/2.3.3/src/api.cc +0 -4795
- data/ext/v8/upstream/2.3.3/src/api.h +0 -485
- data/ext/v8/upstream/2.3.3/src/apiutils.h +0 -69
- data/ext/v8/upstream/2.3.3/src/arguments.h +0 -96
- data/ext/v8/upstream/2.3.3/src/arm/assembler-arm-inl.h +0 -305
- data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.cc +0 -2580
- data/ext/v8/upstream/2.3.3/src/arm/assembler-arm.h +0 -1275
- data/ext/v8/upstream/2.3.3/src/arm/builtins-arm.cc +0 -1320
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +0 -48
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.cc +0 -11398
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm.h +0 -1102
- data/ext/v8/upstream/2.3.3/src/arm/constants-arm.cc +0 -154
- data/ext/v8/upstream/2.3.3/src/arm/constants-arm.h +0 -388
- data/ext/v8/upstream/2.3.3/src/arm/cpu-arm.cc +0 -142
- data/ext/v8/upstream/2.3.3/src/arm/debug-arm.cc +0 -309
- data/ext/v8/upstream/2.3.3/src/arm/disasm-arm.cc +0 -1459
- data/ext/v8/upstream/2.3.3/src/arm/fast-codegen-arm.cc +0 -241
- data/ext/v8/upstream/2.3.3/src/arm/frames-arm.cc +0 -123
- data/ext/v8/upstream/2.3.3/src/arm/frames-arm.h +0 -162
- data/ext/v8/upstream/2.3.3/src/arm/full-codegen-arm.cc +0 -3178
- data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +0 -2258
- data/ext/v8/upstream/2.3.3/src/arm/jump-target-arm.cc +0 -164
- data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.cc +0 -1892
- data/ext/v8/upstream/2.3.3/src/arm/macro-assembler-arm.h +0 -727
- data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.cc +0 -1261
- data/ext/v8/upstream/2.3.3/src/arm/regexp-macro-assembler-arm.h +0 -266
- data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.cc +0 -2822
- data/ext/v8/upstream/2.3.3/src/arm/simulator-arm.h +0 -361
- data/ext/v8/upstream/2.3.3/src/arm/stub-cache-arm.cc +0 -2387
- data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.cc +0 -834
- data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm.h +0 -519
- data/ext/v8/upstream/2.3.3/src/array.js +0 -1127
- data/ext/v8/upstream/2.3.3/src/assembler.cc +0 -801
- data/ext/v8/upstream/2.3.3/src/assembler.h +0 -573
- data/ext/v8/upstream/2.3.3/src/ast-inl.h +0 -81
- data/ext/v8/upstream/2.3.3/src/ast.cc +0 -1152
- data/ext/v8/upstream/2.3.3/src/ast.h +0 -2106
- data/ext/v8/upstream/2.3.3/src/bootstrapper.cc +0 -1819
- data/ext/v8/upstream/2.3.3/src/builtins.cc +0 -1529
- data/ext/v8/upstream/2.3.3/src/builtins.h +0 -263
- data/ext/v8/upstream/2.3.3/src/bytecodes-irregexp.h +0 -104
- data/ext/v8/upstream/2.3.3/src/cached-powers.h +0 -119
- data/ext/v8/upstream/2.3.3/src/char-predicates-inl.h +0 -86
- data/ext/v8/upstream/2.3.3/src/checks.cc +0 -100
- data/ext/v8/upstream/2.3.3/src/checks.h +0 -310
- data/ext/v8/upstream/2.3.3/src/circular-queue.cc +0 -121
- data/ext/v8/upstream/2.3.3/src/code-stubs.cc +0 -177
- data/ext/v8/upstream/2.3.3/src/code-stubs.h +0 -177
- data/ext/v8/upstream/2.3.3/src/codegen-inl.h +0 -60
- data/ext/v8/upstream/2.3.3/src/codegen.cc +0 -516
- data/ext/v8/upstream/2.3.3/src/codegen.h +0 -897
- data/ext/v8/upstream/2.3.3/src/compilation-cache.cc +0 -562
- data/ext/v8/upstream/2.3.3/src/compilation-cache.h +0 -102
- data/ext/v8/upstream/2.3.3/src/compiler.cc +0 -654
- data/ext/v8/upstream/2.3.3/src/compiler.h +0 -299
- data/ext/v8/upstream/2.3.3/src/contexts.cc +0 -256
- data/ext/v8/upstream/2.3.3/src/contexts.h +0 -342
- data/ext/v8/upstream/2.3.3/src/conversions.cc +0 -1119
- data/ext/v8/upstream/2.3.3/src/conversions.h +0 -123
- data/ext/v8/upstream/2.3.3/src/counters.h +0 -239
- data/ext/v8/upstream/2.3.3/src/cpu-profiler-inl.h +0 -100
- data/ext/v8/upstream/2.3.3/src/cpu-profiler.cc +0 -538
- data/ext/v8/upstream/2.3.3/src/cpu-profiler.h +0 -285
- data/ext/v8/upstream/2.3.3/src/d8-debug.cc +0 -356
- data/ext/v8/upstream/2.3.3/src/d8-debug.h +0 -155
- data/ext/v8/upstream/2.3.3/src/d8.cc +0 -783
- data/ext/v8/upstream/2.3.3/src/d8.h +0 -227
- data/ext/v8/upstream/2.3.3/src/d8.js +0 -1683
- data/ext/v8/upstream/2.3.3/src/data-flow.cc +0 -758
- data/ext/v8/upstream/2.3.3/src/data-flow.h +0 -278
- data/ext/v8/upstream/2.3.3/src/date.js +0 -1059
- data/ext/v8/upstream/2.3.3/src/dateparser-inl.h +0 -123
- data/ext/v8/upstream/2.3.3/src/dateparser.h +0 -244
- data/ext/v8/upstream/2.3.3/src/debug-agent.cc +0 -427
- data/ext/v8/upstream/2.3.3/src/debug-agent.h +0 -129
- data/ext/v8/upstream/2.3.3/src/debug-debugger.js +0 -2227
- data/ext/v8/upstream/2.3.3/src/debug.cc +0 -3005
- data/ext/v8/upstream/2.3.3/src/debug.h +0 -993
- data/ext/v8/upstream/2.3.3/src/disassembler.cc +0 -312
- data/ext/v8/upstream/2.3.3/src/double.h +0 -169
- data/ext/v8/upstream/2.3.3/src/dtoa-config.c +0 -92
- data/ext/v8/upstream/2.3.3/src/dtoa.cc +0 -77
- data/ext/v8/upstream/2.3.3/src/dtoa.h +0 -81
- data/ext/v8/upstream/2.3.3/src/execution.cc +0 -809
- data/ext/v8/upstream/2.3.3/src/execution.h +0 -336
- data/ext/v8/upstream/2.3.3/src/factory.cc +0 -1003
- data/ext/v8/upstream/2.3.3/src/factory.h +0 -410
- data/ext/v8/upstream/2.3.3/src/fast-codegen.cc +0 -746
- data/ext/v8/upstream/2.3.3/src/fast-codegen.h +0 -161
- data/ext/v8/upstream/2.3.3/src/fast-dtoa.cc +0 -505
- data/ext/v8/upstream/2.3.3/src/fast-dtoa.h +0 -58
- data/ext/v8/upstream/2.3.3/src/flag-definitions.h +0 -455
- data/ext/v8/upstream/2.3.3/src/flags.cc +0 -551
- data/ext/v8/upstream/2.3.3/src/flags.h +0 -81
- data/ext/v8/upstream/2.3.3/src/flow-graph.cc +0 -763
- data/ext/v8/upstream/2.3.3/src/flow-graph.h +0 -180
- data/ext/v8/upstream/2.3.3/src/frame-element.h +0 -273
- data/ext/v8/upstream/2.3.3/src/frames-inl.h +0 -217
- data/ext/v8/upstream/2.3.3/src/frames.cc +0 -826
- data/ext/v8/upstream/2.3.3/src/frames.h +0 -682
- data/ext/v8/upstream/2.3.3/src/full-codegen.cc +0 -1443
- data/ext/v8/upstream/2.3.3/src/full-codegen.h +0 -548
- data/ext/v8/upstream/2.3.3/src/func-name-inferrer.cc +0 -76
- data/ext/v8/upstream/2.3.3/src/func-name-inferrer.h +0 -135
- data/ext/v8/upstream/2.3.3/src/global-handles.cc +0 -520
- data/ext/v8/upstream/2.3.3/src/global-handles.h +0 -180
- data/ext/v8/upstream/2.3.3/src/globals.h +0 -669
- data/ext/v8/upstream/2.3.3/src/handles-inl.h +0 -76
- data/ext/v8/upstream/2.3.3/src/handles.cc +0 -825
- data/ext/v8/upstream/2.3.3/src/handles.h +0 -393
- data/ext/v8/upstream/2.3.3/src/hashmap.cc +0 -226
- data/ext/v8/upstream/2.3.3/src/hashmap.h +0 -120
- data/ext/v8/upstream/2.3.3/src/heap-inl.h +0 -493
- data/ext/v8/upstream/2.3.3/src/heap-profiler.cc +0 -779
- data/ext/v8/upstream/2.3.3/src/heap-profiler.h +0 -323
- data/ext/v8/upstream/2.3.3/src/heap.cc +0 -4994
- data/ext/v8/upstream/2.3.3/src/heap.h +0 -1984
- data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32-inl.h +0 -360
- data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.cc +0 -2600
- data/ext/v8/upstream/2.3.3/src/ia32/assembler-ia32.h +0 -969
- data/ext/v8/upstream/2.3.3/src/ia32/builtins-ia32.cc +0 -1261
- data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.cc +0 -13968
- data/ext/v8/upstream/2.3.3/src/ia32/codegen-ia32.h +0 -1097
- data/ext/v8/upstream/2.3.3/src/ia32/cpu-ia32.cc +0 -83
- data/ext/v8/upstream/2.3.3/src/ia32/debug-ia32.cc +0 -309
- data/ext/v8/upstream/2.3.3/src/ia32/disasm-ia32.cc +0 -1471
- data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.cc +0 -954
- data/ext/v8/upstream/2.3.3/src/ia32/fast-codegen-ia32.h +0 -155
- data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.cc +0 -115
- data/ext/v8/upstream/2.3.3/src/ia32/frames-ia32.h +0 -135
- data/ext/v8/upstream/2.3.3/src/ia32/full-codegen-ia32.cc +0 -3281
- data/ext/v8/upstream/2.3.3/src/ia32/ic-ia32.cc +0 -1966
- data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.cc +0 -1610
- data/ext/v8/upstream/2.3.3/src/ia32/macro-assembler-ia32.h +0 -610
- data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.cc +0 -1247
- data/ext/v8/upstream/2.3.3/src/ia32/regexp-macro-assembler-ia32.h +0 -214
- data/ext/v8/upstream/2.3.3/src/ia32/simulator-ia32.h +0 -62
- data/ext/v8/upstream/2.3.3/src/ia32/stub-cache-ia32.cc +0 -2750
- data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.cc +0 -1334
- data/ext/v8/upstream/2.3.3/src/ia32/virtual-frame-ia32.h +0 -627
- data/ext/v8/upstream/2.3.3/src/ic-inl.h +0 -120
- data/ext/v8/upstream/2.3.3/src/ic.cc +0 -1827
- data/ext/v8/upstream/2.3.3/src/ic.h +0 -515
- data/ext/v8/upstream/2.3.3/src/interpreter-irregexp.cc +0 -646
- data/ext/v8/upstream/2.3.3/src/json.js +0 -268
- data/ext/v8/upstream/2.3.3/src/jsregexp.cc +0 -5283
- data/ext/v8/upstream/2.3.3/src/jsregexp.h +0 -1463
- data/ext/v8/upstream/2.3.3/src/jump-target-heavy.cc +0 -429
- data/ext/v8/upstream/2.3.3/src/jump-target-heavy.h +0 -244
- data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +0 -110
- data/ext/v8/upstream/2.3.3/src/jump-target-light.h +0 -192
- data/ext/v8/upstream/2.3.3/src/list-inl.h +0 -166
- data/ext/v8/upstream/2.3.3/src/list.h +0 -159
- data/ext/v8/upstream/2.3.3/src/liveedit-debugger.js +0 -1057
- data/ext/v8/upstream/2.3.3/src/liveedit.cc +0 -1480
- data/ext/v8/upstream/2.3.3/src/liveedit.h +0 -170
- data/ext/v8/upstream/2.3.3/src/log-utils.cc +0 -497
- data/ext/v8/upstream/2.3.3/src/log-utils.h +0 -289
- data/ext/v8/upstream/2.3.3/src/log.cc +0 -1561
- data/ext/v8/upstream/2.3.3/src/log.h +0 -384
- data/ext/v8/upstream/2.3.3/src/macro-assembler.h +0 -86
- data/ext/v8/upstream/2.3.3/src/macros.py +0 -177
- data/ext/v8/upstream/2.3.3/src/mark-compact.cc +0 -2330
- data/ext/v8/upstream/2.3.3/src/mark-compact.h +0 -451
- data/ext/v8/upstream/2.3.3/src/math.js +0 -264
- data/ext/v8/upstream/2.3.3/src/memory.h +0 -74
- data/ext/v8/upstream/2.3.3/src/messages.cc +0 -183
- data/ext/v8/upstream/2.3.3/src/messages.h +0 -113
- data/ext/v8/upstream/2.3.3/src/messages.js +0 -982
- data/ext/v8/upstream/2.3.3/src/mips/assembler-mips.h +0 -668
- data/ext/v8/upstream/2.3.3/src/mips/builtins-mips.cc +0 -205
- data/ext/v8/upstream/2.3.3/src/mips/codegen-mips.h +0 -434
- data/ext/v8/upstream/2.3.3/src/mips/debug-mips.cc +0 -131
- data/ext/v8/upstream/2.3.3/src/mips/frames-mips.cc +0 -102
- data/ext/v8/upstream/2.3.3/src/mips/ic-mips.cc +0 -220
- data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.cc +0 -1651
- data/ext/v8/upstream/2.3.3/src/mips/simulator-mips.h +0 -311
- data/ext/v8/upstream/2.3.3/src/mips/stub-cache-mips.cc +0 -403
- data/ext/v8/upstream/2.3.3/src/mirror-debugger.js +0 -2380
- data/ext/v8/upstream/2.3.3/src/objects-debug.cc +0 -1366
- data/ext/v8/upstream/2.3.3/src/objects-inl.h +0 -3333
- data/ext/v8/upstream/2.3.3/src/objects.cc +0 -8820
- data/ext/v8/upstream/2.3.3/src/objects.h +0 -5373
- data/ext/v8/upstream/2.3.3/src/oprofile-agent.cc +0 -108
- data/ext/v8/upstream/2.3.3/src/oprofile-agent.h +0 -77
- data/ext/v8/upstream/2.3.3/src/parser.cc +0 -5207
- data/ext/v8/upstream/2.3.3/src/parser.h +0 -197
- data/ext/v8/upstream/2.3.3/src/platform-freebsd.cc +0 -667
- data/ext/v8/upstream/2.3.3/src/platform-linux.cc +0 -862
- data/ext/v8/upstream/2.3.3/src/platform-macos.cc +0 -665
- data/ext/v8/upstream/2.3.3/src/platform-nullos.cc +0 -454
- data/ext/v8/upstream/2.3.3/src/platform-openbsd.cc +0 -622
- data/ext/v8/upstream/2.3.3/src/platform-posix.cc +0 -362
- data/ext/v8/upstream/2.3.3/src/platform-solaris.cc +0 -653
- data/ext/v8/upstream/2.3.3/src/platform-win32.cc +0 -1911
- data/ext/v8/upstream/2.3.3/src/platform.h +0 -577
- data/ext/v8/upstream/2.3.3/src/powers-ten.h +0 -2461
- data/ext/v8/upstream/2.3.3/src/prettyprinter.cc +0 -1531
- data/ext/v8/upstream/2.3.3/src/prettyprinter.h +0 -221
- data/ext/v8/upstream/2.3.3/src/profile-generator-inl.h +0 -148
- data/ext/v8/upstream/2.3.3/src/profile-generator.cc +0 -1830
- data/ext/v8/upstream/2.3.3/src/profile-generator.h +0 -853
- data/ext/v8/upstream/2.3.3/src/property.cc +0 -96
- data/ext/v8/upstream/2.3.3/src/property.h +0 -315
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.cc +0 -464
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-irregexp.h +0 -141
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.cc +0 -356
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler-tracer.h +0 -103
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.cc +0 -261
- data/ext/v8/upstream/2.3.3/src/regexp-macro-assembler.h +0 -228
- data/ext/v8/upstream/2.3.3/src/regexp.js +0 -549
- data/ext/v8/upstream/2.3.3/src/rewriter.cc +0 -1038
- data/ext/v8/upstream/2.3.3/src/rewriter.h +0 -54
- data/ext/v8/upstream/2.3.3/src/runtime.cc +0 -10599
- data/ext/v8/upstream/2.3.3/src/runtime.h +0 -459
- data/ext/v8/upstream/2.3.3/src/runtime.js +0 -629
- data/ext/v8/upstream/2.3.3/src/scanner.cc +0 -1346
- data/ext/v8/upstream/2.3.3/src/scanner.h +0 -503
- data/ext/v8/upstream/2.3.3/src/scopeinfo.cc +0 -637
- data/ext/v8/upstream/2.3.3/src/scopeinfo.h +0 -233
- data/ext/v8/upstream/2.3.3/src/scopes.cc +0 -962
- data/ext/v8/upstream/2.3.3/src/scopes.h +0 -400
- data/ext/v8/upstream/2.3.3/src/serialize.cc +0 -1461
- data/ext/v8/upstream/2.3.3/src/serialize.h +0 -581
- data/ext/v8/upstream/2.3.3/src/spaces-inl.h +0 -483
- data/ext/v8/upstream/2.3.3/src/spaces.cc +0 -2901
- data/ext/v8/upstream/2.3.3/src/spaces.h +0 -2197
- data/ext/v8/upstream/2.3.3/src/string-stream.cc +0 -584
- data/ext/v8/upstream/2.3.3/src/string-stream.h +0 -189
- data/ext/v8/upstream/2.3.3/src/string.js +0 -1006
- data/ext/v8/upstream/2.3.3/src/stub-cache.cc +0 -1379
- data/ext/v8/upstream/2.3.3/src/stub-cache.h +0 -756
- data/ext/v8/upstream/2.3.3/src/third_party/dtoa/COPYING +0 -15
- data/ext/v8/upstream/2.3.3/src/third_party/dtoa/dtoa.c +0 -3334
- data/ext/v8/upstream/2.3.3/src/token.cc +0 -56
- data/ext/v8/upstream/2.3.3/src/token.h +0 -270
- data/ext/v8/upstream/2.3.3/src/top.cc +0 -1067
- data/ext/v8/upstream/2.3.3/src/top.h +0 -463
- data/ext/v8/upstream/2.3.3/src/type-info.cc +0 -53
- data/ext/v8/upstream/2.3.3/src/type-info.h +0 -244
- data/ext/v8/upstream/2.3.3/src/unicode-inl.h +0 -238
- data/ext/v8/upstream/2.3.3/src/unicode.cc +0 -749
- data/ext/v8/upstream/2.3.3/src/unicode.h +0 -279
- data/ext/v8/upstream/2.3.3/src/uri.js +0 -415
- data/ext/v8/upstream/2.3.3/src/utils.cc +0 -285
- data/ext/v8/upstream/2.3.3/src/utils.h +0 -745
- data/ext/v8/upstream/2.3.3/src/v8-counters.h +0 -250
- data/ext/v8/upstream/2.3.3/src/v8.cc +0 -228
- data/ext/v8/upstream/2.3.3/src/v8.h +0 -121
- data/ext/v8/upstream/2.3.3/src/v8natives.js +0 -1188
- data/ext/v8/upstream/2.3.3/src/v8threads.cc +0 -461
- data/ext/v8/upstream/2.3.3/src/v8threads.h +0 -159
- data/ext/v8/upstream/2.3.3/src/variables.cc +0 -119
- data/ext/v8/upstream/2.3.3/src/variables.h +0 -205
- data/ext/v8/upstream/2.3.3/src/version.cc +0 -88
- data/ext/v8/upstream/2.3.3/src/virtual-frame-heavy-inl.h +0 -192
- data/ext/v8/upstream/2.3.3/src/virtual-frame.h +0 -46
- data/ext/v8/upstream/2.3.3/src/vm-state-inl.h +0 -137
- data/ext/v8/upstream/2.3.3/src/vm-state.cc +0 -39
- data/ext/v8/upstream/2.3.3/src/vm-state.h +0 -77
- data/ext/v8/upstream/2.3.3/src/x64/assembler-x64-inl.h +0 -400
- data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.cc +0 -2963
- data/ext/v8/upstream/2.3.3/src/x64/assembler-x64.h +0 -1438
- data/ext/v8/upstream/2.3.3/src/x64/builtins-x64.cc +0 -1296
- data/ext/v8/upstream/2.3.3/src/x64/codegen-x64-inl.h +0 -46
- data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.cc +0 -12491
- data/ext/v8/upstream/2.3.3/src/x64/codegen-x64.h +0 -1090
- data/ext/v8/upstream/2.3.3/src/x64/cpu-x64.cc +0 -83
- data/ext/v8/upstream/2.3.3/src/x64/debug-x64.cc +0 -267
- data/ext/v8/upstream/2.3.3/src/x64/disasm-x64.cc +0 -1696
- data/ext/v8/upstream/2.3.3/src/x64/fast-codegen-x64.cc +0 -250
- data/ext/v8/upstream/2.3.3/src/x64/frames-x64.cc +0 -113
- data/ext/v8/upstream/2.3.3/src/x64/frames-x64.h +0 -125
- data/ext/v8/upstream/2.3.3/src/x64/full-codegen-x64.cc +0 -3270
- data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +0 -1907
- data/ext/v8/upstream/2.3.3/src/x64/jump-target-x64.cc +0 -437
- data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.cc +0 -2793
- data/ext/v8/upstream/2.3.3/src/x64/macro-assembler-x64.h +0 -916
- data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.cc +0 -1374
- data/ext/v8/upstream/2.3.3/src/x64/regexp-macro-assembler-x64.h +0 -277
- data/ext/v8/upstream/2.3.3/src/x64/simulator-x64.h +0 -63
- data/ext/v8/upstream/2.3.3/src/x64/stub-cache-x64.cc +0 -2560
- data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.cc +0 -1264
- data/ext/v8/upstream/2.3.3/src/x64/virtual-frame-x64.h +0 -590
- data/ext/v8/upstream/2.3.3/src/zone-inl.h +0 -82
- data/ext/v8/upstream/2.3.3/src/zone.cc +0 -194
- data/ext/v8/upstream/2.3.3/src/zone.h +0 -221
- data/ext/v8/upstream/2.3.3/tools/codemap.js +0 -270
- data/ext/v8/upstream/2.3.3/tools/csvparser.js +0 -83
- data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +0 -317
- data/ext/v8/upstream/2.3.3/tools/gyp/v8.gyp +0 -749
- data/ext/v8/upstream/2.3.3/tools/linux-tick-processor.py +0 -78
- data/ext/v8/upstream/2.3.3/tools/logreader.js +0 -338
- data/ext/v8/upstream/2.3.3/tools/oprofile/annotate +0 -7
- data/ext/v8/upstream/2.3.3/tools/oprofile/common +0 -19
- data/ext/v8/upstream/2.3.3/tools/oprofile/dump +0 -7
- data/ext/v8/upstream/2.3.3/tools/oprofile/report +0 -7
- data/ext/v8/upstream/2.3.3/tools/oprofile/reset +0 -7
- data/ext/v8/upstream/2.3.3/tools/oprofile/run +0 -14
- data/ext/v8/upstream/2.3.3/tools/oprofile/shutdown +0 -7
- data/ext/v8/upstream/2.3.3/tools/oprofile/start +0 -7
- data/ext/v8/upstream/2.3.3/tools/presubmit.py +0 -299
- data/ext/v8/upstream/2.3.3/tools/profile.js +0 -691
- data/ext/v8/upstream/2.3.3/tools/profile_view.js +0 -224
- data/ext/v8/upstream/2.3.3/tools/splaytree.js +0 -322
- data/ext/v8/upstream/2.3.3/tools/splaytree.py +0 -226
- data/ext/v8/upstream/2.3.3/tools/tickprocessor.js +0 -862
- data/ext/v8/upstream/2.3.3/tools/tickprocessor.py +0 -571
- data/ext/v8/upstream/2.3.3/tools/utils.py +0 -88
- data/ext/v8/upstream/2.3.3/tools/visual_studio/README.txt +0 -71
- data/ext/v8/upstream/2.3.3/tools/visual_studio/common.vsprops +0 -34
- data/ext/v8/upstream/2.3.3/tools/visual_studio/debug.vsprops +0 -17
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base.vcproj +0 -1143
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_arm.vcproj +0 -1115
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_base_x64.vcproj +0 -1096
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample.vcproj +0 -145
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -145
- data/ext/v8/upstream/2.3.3/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -161
- data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.bat +0 -29
- data/ext/v8/upstream/2.3.3/tools/windows-tick-processor.py +0 -137
File without changes
|
@@ -0,0 +1,122 @@
|
|
1
|
+
// Copyright 2010 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 "circular-queue-inl.h"
|
31
|
+
|
32
|
+
namespace v8 {
|
33
|
+
namespace internal {
|
34
|
+
|
35
|
+
|
36
|
+
SamplingCircularQueue::SamplingCircularQueue(int record_size_in_bytes,
|
37
|
+
int desired_chunk_size_in_bytes,
|
38
|
+
int buffer_size_in_chunks)
|
39
|
+
: record_size_(record_size_in_bytes / sizeof(Cell)),
|
40
|
+
chunk_size_in_bytes_(desired_chunk_size_in_bytes / record_size_in_bytes *
|
41
|
+
record_size_in_bytes),
|
42
|
+
chunk_size_(chunk_size_in_bytes_ / sizeof(Cell)),
|
43
|
+
buffer_size_(chunk_size_ * buffer_size_in_chunks),
|
44
|
+
// The distance ensures that producer and consumer never step on
|
45
|
+
// each other's chunks and helps eviction of produced data from
|
46
|
+
// the CPU cache (having that chunk size is bigger than the cache.)
|
47
|
+
producer_consumer_distance_(2 * chunk_size_),
|
48
|
+
buffer_(NewArray<Cell>(buffer_size_ + 1)) {
|
49
|
+
ASSERT(buffer_size_in_chunks > 2);
|
50
|
+
// Clean up the whole buffer to avoid encountering a random kEnd
|
51
|
+
// while enqueuing.
|
52
|
+
for (int i = 0; i < buffer_size_; ++i) {
|
53
|
+
buffer_[i] = kClear;
|
54
|
+
}
|
55
|
+
buffer_[buffer_size_] = kEnd;
|
56
|
+
|
57
|
+
// Layout producer and consumer position pointers each on their own
|
58
|
+
// cache lines to avoid cache lines thrashing due to simultaneous
|
59
|
+
// updates of positions by different processor cores.
|
60
|
+
const int positions_size =
|
61
|
+
RoundUp(1, kProcessorCacheLineSize) +
|
62
|
+
RoundUp(static_cast<int>(sizeof(ProducerPosition)),
|
63
|
+
kProcessorCacheLineSize) +
|
64
|
+
RoundUp(static_cast<int>(sizeof(ConsumerPosition)),
|
65
|
+
kProcessorCacheLineSize);
|
66
|
+
positions_ = NewArray<byte>(positions_size);
|
67
|
+
|
68
|
+
producer_pos_ = reinterpret_cast<ProducerPosition*>(
|
69
|
+
RoundUp(positions_, kProcessorCacheLineSize));
|
70
|
+
producer_pos_->enqueue_pos = buffer_;
|
71
|
+
|
72
|
+
consumer_pos_ = reinterpret_cast<ConsumerPosition*>(
|
73
|
+
reinterpret_cast<byte*>(producer_pos_) + kProcessorCacheLineSize);
|
74
|
+
ASSERT(reinterpret_cast<byte*>(consumer_pos_ + 1) <=
|
75
|
+
positions_ + positions_size);
|
76
|
+
consumer_pos_->dequeue_chunk_pos = buffer_;
|
77
|
+
consumer_pos_->dequeue_chunk_poll_pos = buffer_ + producer_consumer_distance_;
|
78
|
+
consumer_pos_->dequeue_pos = NULL;
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
SamplingCircularQueue::~SamplingCircularQueue() {
|
83
|
+
DeleteArray(positions_);
|
84
|
+
DeleteArray(buffer_);
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
void* SamplingCircularQueue::StartDequeue() {
|
89
|
+
if (consumer_pos_->dequeue_pos != NULL) {
|
90
|
+
return consumer_pos_->dequeue_pos;
|
91
|
+
} else {
|
92
|
+
if (*consumer_pos_->dequeue_chunk_poll_pos != kClear) {
|
93
|
+
consumer_pos_->dequeue_pos = consumer_pos_->dequeue_chunk_pos;
|
94
|
+
consumer_pos_->dequeue_end_pos = consumer_pos_->dequeue_pos + chunk_size_;
|
95
|
+
return consumer_pos_->dequeue_pos;
|
96
|
+
} else {
|
97
|
+
return NULL;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
void SamplingCircularQueue::FinishDequeue() {
|
104
|
+
consumer_pos_->dequeue_pos += record_size_;
|
105
|
+
if (consumer_pos_->dequeue_pos < consumer_pos_->dequeue_end_pos) return;
|
106
|
+
// Move to next chunk.
|
107
|
+
consumer_pos_->dequeue_pos = NULL;
|
108
|
+
*consumer_pos_->dequeue_chunk_pos = kClear;
|
109
|
+
consumer_pos_->dequeue_chunk_pos += chunk_size_;
|
110
|
+
WrapPositionIfNeeded(&consumer_pos_->dequeue_chunk_pos);
|
111
|
+
consumer_pos_->dequeue_chunk_poll_pos += chunk_size_;
|
112
|
+
WrapPositionIfNeeded(&consumer_pos_->dequeue_chunk_poll_pos);
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
void SamplingCircularQueue::FlushResidualRecords() {
|
117
|
+
// Eliminate producer / consumer distance.
|
118
|
+
consumer_pos_->dequeue_chunk_poll_pos = consumer_pos_->dequeue_chunk_pos;
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
} } // namespace v8::internal
|
File without changes
|
@@ -0,0 +1,230 @@
|
|
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 "v8.h"
|
29
|
+
|
30
|
+
#include "bootstrapper.h"
|
31
|
+
#include "code-stubs.h"
|
32
|
+
#include "factory.h"
|
33
|
+
#include "gdb-jit.h"
|
34
|
+
#include "macro-assembler.h"
|
35
|
+
|
36
|
+
namespace v8 {
|
37
|
+
namespace internal {
|
38
|
+
|
39
|
+
bool CodeStub::FindCodeInCache(Code** code_out) {
|
40
|
+
int index = Heap::code_stubs()->FindEntry(GetKey());
|
41
|
+
if (index != NumberDictionary::kNotFound) {
|
42
|
+
*code_out = Code::cast(Heap::code_stubs()->ValueAt(index));
|
43
|
+
return true;
|
44
|
+
}
|
45
|
+
return false;
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
void CodeStub::GenerateCode(MacroAssembler* masm) {
|
50
|
+
// Update the static counter each time a new code stub is generated.
|
51
|
+
Counters::code_stubs.Increment();
|
52
|
+
|
53
|
+
// Nested stubs are not allowed for leafs.
|
54
|
+
AllowStubCallsScope allow_scope(masm, AllowsStubCalls());
|
55
|
+
|
56
|
+
// Generate the code for the stub.
|
57
|
+
masm->set_generating_stub(true);
|
58
|
+
Generate(masm);
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
void CodeStub::RecordCodeGeneration(Code* code, MacroAssembler* masm) {
|
63
|
+
code->set_major_key(MajorKey());
|
64
|
+
|
65
|
+
PROFILE(CodeCreateEvent(Logger::STUB_TAG, code, GetName()));
|
66
|
+
GDBJIT(AddCode(GDBJITInterface::STUB, GetName(), code));
|
67
|
+
Counters::total_stubs_code_size.Increment(code->instruction_size());
|
68
|
+
|
69
|
+
#ifdef ENABLE_DISASSEMBLER
|
70
|
+
if (FLAG_print_code_stubs) {
|
71
|
+
#ifdef DEBUG
|
72
|
+
Print();
|
73
|
+
#endif
|
74
|
+
code->Disassemble(GetName());
|
75
|
+
PrintF("\n");
|
76
|
+
}
|
77
|
+
#endif
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
int CodeStub::GetCodeKind() {
|
82
|
+
return Code::STUB;
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
Handle<Code> CodeStub::GetCode() {
|
87
|
+
Code* code;
|
88
|
+
if (!FindCodeInCache(&code)) {
|
89
|
+
v8::HandleScope scope;
|
90
|
+
|
91
|
+
// Generate the new code.
|
92
|
+
MacroAssembler masm(NULL, 256);
|
93
|
+
GenerateCode(&masm);
|
94
|
+
|
95
|
+
// Create the code object.
|
96
|
+
CodeDesc desc;
|
97
|
+
masm.GetCode(&desc);
|
98
|
+
|
99
|
+
// Copy the generated code into a heap object.
|
100
|
+
Code::Flags flags = Code::ComputeFlags(
|
101
|
+
static_cast<Code::Kind>(GetCodeKind()),
|
102
|
+
InLoop(),
|
103
|
+
GetICState());
|
104
|
+
Handle<Code> new_object = Factory::NewCode(desc, flags, masm.CodeObject());
|
105
|
+
RecordCodeGeneration(*new_object, &masm);
|
106
|
+
FinishCode(*new_object);
|
107
|
+
|
108
|
+
// Update the dictionary and the root in Heap.
|
109
|
+
Handle<NumberDictionary> dict =
|
110
|
+
Factory::DictionaryAtNumberPut(
|
111
|
+
Handle<NumberDictionary>(Heap::code_stubs()),
|
112
|
+
GetKey(),
|
113
|
+
new_object);
|
114
|
+
Heap::public_set_code_stubs(*dict);
|
115
|
+
|
116
|
+
code = *new_object;
|
117
|
+
}
|
118
|
+
|
119
|
+
return Handle<Code>(code);
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
MaybeObject* CodeStub::TryGetCode() {
|
124
|
+
Code* code;
|
125
|
+
if (!FindCodeInCache(&code)) {
|
126
|
+
// Generate the new code.
|
127
|
+
MacroAssembler masm(NULL, 256);
|
128
|
+
GenerateCode(&masm);
|
129
|
+
|
130
|
+
// Create the code object.
|
131
|
+
CodeDesc desc;
|
132
|
+
masm.GetCode(&desc);
|
133
|
+
|
134
|
+
// Try to copy the generated code into a heap object.
|
135
|
+
Code::Flags flags = Code::ComputeFlags(
|
136
|
+
static_cast<Code::Kind>(GetCodeKind()),
|
137
|
+
InLoop(),
|
138
|
+
GetICState());
|
139
|
+
Object* new_object;
|
140
|
+
{ MaybeObject* maybe_new_object =
|
141
|
+
Heap::CreateCode(desc, flags, masm.CodeObject());
|
142
|
+
if (!maybe_new_object->ToObject(&new_object)) return maybe_new_object;
|
143
|
+
}
|
144
|
+
code = Code::cast(new_object);
|
145
|
+
RecordCodeGeneration(code, &masm);
|
146
|
+
FinishCode(code);
|
147
|
+
|
148
|
+
// Try to update the code cache but do not fail if unable.
|
149
|
+
MaybeObject* maybe_new_object =
|
150
|
+
Heap::code_stubs()->AtNumberPut(GetKey(), code);
|
151
|
+
if (maybe_new_object->ToObject(&new_object)) {
|
152
|
+
Heap::public_set_code_stubs(NumberDictionary::cast(new_object));
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
return code;
|
157
|
+
}
|
158
|
+
|
159
|
+
|
160
|
+
const char* CodeStub::MajorName(CodeStub::Major major_key,
|
161
|
+
bool allow_unknown_keys) {
|
162
|
+
switch (major_key) {
|
163
|
+
#define DEF_CASE(name) case name: return #name;
|
164
|
+
CODE_STUB_LIST(DEF_CASE)
|
165
|
+
#undef DEF_CASE
|
166
|
+
default:
|
167
|
+
if (!allow_unknown_keys) {
|
168
|
+
UNREACHABLE();
|
169
|
+
}
|
170
|
+
return NULL;
|
171
|
+
}
|
172
|
+
}
|
173
|
+
|
174
|
+
|
175
|
+
int ICCompareStub::MinorKey() {
|
176
|
+
return OpField::encode(op_ - Token::EQ) | StateField::encode(state_);
|
177
|
+
}
|
178
|
+
|
179
|
+
|
180
|
+
void ICCompareStub::Generate(MacroAssembler* masm) {
|
181
|
+
switch (state_) {
|
182
|
+
case CompareIC::UNINITIALIZED:
|
183
|
+
GenerateMiss(masm);
|
184
|
+
break;
|
185
|
+
case CompareIC::SMIS:
|
186
|
+
GenerateSmis(masm);
|
187
|
+
break;
|
188
|
+
case CompareIC::HEAP_NUMBERS:
|
189
|
+
GenerateHeapNumbers(masm);
|
190
|
+
break;
|
191
|
+
case CompareIC::OBJECTS:
|
192
|
+
GenerateObjects(masm);
|
193
|
+
break;
|
194
|
+
default:
|
195
|
+
UNREACHABLE();
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
199
|
+
|
200
|
+
const char* InstanceofStub::GetName() {
|
201
|
+
if (name_ != NULL) return name_;
|
202
|
+
const int kMaxNameLength = 100;
|
203
|
+
name_ = Bootstrapper::AllocateAutoDeletedArray(kMaxNameLength);
|
204
|
+
if (name_ == NULL) return "OOM";
|
205
|
+
|
206
|
+
const char* args = "";
|
207
|
+
if (HasArgsInRegisters()) {
|
208
|
+
args = "_REGS";
|
209
|
+
}
|
210
|
+
|
211
|
+
const char* inline_check = "";
|
212
|
+
if (HasCallSiteInlineCheck()) {
|
213
|
+
inline_check = "_INLINE";
|
214
|
+
}
|
215
|
+
|
216
|
+
const char* return_true_false_object = "";
|
217
|
+
if (ReturnTrueFalseObject()) {
|
218
|
+
return_true_false_object = "_TRUEFALSE";
|
219
|
+
}
|
220
|
+
|
221
|
+
OS::SNPrintF(Vector<char>(name_, kMaxNameLength),
|
222
|
+
"InstanceofStub%s%s%s",
|
223
|
+
args,
|
224
|
+
inline_check,
|
225
|
+
return_true_false_object);
|
226
|
+
return name_;
|
227
|
+
}
|
228
|
+
|
229
|
+
|
230
|
+
} } // namespace v8::internal
|
@@ -0,0 +1,950 @@
|
|
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
|
+
#ifndef V8_CODE_STUBS_H_
|
29
|
+
#define V8_CODE_STUBS_H_
|
30
|
+
|
31
|
+
#include "globals.h"
|
32
|
+
|
33
|
+
namespace v8 {
|
34
|
+
namespace internal {
|
35
|
+
|
36
|
+
// List of code stubs used on all platforms. The order in this list is important
|
37
|
+
// as only the stubs up to and including Instanceof allows nested stub calls.
|
38
|
+
#define CODE_STUB_LIST_ALL_PLATFORMS(V) \
|
39
|
+
V(CallFunction) \
|
40
|
+
V(GenericBinaryOp) \
|
41
|
+
V(TypeRecordingBinaryOp) \
|
42
|
+
V(StringAdd) \
|
43
|
+
V(StringCharAt) \
|
44
|
+
V(SubString) \
|
45
|
+
V(StringCompare) \
|
46
|
+
V(SmiOp) \
|
47
|
+
V(Compare) \
|
48
|
+
V(CompareIC) \
|
49
|
+
V(MathPow) \
|
50
|
+
V(TranscendentalCache) \
|
51
|
+
V(Instanceof) \
|
52
|
+
V(ConvertToDouble) \
|
53
|
+
V(WriteInt32ToHeapNumber) \
|
54
|
+
V(IntegerMod) \
|
55
|
+
V(StackCheck) \
|
56
|
+
V(FastNewClosure) \
|
57
|
+
V(FastNewContext) \
|
58
|
+
V(FastCloneShallowArray) \
|
59
|
+
V(GenericUnaryOp) \
|
60
|
+
V(RevertToNumber) \
|
61
|
+
V(ToBoolean) \
|
62
|
+
V(ToNumber) \
|
63
|
+
V(CounterOp) \
|
64
|
+
V(ArgumentsAccess) \
|
65
|
+
V(RegExpExec) \
|
66
|
+
V(RegExpConstructResult) \
|
67
|
+
V(NumberToString) \
|
68
|
+
V(CEntry) \
|
69
|
+
V(JSEntry) \
|
70
|
+
V(DebuggerStatement)
|
71
|
+
|
72
|
+
// List of code stubs only used on ARM platforms.
|
73
|
+
#ifdef V8_TARGET_ARCH_ARM
|
74
|
+
#define CODE_STUB_LIST_ARM(V) \
|
75
|
+
V(GetProperty) \
|
76
|
+
V(SetProperty) \
|
77
|
+
V(InvokeBuiltin) \
|
78
|
+
V(RegExpCEntry) \
|
79
|
+
V(DirectCEntry)
|
80
|
+
#else
|
81
|
+
#define CODE_STUB_LIST_ARM(V)
|
82
|
+
#endif
|
83
|
+
|
84
|
+
// Combined list of code stubs.
|
85
|
+
#define CODE_STUB_LIST(V) \
|
86
|
+
CODE_STUB_LIST_ALL_PLATFORMS(V) \
|
87
|
+
CODE_STUB_LIST_ARM(V)
|
88
|
+
|
89
|
+
// Mode to overwrite BinaryExpression values.
|
90
|
+
enum OverwriteMode { NO_OVERWRITE, OVERWRITE_LEFT, OVERWRITE_RIGHT };
|
91
|
+
enum UnaryOverwriteMode { UNARY_OVERWRITE, UNARY_NO_OVERWRITE };
|
92
|
+
|
93
|
+
|
94
|
+
// Stub is base classes of all stubs.
|
95
|
+
class CodeStub BASE_EMBEDDED {
|
96
|
+
public:
|
97
|
+
enum Major {
|
98
|
+
#define DEF_ENUM(name) name,
|
99
|
+
CODE_STUB_LIST(DEF_ENUM)
|
100
|
+
#undef DEF_ENUM
|
101
|
+
NoCache, // marker for stubs that do custom caching
|
102
|
+
NUMBER_OF_IDS
|
103
|
+
};
|
104
|
+
|
105
|
+
// Retrieve the code for the stub. Generate the code if needed.
|
106
|
+
Handle<Code> GetCode();
|
107
|
+
|
108
|
+
// Retrieve the code for the stub if already generated. Do not
|
109
|
+
// generate the code if not already generated and instead return a
|
110
|
+
// retry after GC Failure object.
|
111
|
+
MUST_USE_RESULT MaybeObject* TryGetCode();
|
112
|
+
|
113
|
+
static Major MajorKeyFromKey(uint32_t key) {
|
114
|
+
return static_cast<Major>(MajorKeyBits::decode(key));
|
115
|
+
}
|
116
|
+
static int MinorKeyFromKey(uint32_t key) {
|
117
|
+
return MinorKeyBits::decode(key);
|
118
|
+
}
|
119
|
+
|
120
|
+
// Gets the major key from a code object that is a code stub or binary op IC.
|
121
|
+
static Major GetMajorKey(Code* code_stub) {
|
122
|
+
return static_cast<Major>(code_stub->major_key());
|
123
|
+
}
|
124
|
+
|
125
|
+
static const char* MajorName(Major major_key, bool allow_unknown_keys);
|
126
|
+
|
127
|
+
virtual ~CodeStub() {}
|
128
|
+
|
129
|
+
protected:
|
130
|
+
static const int kMajorBits = 6;
|
131
|
+
static const int kMinorBits = kBitsPerInt - kSmiTagSize - kMajorBits;
|
132
|
+
|
133
|
+
private:
|
134
|
+
// Lookup the code in the (possibly custom) cache.
|
135
|
+
bool FindCodeInCache(Code** code_out);
|
136
|
+
|
137
|
+
// Nonvirtual wrapper around the stub-specific Generate function. Call
|
138
|
+
// this function to set up the macro assembler and generate the code.
|
139
|
+
void GenerateCode(MacroAssembler* masm);
|
140
|
+
|
141
|
+
// Generates the assembler code for the stub.
|
142
|
+
virtual void Generate(MacroAssembler* masm) = 0;
|
143
|
+
|
144
|
+
// Perform bookkeeping required after code generation when stub code is
|
145
|
+
// initially generated.
|
146
|
+
void RecordCodeGeneration(Code* code, MacroAssembler* masm);
|
147
|
+
|
148
|
+
// Finish the code object after it has been generated.
|
149
|
+
virtual void FinishCode(Code* code) { }
|
150
|
+
|
151
|
+
// Returns information for computing the number key.
|
152
|
+
virtual Major MajorKey() = 0;
|
153
|
+
virtual int MinorKey() = 0;
|
154
|
+
|
155
|
+
// The CallFunctionStub needs to override this so it can encode whether a
|
156
|
+
// lazily generated function should be fully optimized or not.
|
157
|
+
virtual InLoopFlag InLoop() { return NOT_IN_LOOP; }
|
158
|
+
|
159
|
+
// GenericBinaryOpStub needs to override this.
|
160
|
+
virtual int GetCodeKind();
|
161
|
+
|
162
|
+
// GenericBinaryOpStub needs to override this.
|
163
|
+
virtual InlineCacheState GetICState() {
|
164
|
+
return UNINITIALIZED;
|
165
|
+
}
|
166
|
+
|
167
|
+
// Returns a name for logging/debugging purposes.
|
168
|
+
virtual const char* GetName() { return MajorName(MajorKey(), false); }
|
169
|
+
|
170
|
+
#ifdef DEBUG
|
171
|
+
virtual void Print() { PrintF("%s\n", GetName()); }
|
172
|
+
#endif
|
173
|
+
|
174
|
+
// Computes the key based on major and minor.
|
175
|
+
uint32_t GetKey() {
|
176
|
+
ASSERT(static_cast<int>(MajorKey()) < NUMBER_OF_IDS);
|
177
|
+
return MinorKeyBits::encode(MinorKey()) |
|
178
|
+
MajorKeyBits::encode(MajorKey());
|
179
|
+
}
|
180
|
+
|
181
|
+
bool AllowsStubCalls() { return MajorKey() <= Instanceof; }
|
182
|
+
|
183
|
+
class MajorKeyBits: public BitField<uint32_t, 0, kMajorBits> {};
|
184
|
+
class MinorKeyBits: public BitField<uint32_t, kMajorBits, kMinorBits> {};
|
185
|
+
|
186
|
+
friend class BreakPointIterator;
|
187
|
+
};
|
188
|
+
|
189
|
+
|
190
|
+
// Helper interface to prepare to/restore after making runtime calls.
|
191
|
+
class RuntimeCallHelper {
|
192
|
+
public:
|
193
|
+
virtual ~RuntimeCallHelper() {}
|
194
|
+
|
195
|
+
virtual void BeforeCall(MacroAssembler* masm) const = 0;
|
196
|
+
|
197
|
+
virtual void AfterCall(MacroAssembler* masm) const = 0;
|
198
|
+
|
199
|
+
protected:
|
200
|
+
RuntimeCallHelper() {}
|
201
|
+
|
202
|
+
private:
|
203
|
+
DISALLOW_COPY_AND_ASSIGN(RuntimeCallHelper);
|
204
|
+
};
|
205
|
+
|
206
|
+
} } // namespace v8::internal
|
207
|
+
|
208
|
+
#if V8_TARGET_ARCH_IA32
|
209
|
+
#include "ia32/code-stubs-ia32.h"
|
210
|
+
#elif V8_TARGET_ARCH_X64
|
211
|
+
#include "x64/code-stubs-x64.h"
|
212
|
+
#elif V8_TARGET_ARCH_ARM
|
213
|
+
#include "arm/code-stubs-arm.h"
|
214
|
+
#elif V8_TARGET_ARCH_MIPS
|
215
|
+
#include "mips/code-stubs-mips.h"
|
216
|
+
#else
|
217
|
+
#error Unsupported target architecture.
|
218
|
+
#endif
|
219
|
+
|
220
|
+
namespace v8 {
|
221
|
+
namespace internal {
|
222
|
+
|
223
|
+
|
224
|
+
// RuntimeCallHelper implementation used in stubs: enters/leaves a
|
225
|
+
// newly created internal frame before/after the runtime call.
|
226
|
+
class StubRuntimeCallHelper : public RuntimeCallHelper {
|
227
|
+
public:
|
228
|
+
StubRuntimeCallHelper() {}
|
229
|
+
|
230
|
+
virtual void BeforeCall(MacroAssembler* masm) const;
|
231
|
+
|
232
|
+
virtual void AfterCall(MacroAssembler* masm) const;
|
233
|
+
};
|
234
|
+
|
235
|
+
|
236
|
+
// Trivial RuntimeCallHelper implementation.
|
237
|
+
class NopRuntimeCallHelper : public RuntimeCallHelper {
|
238
|
+
public:
|
239
|
+
NopRuntimeCallHelper() {}
|
240
|
+
|
241
|
+
virtual void BeforeCall(MacroAssembler* masm) const {}
|
242
|
+
|
243
|
+
virtual void AfterCall(MacroAssembler* masm) const {}
|
244
|
+
};
|
245
|
+
|
246
|
+
|
247
|
+
class StackCheckStub : public CodeStub {
|
248
|
+
public:
|
249
|
+
StackCheckStub() { }
|
250
|
+
|
251
|
+
void Generate(MacroAssembler* masm);
|
252
|
+
|
253
|
+
private:
|
254
|
+
|
255
|
+
const char* GetName() { return "StackCheckStub"; }
|
256
|
+
|
257
|
+
Major MajorKey() { return StackCheck; }
|
258
|
+
int MinorKey() { return 0; }
|
259
|
+
};
|
260
|
+
|
261
|
+
|
262
|
+
class ToNumberStub: public CodeStub {
|
263
|
+
public:
|
264
|
+
ToNumberStub() { }
|
265
|
+
|
266
|
+
void Generate(MacroAssembler* masm);
|
267
|
+
|
268
|
+
private:
|
269
|
+
Major MajorKey() { return ToNumber; }
|
270
|
+
int MinorKey() { return 0; }
|
271
|
+
const char* GetName() { return "ToNumberStub"; }
|
272
|
+
};
|
273
|
+
|
274
|
+
|
275
|
+
class FastNewClosureStub : public CodeStub {
|
276
|
+
public:
|
277
|
+
void Generate(MacroAssembler* masm);
|
278
|
+
|
279
|
+
private:
|
280
|
+
const char* GetName() { return "FastNewClosureStub"; }
|
281
|
+
Major MajorKey() { return FastNewClosure; }
|
282
|
+
int MinorKey() { return 0; }
|
283
|
+
};
|
284
|
+
|
285
|
+
|
286
|
+
class FastNewContextStub : public CodeStub {
|
287
|
+
public:
|
288
|
+
static const int kMaximumSlots = 64;
|
289
|
+
|
290
|
+
explicit FastNewContextStub(int slots) : slots_(slots) {
|
291
|
+
ASSERT(slots_ > 0 && slots <= kMaximumSlots);
|
292
|
+
}
|
293
|
+
|
294
|
+
void Generate(MacroAssembler* masm);
|
295
|
+
|
296
|
+
private:
|
297
|
+
int slots_;
|
298
|
+
|
299
|
+
const char* GetName() { return "FastNewContextStub"; }
|
300
|
+
Major MajorKey() { return FastNewContext; }
|
301
|
+
int MinorKey() { return slots_; }
|
302
|
+
};
|
303
|
+
|
304
|
+
|
305
|
+
class FastCloneShallowArrayStub : public CodeStub {
|
306
|
+
public:
|
307
|
+
// Maximum length of copied elements array.
|
308
|
+
static const int kMaximumClonedLength = 8;
|
309
|
+
|
310
|
+
enum Mode {
|
311
|
+
CLONE_ELEMENTS,
|
312
|
+
COPY_ON_WRITE_ELEMENTS
|
313
|
+
};
|
314
|
+
|
315
|
+
FastCloneShallowArrayStub(Mode mode, int length)
|
316
|
+
: mode_(mode),
|
317
|
+
length_((mode == COPY_ON_WRITE_ELEMENTS) ? 0 : length) {
|
318
|
+
ASSERT(length_ >= 0);
|
319
|
+
ASSERT(length_ <= kMaximumClonedLength);
|
320
|
+
}
|
321
|
+
|
322
|
+
void Generate(MacroAssembler* masm);
|
323
|
+
|
324
|
+
private:
|
325
|
+
Mode mode_;
|
326
|
+
int length_;
|
327
|
+
|
328
|
+
const char* GetName() { return "FastCloneShallowArrayStub"; }
|
329
|
+
Major MajorKey() { return FastCloneShallowArray; }
|
330
|
+
int MinorKey() {
|
331
|
+
ASSERT(mode_ == 0 || mode_ == 1);
|
332
|
+
return (length_ << 1) | mode_;
|
333
|
+
}
|
334
|
+
};
|
335
|
+
|
336
|
+
|
337
|
+
class InstanceofStub: public CodeStub {
|
338
|
+
public:
|
339
|
+
enum Flags {
|
340
|
+
kNoFlags = 0,
|
341
|
+
kArgsInRegisters = 1 << 0,
|
342
|
+
kCallSiteInlineCheck = 1 << 1,
|
343
|
+
kReturnTrueFalseObject = 1 << 2
|
344
|
+
};
|
345
|
+
|
346
|
+
explicit InstanceofStub(Flags flags) : flags_(flags), name_(NULL) { }
|
347
|
+
|
348
|
+
static Register left();
|
349
|
+
static Register right();
|
350
|
+
|
351
|
+
void Generate(MacroAssembler* masm);
|
352
|
+
|
353
|
+
private:
|
354
|
+
Major MajorKey() { return Instanceof; }
|
355
|
+
int MinorKey() { return static_cast<int>(flags_); }
|
356
|
+
|
357
|
+
bool HasArgsInRegisters() const {
|
358
|
+
return (flags_ & kArgsInRegisters) != 0;
|
359
|
+
}
|
360
|
+
|
361
|
+
bool HasCallSiteInlineCheck() const {
|
362
|
+
return (flags_ & kCallSiteInlineCheck) != 0;
|
363
|
+
}
|
364
|
+
|
365
|
+
bool ReturnTrueFalseObject() const {
|
366
|
+
return (flags_ & kReturnTrueFalseObject) != 0;
|
367
|
+
}
|
368
|
+
|
369
|
+
const char* GetName();
|
370
|
+
|
371
|
+
Flags flags_;
|
372
|
+
char* name_;
|
373
|
+
};
|
374
|
+
|
375
|
+
|
376
|
+
enum NegativeZeroHandling {
|
377
|
+
kStrictNegativeZero,
|
378
|
+
kIgnoreNegativeZero
|
379
|
+
};
|
380
|
+
|
381
|
+
|
382
|
+
enum UnaryOpFlags {
|
383
|
+
NO_UNARY_FLAGS = 0,
|
384
|
+
NO_UNARY_SMI_CODE_IN_STUB = 1 << 0
|
385
|
+
};
|
386
|
+
|
387
|
+
|
388
|
+
class GenericUnaryOpStub : public CodeStub {
|
389
|
+
public:
|
390
|
+
GenericUnaryOpStub(Token::Value op,
|
391
|
+
UnaryOverwriteMode overwrite,
|
392
|
+
UnaryOpFlags flags,
|
393
|
+
NegativeZeroHandling negative_zero = kStrictNegativeZero)
|
394
|
+
: op_(op),
|
395
|
+
overwrite_(overwrite),
|
396
|
+
include_smi_code_((flags & NO_UNARY_SMI_CODE_IN_STUB) == 0),
|
397
|
+
negative_zero_(negative_zero) { }
|
398
|
+
|
399
|
+
private:
|
400
|
+
Token::Value op_;
|
401
|
+
UnaryOverwriteMode overwrite_;
|
402
|
+
bool include_smi_code_;
|
403
|
+
NegativeZeroHandling negative_zero_;
|
404
|
+
|
405
|
+
class OverwriteField: public BitField<UnaryOverwriteMode, 0, 1> {};
|
406
|
+
class IncludeSmiCodeField: public BitField<bool, 1, 1> {};
|
407
|
+
class NegativeZeroField: public BitField<NegativeZeroHandling, 2, 1> {};
|
408
|
+
class OpField: public BitField<Token::Value, 3, kMinorBits - 3> {};
|
409
|
+
|
410
|
+
Major MajorKey() { return GenericUnaryOp; }
|
411
|
+
int MinorKey() {
|
412
|
+
return OpField::encode(op_) |
|
413
|
+
OverwriteField::encode(overwrite_) |
|
414
|
+
IncludeSmiCodeField::encode(include_smi_code_) |
|
415
|
+
NegativeZeroField::encode(negative_zero_);
|
416
|
+
}
|
417
|
+
|
418
|
+
void Generate(MacroAssembler* masm);
|
419
|
+
|
420
|
+
const char* GetName();
|
421
|
+
};
|
422
|
+
|
423
|
+
|
424
|
+
class MathPowStub: public CodeStub {
|
425
|
+
public:
|
426
|
+
MathPowStub() {}
|
427
|
+
virtual void Generate(MacroAssembler* masm);
|
428
|
+
|
429
|
+
private:
|
430
|
+
virtual CodeStub::Major MajorKey() { return MathPow; }
|
431
|
+
virtual int MinorKey() { return 0; }
|
432
|
+
|
433
|
+
const char* GetName() { return "MathPowStub"; }
|
434
|
+
};
|
435
|
+
|
436
|
+
|
437
|
+
class StringCharAtStub: public CodeStub {
|
438
|
+
public:
|
439
|
+
StringCharAtStub() {}
|
440
|
+
|
441
|
+
private:
|
442
|
+
Major MajorKey() { return StringCharAt; }
|
443
|
+
int MinorKey() { return 0; }
|
444
|
+
|
445
|
+
void Generate(MacroAssembler* masm);
|
446
|
+
};
|
447
|
+
|
448
|
+
|
449
|
+
class ICCompareStub: public CodeStub {
|
450
|
+
public:
|
451
|
+
ICCompareStub(Token::Value op, CompareIC::State state)
|
452
|
+
: op_(op), state_(state) {
|
453
|
+
ASSERT(Token::IsCompareOp(op));
|
454
|
+
}
|
455
|
+
|
456
|
+
virtual void Generate(MacroAssembler* masm);
|
457
|
+
|
458
|
+
private:
|
459
|
+
class OpField: public BitField<int, 0, 3> { };
|
460
|
+
class StateField: public BitField<int, 3, 5> { };
|
461
|
+
|
462
|
+
virtual void FinishCode(Code* code) { code->set_compare_state(state_); }
|
463
|
+
|
464
|
+
virtual CodeStub::Major MajorKey() { return CompareIC; }
|
465
|
+
virtual int MinorKey();
|
466
|
+
|
467
|
+
virtual int GetCodeKind() { return Code::COMPARE_IC; }
|
468
|
+
|
469
|
+
void GenerateSmis(MacroAssembler* masm);
|
470
|
+
void GenerateHeapNumbers(MacroAssembler* masm);
|
471
|
+
void GenerateObjects(MacroAssembler* masm);
|
472
|
+
void GenerateMiss(MacroAssembler* masm);
|
473
|
+
|
474
|
+
bool strict() const { return op_ == Token::EQ_STRICT; }
|
475
|
+
Condition GetCondition() const { return CompareIC::ComputeCondition(op_); }
|
476
|
+
|
477
|
+
Token::Value op_;
|
478
|
+
CompareIC::State state_;
|
479
|
+
};
|
480
|
+
|
481
|
+
|
482
|
+
// Flags that control the compare stub code generation.
|
483
|
+
enum CompareFlags {
|
484
|
+
NO_COMPARE_FLAGS = 0,
|
485
|
+
NO_SMI_COMPARE_IN_STUB = 1 << 0,
|
486
|
+
NO_NUMBER_COMPARE_IN_STUB = 1 << 1,
|
487
|
+
CANT_BOTH_BE_NAN = 1 << 2
|
488
|
+
};
|
489
|
+
|
490
|
+
|
491
|
+
enum NaNInformation {
|
492
|
+
kBothCouldBeNaN,
|
493
|
+
kCantBothBeNaN
|
494
|
+
};
|
495
|
+
|
496
|
+
|
497
|
+
class CompareStub: public CodeStub {
|
498
|
+
public:
|
499
|
+
CompareStub(Condition cc,
|
500
|
+
bool strict,
|
501
|
+
CompareFlags flags,
|
502
|
+
Register lhs,
|
503
|
+
Register rhs) :
|
504
|
+
cc_(cc),
|
505
|
+
strict_(strict),
|
506
|
+
never_nan_nan_((flags & CANT_BOTH_BE_NAN) != 0),
|
507
|
+
include_number_compare_((flags & NO_NUMBER_COMPARE_IN_STUB) == 0),
|
508
|
+
include_smi_compare_((flags & NO_SMI_COMPARE_IN_STUB) == 0),
|
509
|
+
lhs_(lhs),
|
510
|
+
rhs_(rhs),
|
511
|
+
name_(NULL) { }
|
512
|
+
|
513
|
+
CompareStub(Condition cc,
|
514
|
+
bool strict,
|
515
|
+
CompareFlags flags) :
|
516
|
+
cc_(cc),
|
517
|
+
strict_(strict),
|
518
|
+
never_nan_nan_((flags & CANT_BOTH_BE_NAN) != 0),
|
519
|
+
include_number_compare_((flags & NO_NUMBER_COMPARE_IN_STUB) == 0),
|
520
|
+
include_smi_compare_((flags & NO_SMI_COMPARE_IN_STUB) == 0),
|
521
|
+
lhs_(no_reg),
|
522
|
+
rhs_(no_reg),
|
523
|
+
name_(NULL) { }
|
524
|
+
|
525
|
+
void Generate(MacroAssembler* masm);
|
526
|
+
|
527
|
+
private:
|
528
|
+
Condition cc_;
|
529
|
+
bool strict_;
|
530
|
+
// Only used for 'equal' comparisons. Tells the stub that we already know
|
531
|
+
// that at least one side of the comparison is not NaN. This allows the
|
532
|
+
// stub to use object identity in the positive case. We ignore it when
|
533
|
+
// generating the minor key for other comparisons to avoid creating more
|
534
|
+
// stubs.
|
535
|
+
bool never_nan_nan_;
|
536
|
+
// Do generate the number comparison code in the stub. Stubs without number
|
537
|
+
// comparison code is used when the number comparison has been inlined, and
|
538
|
+
// the stub will be called if one of the operands is not a number.
|
539
|
+
bool include_number_compare_;
|
540
|
+
|
541
|
+
// Generate the comparison code for two smi operands in the stub.
|
542
|
+
bool include_smi_compare_;
|
543
|
+
|
544
|
+
// Register holding the left hand side of the comparison if the stub gives
|
545
|
+
// a choice, no_reg otherwise.
|
546
|
+
|
547
|
+
Register lhs_;
|
548
|
+
// Register holding the right hand side of the comparison if the stub gives
|
549
|
+
// a choice, no_reg otherwise.
|
550
|
+
Register rhs_;
|
551
|
+
|
552
|
+
// Encoding of the minor key in 16 bits.
|
553
|
+
class StrictField: public BitField<bool, 0, 1> {};
|
554
|
+
class NeverNanNanField: public BitField<bool, 1, 1> {};
|
555
|
+
class IncludeNumberCompareField: public BitField<bool, 2, 1> {};
|
556
|
+
class IncludeSmiCompareField: public BitField<bool, 3, 1> {};
|
557
|
+
class RegisterField: public BitField<bool, 4, 1> {};
|
558
|
+
class ConditionField: public BitField<int, 5, 11> {};
|
559
|
+
|
560
|
+
Major MajorKey() { return Compare; }
|
561
|
+
|
562
|
+
int MinorKey();
|
563
|
+
|
564
|
+
virtual int GetCodeKind() { return Code::COMPARE_IC; }
|
565
|
+
virtual void FinishCode(Code* code) {
|
566
|
+
code->set_compare_state(CompareIC::GENERIC);
|
567
|
+
}
|
568
|
+
|
569
|
+
// Branch to the label if the given object isn't a symbol.
|
570
|
+
void BranchIfNonSymbol(MacroAssembler* masm,
|
571
|
+
Label* label,
|
572
|
+
Register object,
|
573
|
+
Register scratch);
|
574
|
+
|
575
|
+
// Unfortunately you have to run without snapshots to see most of these
|
576
|
+
// names in the profile since most compare stubs end up in the snapshot.
|
577
|
+
char* name_;
|
578
|
+
const char* GetName();
|
579
|
+
#ifdef DEBUG
|
580
|
+
void Print() {
|
581
|
+
PrintF("CompareStub (minor %d) (cc %d), (strict %s), "
|
582
|
+
"(never_nan_nan %s), (smi_compare %s) (number_compare %s) ",
|
583
|
+
MinorKey(),
|
584
|
+
static_cast<int>(cc_),
|
585
|
+
strict_ ? "true" : "false",
|
586
|
+
never_nan_nan_ ? "true" : "false",
|
587
|
+
include_smi_compare_ ? "inluded" : "not included",
|
588
|
+
include_number_compare_ ? "included" : "not included");
|
589
|
+
|
590
|
+
if (!lhs_.is(no_reg) && !rhs_.is(no_reg)) {
|
591
|
+
PrintF("(lhs r%d), (rhs r%d)\n", lhs_.code(), rhs_.code());
|
592
|
+
} else {
|
593
|
+
PrintF("\n");
|
594
|
+
}
|
595
|
+
}
|
596
|
+
#endif
|
597
|
+
};
|
598
|
+
|
599
|
+
|
600
|
+
class CEntryStub : public CodeStub {
|
601
|
+
public:
|
602
|
+
explicit CEntryStub(int result_size)
|
603
|
+
: result_size_(result_size), save_doubles_(false) { }
|
604
|
+
|
605
|
+
void Generate(MacroAssembler* masm);
|
606
|
+
void SaveDoubles() { save_doubles_ = true; }
|
607
|
+
|
608
|
+
private:
|
609
|
+
void GenerateCore(MacroAssembler* masm,
|
610
|
+
Label* throw_normal_exception,
|
611
|
+
Label* throw_termination_exception,
|
612
|
+
Label* throw_out_of_memory_exception,
|
613
|
+
bool do_gc,
|
614
|
+
bool always_allocate_scope);
|
615
|
+
void GenerateThrowTOS(MacroAssembler* masm);
|
616
|
+
void GenerateThrowUncatchable(MacroAssembler* masm,
|
617
|
+
UncatchableExceptionType type);
|
618
|
+
|
619
|
+
// Number of pointers/values returned.
|
620
|
+
const int result_size_;
|
621
|
+
bool save_doubles_;
|
622
|
+
|
623
|
+
Major MajorKey() { return CEntry; }
|
624
|
+
int MinorKey();
|
625
|
+
|
626
|
+
const char* GetName() { return "CEntryStub"; }
|
627
|
+
};
|
628
|
+
|
629
|
+
|
630
|
+
class JSEntryStub : public CodeStub {
|
631
|
+
public:
|
632
|
+
JSEntryStub() { }
|
633
|
+
|
634
|
+
void Generate(MacroAssembler* masm) { GenerateBody(masm, false); }
|
635
|
+
|
636
|
+
protected:
|
637
|
+
void GenerateBody(MacroAssembler* masm, bool is_construct);
|
638
|
+
|
639
|
+
private:
|
640
|
+
Major MajorKey() { return JSEntry; }
|
641
|
+
int MinorKey() { return 0; }
|
642
|
+
|
643
|
+
const char* GetName() { return "JSEntryStub"; }
|
644
|
+
};
|
645
|
+
|
646
|
+
|
647
|
+
class JSConstructEntryStub : public JSEntryStub {
|
648
|
+
public:
|
649
|
+
JSConstructEntryStub() { }
|
650
|
+
|
651
|
+
void Generate(MacroAssembler* masm) { GenerateBody(masm, true); }
|
652
|
+
|
653
|
+
private:
|
654
|
+
int MinorKey() { return 1; }
|
655
|
+
|
656
|
+
const char* GetName() { return "JSConstructEntryStub"; }
|
657
|
+
};
|
658
|
+
|
659
|
+
|
660
|
+
class ArgumentsAccessStub: public CodeStub {
|
661
|
+
public:
|
662
|
+
enum Type {
|
663
|
+
READ_ELEMENT,
|
664
|
+
NEW_OBJECT
|
665
|
+
};
|
666
|
+
|
667
|
+
explicit ArgumentsAccessStub(Type type) : type_(type) { }
|
668
|
+
|
669
|
+
private:
|
670
|
+
Type type_;
|
671
|
+
|
672
|
+
Major MajorKey() { return ArgumentsAccess; }
|
673
|
+
int MinorKey() { return type_; }
|
674
|
+
|
675
|
+
void Generate(MacroAssembler* masm);
|
676
|
+
void GenerateReadElement(MacroAssembler* masm);
|
677
|
+
void GenerateNewObject(MacroAssembler* masm);
|
678
|
+
|
679
|
+
const char* GetName() { return "ArgumentsAccessStub"; }
|
680
|
+
|
681
|
+
#ifdef DEBUG
|
682
|
+
void Print() {
|
683
|
+
PrintF("ArgumentsAccessStub (type %d)\n", type_);
|
684
|
+
}
|
685
|
+
#endif
|
686
|
+
};
|
687
|
+
|
688
|
+
|
689
|
+
class RegExpExecStub: public CodeStub {
|
690
|
+
public:
|
691
|
+
RegExpExecStub() { }
|
692
|
+
|
693
|
+
private:
|
694
|
+
Major MajorKey() { return RegExpExec; }
|
695
|
+
int MinorKey() { return 0; }
|
696
|
+
|
697
|
+
void Generate(MacroAssembler* masm);
|
698
|
+
|
699
|
+
const char* GetName() { return "RegExpExecStub"; }
|
700
|
+
|
701
|
+
#ifdef DEBUG
|
702
|
+
void Print() {
|
703
|
+
PrintF("RegExpExecStub\n");
|
704
|
+
}
|
705
|
+
#endif
|
706
|
+
};
|
707
|
+
|
708
|
+
|
709
|
+
class RegExpConstructResultStub: public CodeStub {
|
710
|
+
public:
|
711
|
+
RegExpConstructResultStub() { }
|
712
|
+
|
713
|
+
private:
|
714
|
+
Major MajorKey() { return RegExpConstructResult; }
|
715
|
+
int MinorKey() { return 0; }
|
716
|
+
|
717
|
+
void Generate(MacroAssembler* masm);
|
718
|
+
|
719
|
+
const char* GetName() { return "RegExpConstructResultStub"; }
|
720
|
+
|
721
|
+
#ifdef DEBUG
|
722
|
+
void Print() {
|
723
|
+
PrintF("RegExpConstructResultStub\n");
|
724
|
+
}
|
725
|
+
#endif
|
726
|
+
};
|
727
|
+
|
728
|
+
|
729
|
+
class CallFunctionStub: public CodeStub {
|
730
|
+
public:
|
731
|
+
CallFunctionStub(int argc, InLoopFlag in_loop, CallFunctionFlags flags)
|
732
|
+
: argc_(argc), in_loop_(in_loop), flags_(flags) { }
|
733
|
+
|
734
|
+
void Generate(MacroAssembler* masm);
|
735
|
+
|
736
|
+
static int ExtractArgcFromMinorKey(int minor_key) {
|
737
|
+
return ArgcBits::decode(minor_key);
|
738
|
+
}
|
739
|
+
|
740
|
+
private:
|
741
|
+
int argc_;
|
742
|
+
InLoopFlag in_loop_;
|
743
|
+
CallFunctionFlags flags_;
|
744
|
+
|
745
|
+
#ifdef DEBUG
|
746
|
+
void Print() {
|
747
|
+
PrintF("CallFunctionStub (args %d, in_loop %d, flags %d)\n",
|
748
|
+
argc_,
|
749
|
+
static_cast<int>(in_loop_),
|
750
|
+
static_cast<int>(flags_));
|
751
|
+
}
|
752
|
+
#endif
|
753
|
+
|
754
|
+
// Minor key encoding in 32 bits with Bitfield <Type, shift, size>.
|
755
|
+
class InLoopBits: public BitField<InLoopFlag, 0, 1> {};
|
756
|
+
class FlagBits: public BitField<CallFunctionFlags, 1, 1> {};
|
757
|
+
class ArgcBits: public BitField<int, 2, 32 - 2> {};
|
758
|
+
|
759
|
+
Major MajorKey() { return CallFunction; }
|
760
|
+
int MinorKey() {
|
761
|
+
// Encode the parameters in a unique 32 bit value.
|
762
|
+
return InLoopBits::encode(in_loop_)
|
763
|
+
| FlagBits::encode(flags_)
|
764
|
+
| ArgcBits::encode(argc_);
|
765
|
+
}
|
766
|
+
|
767
|
+
InLoopFlag InLoop() { return in_loop_; }
|
768
|
+
bool ReceiverMightBeValue() {
|
769
|
+
return (flags_ & RECEIVER_MIGHT_BE_VALUE) != 0;
|
770
|
+
}
|
771
|
+
};
|
772
|
+
|
773
|
+
|
774
|
+
enum StringIndexFlags {
|
775
|
+
// Accepts smis or heap numbers.
|
776
|
+
STRING_INDEX_IS_NUMBER,
|
777
|
+
|
778
|
+
// Accepts smis or heap numbers that are valid array indices
|
779
|
+
// (ECMA-262 15.4). Invalid indices are reported as being out of
|
780
|
+
// range.
|
781
|
+
STRING_INDEX_IS_ARRAY_INDEX
|
782
|
+
};
|
783
|
+
|
784
|
+
|
785
|
+
// Generates code implementing String.prototype.charCodeAt.
|
786
|
+
//
|
787
|
+
// Only supports the case when the receiver is a string and the index
|
788
|
+
// is a number (smi or heap number) that is a valid index into the
|
789
|
+
// string. Additional index constraints are specified by the
|
790
|
+
// flags. Otherwise, bails out to the provided labels.
|
791
|
+
//
|
792
|
+
// Register usage: |object| may be changed to another string in a way
|
793
|
+
// that doesn't affect charCodeAt/charAt semantics, |index| is
|
794
|
+
// preserved, |scratch| and |result| are clobbered.
|
795
|
+
class StringCharCodeAtGenerator {
|
796
|
+
public:
|
797
|
+
StringCharCodeAtGenerator(Register object,
|
798
|
+
Register index,
|
799
|
+
Register scratch,
|
800
|
+
Register result,
|
801
|
+
Label* receiver_not_string,
|
802
|
+
Label* index_not_number,
|
803
|
+
Label* index_out_of_range,
|
804
|
+
StringIndexFlags index_flags)
|
805
|
+
: object_(object),
|
806
|
+
index_(index),
|
807
|
+
scratch_(scratch),
|
808
|
+
result_(result),
|
809
|
+
receiver_not_string_(receiver_not_string),
|
810
|
+
index_not_number_(index_not_number),
|
811
|
+
index_out_of_range_(index_out_of_range),
|
812
|
+
index_flags_(index_flags) {
|
813
|
+
ASSERT(!scratch_.is(object_));
|
814
|
+
ASSERT(!scratch_.is(index_));
|
815
|
+
ASSERT(!scratch_.is(result_));
|
816
|
+
ASSERT(!result_.is(object_));
|
817
|
+
ASSERT(!result_.is(index_));
|
818
|
+
}
|
819
|
+
|
820
|
+
// Generates the fast case code. On the fallthrough path |result|
|
821
|
+
// register contains the result.
|
822
|
+
void GenerateFast(MacroAssembler* masm);
|
823
|
+
|
824
|
+
// Generates the slow case code. Must not be naturally
|
825
|
+
// reachable. Expected to be put after a ret instruction (e.g., in
|
826
|
+
// deferred code). Always jumps back to the fast case.
|
827
|
+
void GenerateSlow(MacroAssembler* masm,
|
828
|
+
const RuntimeCallHelper& call_helper);
|
829
|
+
|
830
|
+
private:
|
831
|
+
Register object_;
|
832
|
+
Register index_;
|
833
|
+
Register scratch_;
|
834
|
+
Register result_;
|
835
|
+
|
836
|
+
Label* receiver_not_string_;
|
837
|
+
Label* index_not_number_;
|
838
|
+
Label* index_out_of_range_;
|
839
|
+
|
840
|
+
StringIndexFlags index_flags_;
|
841
|
+
|
842
|
+
Label call_runtime_;
|
843
|
+
Label index_not_smi_;
|
844
|
+
Label got_smi_index_;
|
845
|
+
Label exit_;
|
846
|
+
|
847
|
+
DISALLOW_COPY_AND_ASSIGN(StringCharCodeAtGenerator);
|
848
|
+
};
|
849
|
+
|
850
|
+
|
851
|
+
// Generates code for creating a one-char string from a char code.
|
852
|
+
class StringCharFromCodeGenerator {
|
853
|
+
public:
|
854
|
+
StringCharFromCodeGenerator(Register code,
|
855
|
+
Register result)
|
856
|
+
: code_(code),
|
857
|
+
result_(result) {
|
858
|
+
ASSERT(!code_.is(result_));
|
859
|
+
}
|
860
|
+
|
861
|
+
// Generates the fast case code. On the fallthrough path |result|
|
862
|
+
// register contains the result.
|
863
|
+
void GenerateFast(MacroAssembler* masm);
|
864
|
+
|
865
|
+
// Generates the slow case code. Must not be naturally
|
866
|
+
// reachable. Expected to be put after a ret instruction (e.g., in
|
867
|
+
// deferred code). Always jumps back to the fast case.
|
868
|
+
void GenerateSlow(MacroAssembler* masm,
|
869
|
+
const RuntimeCallHelper& call_helper);
|
870
|
+
|
871
|
+
private:
|
872
|
+
Register code_;
|
873
|
+
Register result_;
|
874
|
+
|
875
|
+
Label slow_case_;
|
876
|
+
Label exit_;
|
877
|
+
|
878
|
+
DISALLOW_COPY_AND_ASSIGN(StringCharFromCodeGenerator);
|
879
|
+
};
|
880
|
+
|
881
|
+
|
882
|
+
// Generates code implementing String.prototype.charAt.
|
883
|
+
//
|
884
|
+
// Only supports the case when the receiver is a string and the index
|
885
|
+
// is a number (smi or heap number) that is a valid index into the
|
886
|
+
// string. Additional index constraints are specified by the
|
887
|
+
// flags. Otherwise, bails out to the provided labels.
|
888
|
+
//
|
889
|
+
// Register usage: |object| may be changed to another string in a way
|
890
|
+
// that doesn't affect charCodeAt/charAt semantics, |index| is
|
891
|
+
// preserved, |scratch1|, |scratch2|, and |result| are clobbered.
|
892
|
+
class StringCharAtGenerator {
|
893
|
+
public:
|
894
|
+
StringCharAtGenerator(Register object,
|
895
|
+
Register index,
|
896
|
+
Register scratch1,
|
897
|
+
Register scratch2,
|
898
|
+
Register result,
|
899
|
+
Label* receiver_not_string,
|
900
|
+
Label* index_not_number,
|
901
|
+
Label* index_out_of_range,
|
902
|
+
StringIndexFlags index_flags)
|
903
|
+
: char_code_at_generator_(object,
|
904
|
+
index,
|
905
|
+
scratch1,
|
906
|
+
scratch2,
|
907
|
+
receiver_not_string,
|
908
|
+
index_not_number,
|
909
|
+
index_out_of_range,
|
910
|
+
index_flags),
|
911
|
+
char_from_code_generator_(scratch2, result) {}
|
912
|
+
|
913
|
+
// Generates the fast case code. On the fallthrough path |result|
|
914
|
+
// register contains the result.
|
915
|
+
void GenerateFast(MacroAssembler* masm);
|
916
|
+
|
917
|
+
// Generates the slow case code. Must not be naturally
|
918
|
+
// reachable. Expected to be put after a ret instruction (e.g., in
|
919
|
+
// deferred code). Always jumps back to the fast case.
|
920
|
+
void GenerateSlow(MacroAssembler* masm,
|
921
|
+
const RuntimeCallHelper& call_helper);
|
922
|
+
|
923
|
+
private:
|
924
|
+
StringCharCodeAtGenerator char_code_at_generator_;
|
925
|
+
StringCharFromCodeGenerator char_from_code_generator_;
|
926
|
+
|
927
|
+
DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator);
|
928
|
+
};
|
929
|
+
|
930
|
+
|
931
|
+
class AllowStubCallsScope {
|
932
|
+
public:
|
933
|
+
AllowStubCallsScope(MacroAssembler* masm, bool allow)
|
934
|
+
: masm_(masm), previous_allow_(masm->allow_stub_calls()) {
|
935
|
+
masm_->set_allow_stub_calls(allow);
|
936
|
+
}
|
937
|
+
~AllowStubCallsScope() {
|
938
|
+
masm_->set_allow_stub_calls(previous_allow_);
|
939
|
+
}
|
940
|
+
|
941
|
+
private:
|
942
|
+
MacroAssembler* masm_;
|
943
|
+
bool previous_allow_;
|
944
|
+
|
945
|
+
DISALLOW_COPY_AND_ASSIGN(AllowStubCallsScope);
|
946
|
+
};
|
947
|
+
|
948
|
+
} } // namespace v8::internal
|
949
|
+
|
950
|
+
#endif // V8_CODE_STUBS_H_
|