therubyracer 0.4.9-x86-linux
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/.gitignore +11 -0
- data/.gitmodules +3 -0
- data/Doxyfile +1514 -0
- data/History.txt +43 -0
- data/README.rdoc +157 -0
- data/Rakefile +51 -0
- data/docs/data_conversion.txt +18 -0
- data/ext/v8/callbacks.cpp +160 -0
- data/ext/v8/callbacks.h +14 -0
- data/ext/v8/convert_ruby.cpp +8 -0
- data/ext/v8/convert_ruby.h +99 -0
- data/ext/v8/convert_string.cpp +10 -0
- data/ext/v8/convert_string.h +73 -0
- data/ext/v8/convert_v8.cpp +9 -0
- data/ext/v8/convert_v8.h +121 -0
- data/ext/v8/converters.cpp +83 -0
- data/ext/v8/converters.h +23 -0
- data/ext/v8/extconf.rb +36 -0
- data/ext/v8/upstream/2.0.6/.gitignore +26 -0
- data/ext/v8/upstream/2.0.6/AUTHORS +23 -0
- data/ext/v8/upstream/2.0.6/ChangeLog +1479 -0
- data/ext/v8/upstream/2.0.6/LICENSE +55 -0
- data/ext/v8/upstream/2.0.6/SConstruct +1028 -0
- data/ext/v8/upstream/2.0.6/include/v8-debug.h +275 -0
- data/ext/v8/upstream/2.0.6/include/v8.h +3236 -0
- data/ext/v8/upstream/2.0.6/src/SConscript +283 -0
- data/ext/v8/upstream/2.0.6/src/accessors.cc +695 -0
- data/ext/v8/upstream/2.0.6/src/accessors.h +114 -0
- data/ext/v8/upstream/2.0.6/src/allocation.cc +198 -0
- data/ext/v8/upstream/2.0.6/src/allocation.h +169 -0
- data/ext/v8/upstream/2.0.6/src/api.cc +3831 -0
- data/ext/v8/upstream/2.0.6/src/api.h +479 -0
- data/ext/v8/upstream/2.0.6/src/apinatives.js +110 -0
- data/ext/v8/upstream/2.0.6/src/apiutils.h +69 -0
- data/ext/v8/upstream/2.0.6/src/arguments.h +97 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-arm-inl.h +277 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.cc +1821 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.h +1027 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2-inl.h +267 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.cc +1821 -0
- data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.h +1027 -0
- data/ext/v8/upstream/2.0.6/src/arm/builtins-arm.cc +1271 -0
- data/ext/v8/upstream/2.0.6/src/arm/codegen-arm-inl.h +74 -0
- data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.cc +6682 -0
- data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.h +535 -0
- data/ext/v8/upstream/2.0.6/src/arm/constants-arm.cc +112 -0
- data/ext/v8/upstream/2.0.6/src/arm/constants-arm.h +347 -0
- data/ext/v8/upstream/2.0.6/src/arm/cpu-arm.cc +132 -0
- data/ext/v8/upstream/2.0.6/src/arm/debug-arm.cc +213 -0
- data/ext/v8/upstream/2.0.6/src/arm/disasm-arm.cc +1166 -0
- data/ext/v8/upstream/2.0.6/src/arm/fast-codegen-arm.cc +1698 -0
- data/ext/v8/upstream/2.0.6/src/arm/frames-arm.cc +123 -0
- data/ext/v8/upstream/2.0.6/src/arm/frames-arm.h +162 -0
- data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +849 -0
- data/ext/v8/upstream/2.0.6/src/arm/jump-target-arm.cc +238 -0
- data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.cc +1259 -0
- data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.h +423 -0
- data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.cc +1266 -0
- data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.h +282 -0
- data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm-inl.h +103 -0
- data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.cc +59 -0
- data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.h +43 -0
- data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.cc +2264 -0
- data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.h +306 -0
- data/ext/v8/upstream/2.0.6/src/arm/stub-cache-arm.cc +1516 -0
- data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +412 -0
- data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.h +532 -0
- data/ext/v8/upstream/2.0.6/src/array.js +1154 -0
- data/ext/v8/upstream/2.0.6/src/assembler.cc +772 -0
- data/ext/v8/upstream/2.0.6/src/assembler.h +525 -0
- data/ext/v8/upstream/2.0.6/src/ast.cc +512 -0
- data/ext/v8/upstream/2.0.6/src/ast.h +1820 -0
- data/ext/v8/upstream/2.0.6/src/bootstrapper.cc +1680 -0
- data/ext/v8/upstream/2.0.6/src/bootstrapper.h +103 -0
- data/ext/v8/upstream/2.0.6/src/builtins.cc +851 -0
- data/ext/v8/upstream/2.0.6/src/builtins.h +245 -0
- data/ext/v8/upstream/2.0.6/src/bytecodes-irregexp.h +104 -0
- data/ext/v8/upstream/2.0.6/src/char-predicates-inl.h +86 -0
- data/ext/v8/upstream/2.0.6/src/char-predicates.h +65 -0
- data/ext/v8/upstream/2.0.6/src/checks.cc +100 -0
- data/ext/v8/upstream/2.0.6/src/checks.h +284 -0
- data/ext/v8/upstream/2.0.6/src/code-stubs.cc +164 -0
- data/ext/v8/upstream/2.0.6/src/code-stubs.h +164 -0
- data/ext/v8/upstream/2.0.6/src/code.h +68 -0
- data/ext/v8/upstream/2.0.6/src/codegen-inl.h +88 -0
- data/ext/v8/upstream/2.0.6/src/codegen.cc +504 -0
- data/ext/v8/upstream/2.0.6/src/codegen.h +522 -0
- data/ext/v8/upstream/2.0.6/src/compilation-cache.cc +490 -0
- data/ext/v8/upstream/2.0.6/src/compilation-cache.h +98 -0
- data/ext/v8/upstream/2.0.6/src/compiler.cc +1132 -0
- data/ext/v8/upstream/2.0.6/src/compiler.h +107 -0
- data/ext/v8/upstream/2.0.6/src/contexts.cc +256 -0
- data/ext/v8/upstream/2.0.6/src/contexts.h +345 -0
- data/ext/v8/upstream/2.0.6/src/conversions-inl.h +95 -0
- data/ext/v8/upstream/2.0.6/src/conversions.cc +709 -0
- data/ext/v8/upstream/2.0.6/src/conversions.h +118 -0
- data/ext/v8/upstream/2.0.6/src/counters.cc +78 -0
- data/ext/v8/upstream/2.0.6/src/counters.h +239 -0
- data/ext/v8/upstream/2.0.6/src/cpu.h +65 -0
- data/ext/v8/upstream/2.0.6/src/d8-debug.cc +345 -0
- data/ext/v8/upstream/2.0.6/src/d8-debug.h +155 -0
- data/ext/v8/upstream/2.0.6/src/d8-posix.cc +675 -0
- data/ext/v8/upstream/2.0.6/src/d8-readline.cc +128 -0
- data/ext/v8/upstream/2.0.6/src/d8-windows.cc +42 -0
- data/ext/v8/upstream/2.0.6/src/d8.cc +776 -0
- data/ext/v8/upstream/2.0.6/src/d8.h +225 -0
- data/ext/v8/upstream/2.0.6/src/d8.js +1625 -0
- data/ext/v8/upstream/2.0.6/src/date-delay.js +1138 -0
- data/ext/v8/upstream/2.0.6/src/dateparser-inl.h +114 -0
- data/ext/v8/upstream/2.0.6/src/dateparser.cc +186 -0
- data/ext/v8/upstream/2.0.6/src/dateparser.h +240 -0
- data/ext/v8/upstream/2.0.6/src/debug-agent.cc +425 -0
- data/ext/v8/upstream/2.0.6/src/debug-agent.h +129 -0
- data/ext/v8/upstream/2.0.6/src/debug-delay.js +2073 -0
- data/ext/v8/upstream/2.0.6/src/debug.cc +2751 -0
- data/ext/v8/upstream/2.0.6/src/debug.h +866 -0
- data/ext/v8/upstream/2.0.6/src/disasm.h +77 -0
- data/ext/v8/upstream/2.0.6/src/disassembler.cc +318 -0
- data/ext/v8/upstream/2.0.6/src/disassembler.h +56 -0
- data/ext/v8/upstream/2.0.6/src/dtoa-config.c +91 -0
- data/ext/v8/upstream/2.0.6/src/execution.cc +701 -0
- data/ext/v8/upstream/2.0.6/src/execution.h +312 -0
- data/ext/v8/upstream/2.0.6/src/factory.cc +957 -0
- data/ext/v8/upstream/2.0.6/src/factory.h +393 -0
- data/ext/v8/upstream/2.0.6/src/fast-codegen.cc +725 -0
- data/ext/v8/upstream/2.0.6/src/fast-codegen.h +371 -0
- data/ext/v8/upstream/2.0.6/src/flag-definitions.h +426 -0
- data/ext/v8/upstream/2.0.6/src/flags.cc +555 -0
- data/ext/v8/upstream/2.0.6/src/flags.h +81 -0
- data/ext/v8/upstream/2.0.6/src/frame-element.cc +45 -0
- data/ext/v8/upstream/2.0.6/src/frame-element.h +235 -0
- data/ext/v8/upstream/2.0.6/src/frames-inl.h +215 -0
- data/ext/v8/upstream/2.0.6/src/frames.cc +749 -0
- data/ext/v8/upstream/2.0.6/src/frames.h +659 -0
- data/ext/v8/upstream/2.0.6/src/func-name-inferrer.cc +76 -0
- data/ext/v8/upstream/2.0.6/src/func-name-inferrer.h +135 -0
- data/ext/v8/upstream/2.0.6/src/global-handles.cc +516 -0
- data/ext/v8/upstream/2.0.6/src/global-handles.h +180 -0
- data/ext/v8/upstream/2.0.6/src/globals.h +608 -0
- data/ext/v8/upstream/2.0.6/src/handles-inl.h +76 -0
- data/ext/v8/upstream/2.0.6/src/handles.cc +811 -0
- data/ext/v8/upstream/2.0.6/src/handles.h +367 -0
- data/ext/v8/upstream/2.0.6/src/hashmap.cc +226 -0
- data/ext/v8/upstream/2.0.6/src/hashmap.h +120 -0
- data/ext/v8/upstream/2.0.6/src/heap-inl.h +407 -0
- data/ext/v8/upstream/2.0.6/src/heap-profiler.cc +695 -0
- data/ext/v8/upstream/2.0.6/src/heap-profiler.h +277 -0
- data/ext/v8/upstream/2.0.6/src/heap.cc +4204 -0
- data/ext/v8/upstream/2.0.6/src/heap.h +1704 -0
- data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32-inl.h +325 -0
- data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.cc +2375 -0
- data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.h +914 -0
- data/ext/v8/upstream/2.0.6/src/ia32/builtins-ia32.cc +1222 -0
- data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32-inl.h +46 -0
- data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.cc +9770 -0
- data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.h +834 -0
- data/ext/v8/upstream/2.0.6/src/ia32/cpu-ia32.cc +79 -0
- data/ext/v8/upstream/2.0.6/src/ia32/debug-ia32.cc +208 -0
- data/ext/v8/upstream/2.0.6/src/ia32/disasm-ia32.cc +1357 -0
- data/ext/v8/upstream/2.0.6/src/ia32/fast-codegen-ia32.cc +1813 -0
- data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.cc +111 -0
- data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.h +135 -0
- data/ext/v8/upstream/2.0.6/src/ia32/ic-ia32.cc +1490 -0
- data/ext/v8/upstream/2.0.6/src/ia32/jump-target-ia32.cc +432 -0
- data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.cc +1517 -0
- data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.h +528 -0
- data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.cc +1219 -0
- data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.h +230 -0
- data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32-inl.h +82 -0
- data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.cc +99 -0
- data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.h +43 -0
- data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.cc +30 -0
- data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.h +62 -0
- data/ext/v8/upstream/2.0.6/src/ia32/stub-cache-ia32.cc +1961 -0
- data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.cc +1105 -0
- data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.h +580 -0
- data/ext/v8/upstream/2.0.6/src/ic-inl.h +93 -0
- data/ext/v8/upstream/2.0.6/src/ic.cc +1426 -0
- data/ext/v8/upstream/2.0.6/src/ic.h +443 -0
- data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.cc +646 -0
- data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.h +48 -0
- data/ext/v8/upstream/2.0.6/src/json-delay.js +254 -0
- data/ext/v8/upstream/2.0.6/src/jsregexp.cc +5234 -0
- data/ext/v8/upstream/2.0.6/src/jsregexp.h +1439 -0
- data/ext/v8/upstream/2.0.6/src/jump-target-inl.h +49 -0
- data/ext/v8/upstream/2.0.6/src/jump-target.cc +383 -0
- data/ext/v8/upstream/2.0.6/src/jump-target.h +280 -0
- data/ext/v8/upstream/2.0.6/src/list-inl.h +166 -0
- data/ext/v8/upstream/2.0.6/src/list.h +158 -0
- data/ext/v8/upstream/2.0.6/src/log-inl.h +126 -0
- data/ext/v8/upstream/2.0.6/src/log-utils.cc +503 -0
- data/ext/v8/upstream/2.0.6/src/log-utils.h +292 -0
- data/ext/v8/upstream/2.0.6/src/log.cc +1457 -0
- data/ext/v8/upstream/2.0.6/src/log.h +371 -0
- data/ext/v8/upstream/2.0.6/src/macro-assembler.h +93 -0
- data/ext/v8/upstream/2.0.6/src/macros.py +137 -0
- data/ext/v8/upstream/2.0.6/src/mark-compact.cc +2007 -0
- data/ext/v8/upstream/2.0.6/src/mark-compact.h +442 -0
- data/ext/v8/upstream/2.0.6/src/math.js +263 -0
- data/ext/v8/upstream/2.0.6/src/memory.h +74 -0
- data/ext/v8/upstream/2.0.6/src/messages.cc +177 -0
- data/ext/v8/upstream/2.0.6/src/messages.h +112 -0
- data/ext/v8/upstream/2.0.6/src/messages.js +937 -0
- data/ext/v8/upstream/2.0.6/src/mirror-delay.js +2332 -0
- data/ext/v8/upstream/2.0.6/src/mksnapshot.cc +169 -0
- data/ext/v8/upstream/2.0.6/src/natives.h +63 -0
- data/ext/v8/upstream/2.0.6/src/objects-debug.cc +1317 -0
- data/ext/v8/upstream/2.0.6/src/objects-inl.h +3044 -0
- data/ext/v8/upstream/2.0.6/src/objects.cc +8306 -0
- data/ext/v8/upstream/2.0.6/src/objects.h +4960 -0
- data/ext/v8/upstream/2.0.6/src/oprofile-agent.cc +116 -0
- data/ext/v8/upstream/2.0.6/src/oprofile-agent.h +69 -0
- data/ext/v8/upstream/2.0.6/src/parser.cc +4810 -0
- data/ext/v8/upstream/2.0.6/src/parser.h +195 -0
- data/ext/v8/upstream/2.0.6/src/platform-freebsd.cc +645 -0
- data/ext/v8/upstream/2.0.6/src/platform-linux.cc +808 -0
- data/ext/v8/upstream/2.0.6/src/platform-macos.cc +643 -0
- data/ext/v8/upstream/2.0.6/src/platform-nullos.cc +454 -0
- data/ext/v8/upstream/2.0.6/src/platform-openbsd.cc +597 -0
- data/ext/v8/upstream/2.0.6/src/platform-posix.cc +380 -0
- data/ext/v8/upstream/2.0.6/src/platform-win32.cc +1908 -0
- data/ext/v8/upstream/2.0.6/src/platform.h +556 -0
- data/ext/v8/upstream/2.0.6/src/prettyprinter.cc +1511 -0
- data/ext/v8/upstream/2.0.6/src/prettyprinter.h +219 -0
- data/ext/v8/upstream/2.0.6/src/property.cc +96 -0
- data/ext/v8/upstream/2.0.6/src/property.h +327 -0
- data/ext/v8/upstream/2.0.6/src/regexp-delay.js +406 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp-inl.h +78 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.cc +464 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.h +141 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.cc +356 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.h +103 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.cc +240 -0
- data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.h +220 -0
- data/ext/v8/upstream/2.0.6/src/regexp-stack.cc +103 -0
- data/ext/v8/upstream/2.0.6/src/regexp-stack.h +123 -0
- data/ext/v8/upstream/2.0.6/src/register-allocator-inl.h +74 -0
- data/ext/v8/upstream/2.0.6/src/register-allocator.cc +100 -0
- data/ext/v8/upstream/2.0.6/src/register-allocator.h +295 -0
- data/ext/v8/upstream/2.0.6/src/rewriter.cc +855 -0
- data/ext/v8/upstream/2.0.6/src/rewriter.h +54 -0
- data/ext/v8/upstream/2.0.6/src/runtime.cc +8163 -0
- data/ext/v8/upstream/2.0.6/src/runtime.h +432 -0
- data/ext/v8/upstream/2.0.6/src/runtime.js +626 -0
- data/ext/v8/upstream/2.0.6/src/scanner.cc +1098 -0
- data/ext/v8/upstream/2.0.6/src/scanner.h +425 -0
- data/ext/v8/upstream/2.0.6/src/scopeinfo.cc +649 -0
- data/ext/v8/upstream/2.0.6/src/scopeinfo.h +236 -0
- data/ext/v8/upstream/2.0.6/src/scopes.cc +963 -0
- data/ext/v8/upstream/2.0.6/src/scopes.h +401 -0
- data/ext/v8/upstream/2.0.6/src/serialize.cc +1260 -0
- data/ext/v8/upstream/2.0.6/src/serialize.h +404 -0
- data/ext/v8/upstream/2.0.6/src/shell.h +55 -0
- data/ext/v8/upstream/2.0.6/src/simulator.h +41 -0
- data/ext/v8/upstream/2.0.6/src/smart-pointer.h +109 -0
- data/ext/v8/upstream/2.0.6/src/snapshot-common.cc +97 -0
- data/ext/v8/upstream/2.0.6/src/snapshot-empty.cc +40 -0
- data/ext/v8/upstream/2.0.6/src/snapshot.h +59 -0
- data/ext/v8/upstream/2.0.6/src/spaces-inl.h +372 -0
- data/ext/v8/upstream/2.0.6/src/spaces.cc +2864 -0
- data/ext/v8/upstream/2.0.6/src/spaces.h +2072 -0
- data/ext/v8/upstream/2.0.6/src/string-stream.cc +584 -0
- data/ext/v8/upstream/2.0.6/src/string-stream.h +189 -0
- data/ext/v8/upstream/2.0.6/src/string.js +901 -0
- data/ext/v8/upstream/2.0.6/src/stub-cache.cc +1108 -0
- data/ext/v8/upstream/2.0.6/src/stub-cache.h +578 -0
- data/ext/v8/upstream/2.0.6/src/third_party/dtoa/COPYING +15 -0
- data/ext/v8/upstream/2.0.6/src/third_party/dtoa/dtoa.c +3330 -0
- data/ext/v8/upstream/2.0.6/src/third_party/valgrind/valgrind.h +3925 -0
- data/ext/v8/upstream/2.0.6/src/token.cc +56 -0
- data/ext/v8/upstream/2.0.6/src/token.h +270 -0
- data/ext/v8/upstream/2.0.6/src/top.cc +991 -0
- data/ext/v8/upstream/2.0.6/src/top.h +459 -0
- data/ext/v8/upstream/2.0.6/src/unicode-inl.h +238 -0
- data/ext/v8/upstream/2.0.6/src/unicode.cc +749 -0
- data/ext/v8/upstream/2.0.6/src/unicode.h +279 -0
- data/ext/v8/upstream/2.0.6/src/uri.js +415 -0
- data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +426 -0
- data/ext/v8/upstream/2.0.6/src/usage-analyzer.h +40 -0
- data/ext/v8/upstream/2.0.6/src/utils.cc +322 -0
- data/ext/v8/upstream/2.0.6/src/utils.h +592 -0
- data/ext/v8/upstream/2.0.6/src/v8-counters.cc +55 -0
- data/ext/v8/upstream/2.0.6/src/v8-counters.h +198 -0
- data/ext/v8/upstream/2.0.6/src/v8.cc +193 -0
- data/ext/v8/upstream/2.0.6/src/v8.h +119 -0
- data/ext/v8/upstream/2.0.6/src/v8natives.js +846 -0
- data/ext/v8/upstream/2.0.6/src/v8threads.cc +450 -0
- data/ext/v8/upstream/2.0.6/src/v8threads.h +144 -0
- data/ext/v8/upstream/2.0.6/src/variables.cc +163 -0
- data/ext/v8/upstream/2.0.6/src/variables.h +235 -0
- data/ext/v8/upstream/2.0.6/src/version.cc +88 -0
- data/ext/v8/upstream/2.0.6/src/version.h +64 -0
- data/ext/v8/upstream/2.0.6/src/virtual-frame.cc +381 -0
- data/ext/v8/upstream/2.0.6/src/virtual-frame.h +44 -0
- data/ext/v8/upstream/2.0.6/src/x64/assembler-x64-inl.h +352 -0
- data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.cc +2539 -0
- data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.h +1399 -0
- data/ext/v8/upstream/2.0.6/src/x64/builtins-x64.cc +1255 -0
- data/ext/v8/upstream/2.0.6/src/x64/codegen-x64-inl.h +46 -0
- data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.cc +8223 -0
- data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.h +785 -0
- data/ext/v8/upstream/2.0.6/src/x64/cpu-x64.cc +79 -0
- data/ext/v8/upstream/2.0.6/src/x64/debug-x64.cc +202 -0
- data/ext/v8/upstream/2.0.6/src/x64/disasm-x64.cc +1596 -0
- data/ext/v8/upstream/2.0.6/src/x64/fast-codegen-x64.cc +1820 -0
- data/ext/v8/upstream/2.0.6/src/x64/frames-x64.cc +109 -0
- data/ext/v8/upstream/2.0.6/src/x64/frames-x64.h +121 -0
- data/ext/v8/upstream/2.0.6/src/x64/ic-x64.cc +1392 -0
- data/ext/v8/upstream/2.0.6/src/x64/jump-target-x64.cc +432 -0
- data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.cc +2409 -0
- data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.h +765 -0
- data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.cc +1337 -0
- data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.h +295 -0
- data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64-inl.h +86 -0
- data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.cc +84 -0
- data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.h +43 -0
- data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.cc +27 -0
- data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.h +63 -0
- data/ext/v8/upstream/2.0.6/src/x64/stub-cache-x64.cc +1884 -0
- data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.cc +1089 -0
- data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.h +560 -0
- data/ext/v8/upstream/2.0.6/src/zone-inl.h +297 -0
- data/ext/v8/upstream/2.0.6/src/zone.cc +193 -0
- data/ext/v8/upstream/2.0.6/src/zone.h +305 -0
- data/ext/v8/upstream/2.0.6/tools/codemap.js +258 -0
- data/ext/v8/upstream/2.0.6/tools/consarray.js +93 -0
- data/ext/v8/upstream/2.0.6/tools/csvparser.js +98 -0
- data/ext/v8/upstream/2.0.6/tools/gyp/v8.gyp +620 -0
- data/ext/v8/upstream/2.0.6/tools/js2c.py +376 -0
- data/ext/v8/upstream/2.0.6/tools/jsmin.py +280 -0
- data/ext/v8/upstream/2.0.6/tools/linux-tick-processor +24 -0
- data/ext/v8/upstream/2.0.6/tools/linux-tick-processor.py +78 -0
- data/ext/v8/upstream/2.0.6/tools/logreader.js +320 -0
- data/ext/v8/upstream/2.0.6/tools/mac-nm +18 -0
- data/ext/v8/upstream/2.0.6/tools/mac-tick-processor +6 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/annotate +7 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/common +19 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/dump +7 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/report +7 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/reset +7 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/run +14 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/shutdown +7 -0
- data/ext/v8/upstream/2.0.6/tools/oprofile/start +7 -0
- data/ext/v8/upstream/2.0.6/tools/presubmit.py +299 -0
- data/ext/v8/upstream/2.0.6/tools/process-heap-prof.py +120 -0
- data/ext/v8/upstream/2.0.6/tools/profile.js +621 -0
- data/ext/v8/upstream/2.0.6/tools/profile_view.js +224 -0
- data/ext/v8/upstream/2.0.6/tools/run-valgrind.py +77 -0
- data/ext/v8/upstream/2.0.6/tools/splaytree.js +322 -0
- data/ext/v8/upstream/2.0.6/tools/splaytree.py +226 -0
- data/ext/v8/upstream/2.0.6/tools/stats-viewer.py +456 -0
- data/ext/v8/upstream/2.0.6/tools/test.py +1370 -0
- data/ext/v8/upstream/2.0.6/tools/tickprocessor-driver.js +53 -0
- data/ext/v8/upstream/2.0.6/tools/tickprocessor.js +731 -0
- data/ext/v8/upstream/2.0.6/tools/tickprocessor.py +535 -0
- data/ext/v8/upstream/2.0.6/tools/utils.py +82 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/README.txt +71 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/arm.vsprops +14 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/common.vsprops +35 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/d8.vcproj +199 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_arm.vcproj +199 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_x64.vcproj +201 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/d8js2c.cmd +6 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/debug.vsprops +17 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/ia32.vsprops +13 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/js2c.cmd +6 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/release.vsprops +24 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.sln +101 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.vcproj +223 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.sln +74 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.vcproj +223 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base.vcproj +971 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_arm.vcproj +983 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_x64.vcproj +959 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest.vcproj +255 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_arm.vcproj +243 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_x64.vcproj +257 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot_x64.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_arm.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_x64.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_arm.vcproj +151 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_x64.vcproj +153 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot.vcproj +142 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc.vcproj +92 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc_x64.vcproj +92 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_x64.vcproj +142 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.sln +101 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.vcproj +223 -0
- data/ext/v8/upstream/2.0.6/tools/visual_studio/x64.vsprops +13 -0
- data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +5 -0
- data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.py +137 -0
- data/ext/v8/upstream/Makefile +31 -0
- data/ext/v8/upstream/no-strict-aliasing.patch +13 -0
- data/ext/v8/upstream/scons/CHANGES.txt +5183 -0
- data/ext/v8/upstream/scons/LICENSE.txt +20 -0
- data/ext/v8/upstream/scons/MANIFEST +202 -0
- data/ext/v8/upstream/scons/PKG-INFO +13 -0
- data/ext/v8/upstream/scons/README.txt +273 -0
- data/ext/v8/upstream/scons/RELEASE.txt +1040 -0
- data/ext/v8/upstream/scons/engine/SCons/Action.py +1256 -0
- data/ext/v8/upstream/scons/engine/SCons/Builder.py +868 -0
- data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +217 -0
- data/ext/v8/upstream/scons/engine/SCons/Conftest.py +794 -0
- data/ext/v8/upstream/scons/engine/SCons/Debug.py +237 -0
- data/ext/v8/upstream/scons/engine/SCons/Defaults.py +485 -0
- data/ext/v8/upstream/scons/engine/SCons/Environment.py +2327 -0
- data/ext/v8/upstream/scons/engine/SCons/Errors.py +207 -0
- data/ext/v8/upstream/scons/engine/SCons/Executor.py +636 -0
- data/ext/v8/upstream/scons/engine/SCons/Job.py +435 -0
- data/ext/v8/upstream/scons/engine/SCons/Memoize.py +292 -0
- data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +153 -0
- data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +3220 -0
- data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +128 -0
- data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +1341 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +76 -0
- data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +74 -0
- data/ext/v8/upstream/scons/engine/SCons/PathList.py +232 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +236 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +70 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +55 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +46 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +46 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +44 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +58 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +264 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +386 -0
- data/ext/v8/upstream/scons/engine/SCons/SConf.py +1038 -0
- data/ext/v8/upstream/scons/engine/SCons/SConsign.py +381 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +132 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +74 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +111 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +320 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +48 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +378 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +103 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +55 -0
- data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +415 -0
- data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +386 -0
- data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +1360 -0
- data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +944 -0
- data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +642 -0
- data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +414 -0
- data/ext/v8/upstream/scons/engine/SCons/Sig.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Subst.py +911 -0
- data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +1030 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +61 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +65 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +73 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +247 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +324 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +210 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +84 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +321 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +367 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +497 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +104 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +138 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +71 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +675 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +82 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +74 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +80 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +76 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +71 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +78 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +82 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +99 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +114 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +58 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +224 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +125 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +94 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +62 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +62 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +98 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +90 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +73 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +53 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +80 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +81 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +85 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +53 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +77 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +59 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +52 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +72 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +90 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +59 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +60 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +229 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +490 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +71 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +110 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +234 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +138 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +79 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +99 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +121 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +112 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +77 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +90 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +159 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +266 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +50 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +269 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +1439 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +208 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +107 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +72 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +314 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +526 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +367 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +44 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +44 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +78 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +83 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +108 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +336 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +121 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +70 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +132 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +68 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +58 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +53 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +67 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +142 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +58 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +63 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +64 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +77 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +186 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +73 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +805 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +175 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +53 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +100 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +131 -0
- data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +100 -0
- data/ext/v8/upstream/scons/engine/SCons/Util.py +1645 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +91 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +107 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +139 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +109 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +147 -0
- data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +317 -0
- data/ext/v8/upstream/scons/engine/SCons/Warnings.py +228 -0
- data/ext/v8/upstream/scons/engine/SCons/__init__.py +49 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +302 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +98 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +91 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +124 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +1725 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +583 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +176 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +325 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +1296 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +382 -0
- data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +187 -0
- data/ext/v8/upstream/scons/engine/SCons/cpp.py +598 -0
- data/ext/v8/upstream/scons/engine/SCons/dblite.py +248 -0
- data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +77 -0
- data/ext/v8/upstream/scons/os_spawnv_fix.diff +83 -0
- data/ext/v8/upstream/scons/scons-time.1 +1017 -0
- data/ext/v8/upstream/scons/scons.1 +15179 -0
- data/ext/v8/upstream/scons/sconsign.1 +208 -0
- data/ext/v8/upstream/scons/script/scons +184 -0
- data/ext/v8/upstream/scons/script/scons-time +1529 -0
- data/ext/v8/upstream/scons/script/scons.bat +31 -0
- data/ext/v8/upstream/scons/script/sconsign +508 -0
- data/ext/v8/upstream/scons/setup.cfg +6 -0
- data/ext/v8/upstream/scons/setup.py +427 -0
- data/ext/v8/v8.cpp +89 -0
- data/ext/v8/v8_cxt.cpp +92 -0
- data/ext/v8/v8_cxt.h +20 -0
- data/ext/v8/v8_func.cpp +10 -0
- data/ext/v8/v8_func.h +11 -0
- data/ext/v8/v8_msg.cpp +54 -0
- data/ext/v8/v8_msg.h +18 -0
- data/ext/v8/v8_obj.cpp +52 -0
- data/ext/v8/v8_obj.h +13 -0
- data/ext/v8/v8_ref.cpp +26 -0
- data/ext/v8/v8_ref.h +31 -0
- data/ext/v8/v8_script.cpp +20 -0
- data/ext/v8/v8_script.h +8 -0
- data/ext/v8/v8_standalone.cpp +69 -0
- data/ext/v8/v8_standalone.h +31 -0
- data/ext/v8/v8_str.cpp +17 -0
- data/ext/v8/v8_str.h +9 -0
- data/ext/v8/v8_template.cpp +53 -0
- data/ext/v8/v8_template.h +13 -0
- data/lib/v8.rb +10 -0
- data/lib/v8/context.rb +101 -0
- data/lib/v8/object.rb +38 -0
- data/lib/v8/to.rb +33 -0
- data/lib/v8/v8.so +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/ext/cxt_spec.rb +25 -0
- data/spec/ext/obj_spec.rb +13 -0
- data/spec/redjs/jsapi_spec.rb +405 -0
- data/spec/redjs/tap.rb +8 -0
- data/spec/redjs_helper.rb +3 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/v8/to_spec.rb +15 -0
- data/tasks/rspec.rake +21 -0
- data/therubyracer.gemspec +680 -0
- metadata +697 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
// Copyright 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
|
+
|
29
|
+
#include <cstdio> // NOLINT
|
30
|
+
#include <readline/readline.h>
|
31
|
+
#include <readline/history.h>
|
32
|
+
|
33
|
+
|
34
|
+
#include "d8.h"
|
35
|
+
|
36
|
+
|
37
|
+
// There are incompatibilities between different versions and different
|
38
|
+
// implementations of readline. This smooths out one known incompatibility.
|
39
|
+
#if RL_READLINE_VERSION >= 0x0500
|
40
|
+
#define completion_matches rl_completion_matches
|
41
|
+
#endif
|
42
|
+
|
43
|
+
|
44
|
+
namespace v8 {
|
45
|
+
|
46
|
+
|
47
|
+
class ReadLineEditor: public LineEditor {
|
48
|
+
public:
|
49
|
+
ReadLineEditor() : LineEditor(LineEditor::READLINE, "readline") { }
|
50
|
+
virtual i::SmartPointer<char> Prompt(const char* prompt);
|
51
|
+
virtual bool Open();
|
52
|
+
virtual bool Close();
|
53
|
+
virtual void AddHistory(const char* str);
|
54
|
+
private:
|
55
|
+
static char** AttemptedCompletion(const char* text, int start, int end);
|
56
|
+
static char* CompletionGenerator(const char* text, int state);
|
57
|
+
static char kWordBreakCharacters[];
|
58
|
+
};
|
59
|
+
|
60
|
+
|
61
|
+
static ReadLineEditor read_line_editor;
|
62
|
+
char ReadLineEditor::kWordBreakCharacters[] = {' ', '\t', '\n', '"',
|
63
|
+
'\\', '\'', '`', '@', '.', '>', '<', '=', ';', '|', '&', '{', '(',
|
64
|
+
'\0'};
|
65
|
+
|
66
|
+
|
67
|
+
bool ReadLineEditor::Open() {
|
68
|
+
rl_initialize();
|
69
|
+
rl_attempted_completion_function = AttemptedCompletion;
|
70
|
+
rl_completer_word_break_characters = kWordBreakCharacters;
|
71
|
+
rl_bind_key('\t', rl_complete);
|
72
|
+
using_history();
|
73
|
+
return read_history(Shell::kHistoryFileName) == 0;
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
bool ReadLineEditor::Close() {
|
78
|
+
return write_history(Shell::kHistoryFileName) == 0;
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
i::SmartPointer<char> ReadLineEditor::Prompt(const char* prompt) {
|
83
|
+
char* result = readline(prompt);
|
84
|
+
return i::SmartPointer<char>(result);
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
void ReadLineEditor::AddHistory(const char* str) {
|
89
|
+
add_history(str);
|
90
|
+
}
|
91
|
+
|
92
|
+
|
93
|
+
char** ReadLineEditor::AttemptedCompletion(const char* text,
|
94
|
+
int start,
|
95
|
+
int end) {
|
96
|
+
char** result = completion_matches(text, CompletionGenerator);
|
97
|
+
rl_attempted_completion_over = true;
|
98
|
+
return result;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
char* ReadLineEditor::CompletionGenerator(const char* text, int state) {
|
103
|
+
static unsigned current_index;
|
104
|
+
static Persistent<Array> current_completions;
|
105
|
+
if (state == 0) {
|
106
|
+
i::SmartPointer<char> full_text(i::StrNDup(rl_line_buffer, rl_point));
|
107
|
+
HandleScope scope;
|
108
|
+
Handle<Array> completions =
|
109
|
+
Shell::GetCompletions(String::New(text), String::New(*full_text));
|
110
|
+
current_completions = Persistent<Array>::New(completions);
|
111
|
+
current_index = 0;
|
112
|
+
}
|
113
|
+
if (current_index < current_completions->Length()) {
|
114
|
+
HandleScope scope;
|
115
|
+
Handle<Integer> index = Integer::New(current_index);
|
116
|
+
Handle<Value> str_obj = current_completions->Get(index);
|
117
|
+
current_index++;
|
118
|
+
String::Utf8Value str(str_obj);
|
119
|
+
return strdup(*str);
|
120
|
+
} else {
|
121
|
+
current_completions.Dispose();
|
122
|
+
current_completions.Clear();
|
123
|
+
return NULL;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
} // namespace v8
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// Copyright 2009 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
|
+
|
29
|
+
#include "d8.h"
|
30
|
+
#include "d8-debug.h"
|
31
|
+
#include "debug.h"
|
32
|
+
#include "api.h"
|
33
|
+
|
34
|
+
|
35
|
+
namespace v8 {
|
36
|
+
|
37
|
+
|
38
|
+
void Shell::AddOSMethods(Handle<ObjectTemplate> os_templ) {
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
} // namespace v8
|
@@ -0,0 +1,776 @@
|
|
1
|
+
// Copyright 2009 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
|
+
|
29
|
+
#include <stdlib.h>
|
30
|
+
#include <errno.h>
|
31
|
+
|
32
|
+
#include "d8.h"
|
33
|
+
#include "d8-debug.h"
|
34
|
+
#include "debug.h"
|
35
|
+
#include "api.h"
|
36
|
+
#include "natives.h"
|
37
|
+
#include "platform.h"
|
38
|
+
|
39
|
+
|
40
|
+
namespace v8 {
|
41
|
+
|
42
|
+
|
43
|
+
const char* Shell::kHistoryFileName = ".d8_history";
|
44
|
+
const char* Shell::kPrompt = "d8> ";
|
45
|
+
|
46
|
+
|
47
|
+
LineEditor *LineEditor::first_ = NULL;
|
48
|
+
|
49
|
+
|
50
|
+
LineEditor::LineEditor(Type type, const char* name)
|
51
|
+
: type_(type),
|
52
|
+
name_(name),
|
53
|
+
next_(first_) {
|
54
|
+
first_ = this;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
LineEditor* LineEditor::Get() {
|
59
|
+
LineEditor* current = first_;
|
60
|
+
LineEditor* best = current;
|
61
|
+
while (current != NULL) {
|
62
|
+
if (current->type_ > best->type_)
|
63
|
+
best = current;
|
64
|
+
current = current->next_;
|
65
|
+
}
|
66
|
+
return best;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
class DumbLineEditor: public LineEditor {
|
71
|
+
public:
|
72
|
+
DumbLineEditor() : LineEditor(LineEditor::DUMB, "dumb") { }
|
73
|
+
virtual i::SmartPointer<char> Prompt(const char* prompt);
|
74
|
+
};
|
75
|
+
|
76
|
+
|
77
|
+
static DumbLineEditor dumb_line_editor;
|
78
|
+
|
79
|
+
|
80
|
+
i::SmartPointer<char> DumbLineEditor::Prompt(const char* prompt) {
|
81
|
+
static const int kBufferSize = 256;
|
82
|
+
char buffer[kBufferSize];
|
83
|
+
printf("%s", prompt);
|
84
|
+
char* str = fgets(buffer, kBufferSize, stdin);
|
85
|
+
return i::SmartPointer<char>(str ? i::StrDup(str) : str);
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
CounterMap* Shell::counter_map_;
|
90
|
+
i::OS::MemoryMappedFile* Shell::counters_file_ = NULL;
|
91
|
+
CounterCollection Shell::local_counters_;
|
92
|
+
CounterCollection* Shell::counters_ = &local_counters_;
|
93
|
+
Persistent<Context> Shell::utility_context_;
|
94
|
+
Persistent<Context> Shell::evaluation_context_;
|
95
|
+
|
96
|
+
|
97
|
+
bool CounterMap::Match(void* key1, void* key2) {
|
98
|
+
const char* name1 = reinterpret_cast<const char*>(key1);
|
99
|
+
const char* name2 = reinterpret_cast<const char*>(key2);
|
100
|
+
return strcmp(name1, name2) == 0;
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
// Converts a V8 value to a C string.
|
105
|
+
const char* ToCString(const v8::String::Utf8Value& value) {
|
106
|
+
return *value ? *value : "<string conversion failed>";
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
// Executes a string within the current v8 context.
|
111
|
+
bool Shell::ExecuteString(Handle<String> source,
|
112
|
+
Handle<Value> name,
|
113
|
+
bool print_result,
|
114
|
+
bool report_exceptions) {
|
115
|
+
HandleScope handle_scope;
|
116
|
+
TryCatch try_catch;
|
117
|
+
if (i::FLAG_debugger) {
|
118
|
+
// When debugging make exceptions appear to be uncaught.
|
119
|
+
try_catch.SetVerbose(true);
|
120
|
+
}
|
121
|
+
Handle<Script> script = Script::Compile(source, name);
|
122
|
+
if (script.IsEmpty()) {
|
123
|
+
// Print errors that happened during compilation.
|
124
|
+
if (report_exceptions && !i::FLAG_debugger)
|
125
|
+
ReportException(&try_catch);
|
126
|
+
return false;
|
127
|
+
} else {
|
128
|
+
Handle<Value> result = script->Run();
|
129
|
+
if (result.IsEmpty()) {
|
130
|
+
// Print errors that happened during execution.
|
131
|
+
if (report_exceptions && !i::FLAG_debugger)
|
132
|
+
ReportException(&try_catch);
|
133
|
+
return false;
|
134
|
+
} else {
|
135
|
+
if (print_result && !result->IsUndefined()) {
|
136
|
+
// If all went well and the result wasn't undefined then print
|
137
|
+
// the returned value.
|
138
|
+
v8::String::Utf8Value str(result);
|
139
|
+
const char* cstr = ToCString(str);
|
140
|
+
printf("%s\n", cstr);
|
141
|
+
}
|
142
|
+
return true;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
|
148
|
+
Handle<Value> Shell::Print(const Arguments& args) {
|
149
|
+
Handle<Value> val = Write(args);
|
150
|
+
printf("\n");
|
151
|
+
return val;
|
152
|
+
}
|
153
|
+
|
154
|
+
|
155
|
+
Handle<Value> Shell::Write(const Arguments& args) {
|
156
|
+
for (int i = 0; i < args.Length(); i++) {
|
157
|
+
HandleScope handle_scope;
|
158
|
+
if (i != 0) {
|
159
|
+
printf(" ");
|
160
|
+
}
|
161
|
+
v8::String::Utf8Value str(args[i]);
|
162
|
+
int n = fwrite(*str, sizeof(**str), str.length(), stdout);
|
163
|
+
if (n != str.length()) {
|
164
|
+
printf("Error in fwrite\n");
|
165
|
+
exit(1);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
return Undefined();
|
169
|
+
}
|
170
|
+
|
171
|
+
|
172
|
+
Handle<Value> Shell::Read(const Arguments& args) {
|
173
|
+
String::Utf8Value file(args[0]);
|
174
|
+
if (*file == NULL) {
|
175
|
+
return ThrowException(String::New("Error loading file"));
|
176
|
+
}
|
177
|
+
Handle<String> source = ReadFile(*file);
|
178
|
+
if (source.IsEmpty()) {
|
179
|
+
return ThrowException(String::New("Error loading file"));
|
180
|
+
}
|
181
|
+
return source;
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
Handle<Value> Shell::ReadLine(const Arguments& args) {
|
186
|
+
i::SmartPointer<char> line(i::ReadLine(""));
|
187
|
+
if (*line == NULL) {
|
188
|
+
return Null();
|
189
|
+
}
|
190
|
+
size_t len = strlen(*line);
|
191
|
+
if (len > 0 && line[len - 1] == '\n') {
|
192
|
+
--len;
|
193
|
+
}
|
194
|
+
return String::New(*line, len);
|
195
|
+
}
|
196
|
+
|
197
|
+
|
198
|
+
Handle<Value> Shell::Load(const Arguments& args) {
|
199
|
+
for (int i = 0; i < args.Length(); i++) {
|
200
|
+
HandleScope handle_scope;
|
201
|
+
String::Utf8Value file(args[i]);
|
202
|
+
if (*file == NULL) {
|
203
|
+
return ThrowException(String::New("Error loading file"));
|
204
|
+
}
|
205
|
+
Handle<String> source = ReadFile(*file);
|
206
|
+
if (source.IsEmpty()) {
|
207
|
+
return ThrowException(String::New("Error loading file"));
|
208
|
+
}
|
209
|
+
if (!ExecuteString(source, String::New(*file), false, false)) {
|
210
|
+
return ThrowException(String::New("Error executing file"));
|
211
|
+
}
|
212
|
+
}
|
213
|
+
return Undefined();
|
214
|
+
}
|
215
|
+
|
216
|
+
|
217
|
+
Handle<Value> Shell::Yield(const Arguments& args) {
|
218
|
+
v8::Unlocker unlocker;
|
219
|
+
return Undefined();
|
220
|
+
}
|
221
|
+
|
222
|
+
|
223
|
+
Handle<Value> Shell::Quit(const Arguments& args) {
|
224
|
+
int exit_code = args[0]->Int32Value();
|
225
|
+
OnExit();
|
226
|
+
exit(exit_code);
|
227
|
+
return Undefined();
|
228
|
+
}
|
229
|
+
|
230
|
+
|
231
|
+
Handle<Value> Shell::Version(const Arguments& args) {
|
232
|
+
return String::New(V8::GetVersion());
|
233
|
+
}
|
234
|
+
|
235
|
+
|
236
|
+
void Shell::ReportException(v8::TryCatch* try_catch) {
|
237
|
+
HandleScope handle_scope;
|
238
|
+
v8::String::Utf8Value exception(try_catch->Exception());
|
239
|
+
const char* exception_string = ToCString(exception);
|
240
|
+
Handle<Message> message = try_catch->Message();
|
241
|
+
if (message.IsEmpty()) {
|
242
|
+
// V8 didn't provide any extra information about this error; just
|
243
|
+
// print the exception.
|
244
|
+
printf("%s\n", exception_string);
|
245
|
+
} else {
|
246
|
+
// Print (filename):(line number): (message).
|
247
|
+
v8::String::Utf8Value filename(message->GetScriptResourceName());
|
248
|
+
const char* filename_string = ToCString(filename);
|
249
|
+
int linenum = message->GetLineNumber();
|
250
|
+
printf("%s:%i: %s\n", filename_string, linenum, exception_string);
|
251
|
+
// Print line of source code.
|
252
|
+
v8::String::Utf8Value sourceline(message->GetSourceLine());
|
253
|
+
const char* sourceline_string = ToCString(sourceline);
|
254
|
+
printf("%s\n", sourceline_string);
|
255
|
+
// Print wavy underline (GetUnderline is deprecated).
|
256
|
+
int start = message->GetStartColumn();
|
257
|
+
for (int i = 0; i < start; i++) {
|
258
|
+
printf(" ");
|
259
|
+
}
|
260
|
+
int end = message->GetEndColumn();
|
261
|
+
for (int i = start; i < end; i++) {
|
262
|
+
printf("^");
|
263
|
+
}
|
264
|
+
printf("\n");
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
|
269
|
+
Handle<Array> Shell::GetCompletions(Handle<String> text, Handle<String> full) {
|
270
|
+
HandleScope handle_scope;
|
271
|
+
Context::Scope context_scope(utility_context_);
|
272
|
+
Handle<Object> global = utility_context_->Global();
|
273
|
+
Handle<Value> fun = global->Get(String::New("GetCompletions"));
|
274
|
+
static const int kArgc = 3;
|
275
|
+
Handle<Value> argv[kArgc] = { evaluation_context_->Global(), text, full };
|
276
|
+
Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
|
277
|
+
return handle_scope.Close(Handle<Array>::Cast(val));
|
278
|
+
}
|
279
|
+
|
280
|
+
|
281
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
282
|
+
Handle<Object> Shell::DebugMessageDetails(Handle<String> message) {
|
283
|
+
Context::Scope context_scope(utility_context_);
|
284
|
+
Handle<Object> global = utility_context_->Global();
|
285
|
+
Handle<Value> fun = global->Get(String::New("DebugMessageDetails"));
|
286
|
+
static const int kArgc = 1;
|
287
|
+
Handle<Value> argv[kArgc] = { message };
|
288
|
+
Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
|
289
|
+
return Handle<Object>::Cast(val);
|
290
|
+
}
|
291
|
+
|
292
|
+
|
293
|
+
Handle<Value> Shell::DebugCommandToJSONRequest(Handle<String> command) {
|
294
|
+
Context::Scope context_scope(utility_context_);
|
295
|
+
Handle<Object> global = utility_context_->Global();
|
296
|
+
Handle<Value> fun = global->Get(String::New("DebugCommandToJSONRequest"));
|
297
|
+
static const int kArgc = 1;
|
298
|
+
Handle<Value> argv[kArgc] = { command };
|
299
|
+
Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
|
300
|
+
return val;
|
301
|
+
}
|
302
|
+
#endif
|
303
|
+
|
304
|
+
|
305
|
+
int32_t* Counter::Bind(const char* name, bool is_histogram) {
|
306
|
+
int i;
|
307
|
+
for (i = 0; i < kMaxNameSize - 1 && name[i]; i++)
|
308
|
+
name_[i] = static_cast<char>(name[i]);
|
309
|
+
name_[i] = '\0';
|
310
|
+
is_histogram_ = is_histogram;
|
311
|
+
return ptr();
|
312
|
+
}
|
313
|
+
|
314
|
+
|
315
|
+
void Counter::AddSample(int32_t sample) {
|
316
|
+
count_++;
|
317
|
+
sample_total_ += sample;
|
318
|
+
}
|
319
|
+
|
320
|
+
|
321
|
+
CounterCollection::CounterCollection() {
|
322
|
+
magic_number_ = 0xDEADFACE;
|
323
|
+
max_counters_ = kMaxCounters;
|
324
|
+
max_name_size_ = Counter::kMaxNameSize;
|
325
|
+
counters_in_use_ = 0;
|
326
|
+
}
|
327
|
+
|
328
|
+
|
329
|
+
Counter* CounterCollection::GetNextCounter() {
|
330
|
+
if (counters_in_use_ == kMaxCounters) return NULL;
|
331
|
+
return &counters_[counters_in_use_++];
|
332
|
+
}
|
333
|
+
|
334
|
+
|
335
|
+
void Shell::MapCounters(const char* name) {
|
336
|
+
counters_file_ = i::OS::MemoryMappedFile::create(name,
|
337
|
+
sizeof(CounterCollection), &local_counters_);
|
338
|
+
void* memory = (counters_file_ == NULL) ?
|
339
|
+
NULL : counters_file_->memory();
|
340
|
+
if (memory == NULL) {
|
341
|
+
printf("Could not map counters file %s\n", name);
|
342
|
+
exit(1);
|
343
|
+
}
|
344
|
+
counters_ = static_cast<CounterCollection*>(memory);
|
345
|
+
V8::SetCounterFunction(LookupCounter);
|
346
|
+
V8::SetCreateHistogramFunction(CreateHistogram);
|
347
|
+
V8::SetAddHistogramSampleFunction(AddHistogramSample);
|
348
|
+
}
|
349
|
+
|
350
|
+
|
351
|
+
int CounterMap::Hash(const char* name) {
|
352
|
+
int h = 0;
|
353
|
+
int c;
|
354
|
+
while ((c = *name++) != 0) {
|
355
|
+
h += h << 5;
|
356
|
+
h += c;
|
357
|
+
}
|
358
|
+
return h;
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
Counter* Shell::GetCounter(const char* name, bool is_histogram) {
|
363
|
+
Counter* counter = counter_map_->Lookup(name);
|
364
|
+
|
365
|
+
if (counter == NULL) {
|
366
|
+
counter = counters_->GetNextCounter();
|
367
|
+
if (counter != NULL) {
|
368
|
+
counter_map_->Set(name, counter);
|
369
|
+
counter->Bind(name, is_histogram);
|
370
|
+
}
|
371
|
+
} else {
|
372
|
+
ASSERT(counter->is_histogram() == is_histogram);
|
373
|
+
}
|
374
|
+
return counter;
|
375
|
+
}
|
376
|
+
|
377
|
+
|
378
|
+
int* Shell::LookupCounter(const char* name) {
|
379
|
+
Counter* counter = GetCounter(name, false);
|
380
|
+
|
381
|
+
if (counter != NULL) {
|
382
|
+
return counter->ptr();
|
383
|
+
} else {
|
384
|
+
return NULL;
|
385
|
+
}
|
386
|
+
}
|
387
|
+
|
388
|
+
|
389
|
+
void* Shell::CreateHistogram(const char* name,
|
390
|
+
int min,
|
391
|
+
int max,
|
392
|
+
size_t buckets) {
|
393
|
+
return GetCounter(name, true);
|
394
|
+
}
|
395
|
+
|
396
|
+
|
397
|
+
void Shell::AddHistogramSample(void* histogram, int sample) {
|
398
|
+
Counter* counter = reinterpret_cast<Counter*>(histogram);
|
399
|
+
counter->AddSample(sample);
|
400
|
+
}
|
401
|
+
|
402
|
+
|
403
|
+
void Shell::Initialize() {
|
404
|
+
Shell::counter_map_ = new CounterMap();
|
405
|
+
// Set up counters
|
406
|
+
if (i::FLAG_map_counters != NULL)
|
407
|
+
MapCounters(i::FLAG_map_counters);
|
408
|
+
if (i::FLAG_dump_counters) {
|
409
|
+
V8::SetCounterFunction(LookupCounter);
|
410
|
+
V8::SetCreateHistogramFunction(CreateHistogram);
|
411
|
+
V8::SetAddHistogramSampleFunction(AddHistogramSample);
|
412
|
+
}
|
413
|
+
|
414
|
+
// Initialize the global objects
|
415
|
+
HandleScope scope;
|
416
|
+
Handle<ObjectTemplate> global_template = ObjectTemplate::New();
|
417
|
+
global_template->Set(String::New("print"), FunctionTemplate::New(Print));
|
418
|
+
global_template->Set(String::New("write"), FunctionTemplate::New(Write));
|
419
|
+
global_template->Set(String::New("read"), FunctionTemplate::New(Read));
|
420
|
+
global_template->Set(String::New("readline"),
|
421
|
+
FunctionTemplate::New(ReadLine));
|
422
|
+
global_template->Set(String::New("load"), FunctionTemplate::New(Load));
|
423
|
+
global_template->Set(String::New("quit"), FunctionTemplate::New(Quit));
|
424
|
+
global_template->Set(String::New("version"), FunctionTemplate::New(Version));
|
425
|
+
|
426
|
+
Handle<ObjectTemplate> os_templ = ObjectTemplate::New();
|
427
|
+
AddOSMethods(os_templ);
|
428
|
+
global_template->Set(String::New("os"), os_templ);
|
429
|
+
|
430
|
+
utility_context_ = Context::New(NULL, global_template);
|
431
|
+
utility_context_->SetSecurityToken(Undefined());
|
432
|
+
Context::Scope utility_scope(utility_context_);
|
433
|
+
|
434
|
+
i::JSArguments js_args = i::FLAG_js_arguments;
|
435
|
+
i::Handle<i::FixedArray> arguments_array =
|
436
|
+
i::Factory::NewFixedArray(js_args.argc());
|
437
|
+
for (int j = 0; j < js_args.argc(); j++) {
|
438
|
+
i::Handle<i::String> arg =
|
439
|
+
i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j]));
|
440
|
+
arguments_array->set(j, *arg);
|
441
|
+
}
|
442
|
+
i::Handle<i::JSArray> arguments_jsarray =
|
443
|
+
i::Factory::NewJSArrayWithElements(arguments_array);
|
444
|
+
global_template->Set(String::New("arguments"),
|
445
|
+
Utils::ToLocal(arguments_jsarray));
|
446
|
+
|
447
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
448
|
+
// Install the debugger object in the utility scope
|
449
|
+
i::Debug::Load();
|
450
|
+
i::JSObject* debug = i::Debug::debug_context()->global();
|
451
|
+
utility_context_->Global()->Set(String::New("$debug"),
|
452
|
+
Utils::ToLocal(&debug));
|
453
|
+
#endif
|
454
|
+
|
455
|
+
// Run the d8 shell utility script in the utility context
|
456
|
+
int source_index = i::NativesCollection<i::D8>::GetIndex("d8");
|
457
|
+
i::Vector<const char> shell_source
|
458
|
+
= i::NativesCollection<i::D8>::GetScriptSource(source_index);
|
459
|
+
i::Vector<const char> shell_source_name
|
460
|
+
= i::NativesCollection<i::D8>::GetScriptName(source_index);
|
461
|
+
Handle<String> source = String::New(shell_source.start(),
|
462
|
+
shell_source.length());
|
463
|
+
Handle<String> name = String::New(shell_source_name.start(),
|
464
|
+
shell_source_name.length());
|
465
|
+
Handle<Script> script = Script::Compile(source, name);
|
466
|
+
script->Run();
|
467
|
+
|
468
|
+
// Mark the d8 shell script as native to avoid it showing up as normal source
|
469
|
+
// in the debugger.
|
470
|
+
i::Handle<i::JSFunction> script_fun = Utils::OpenHandle(*script);
|
471
|
+
i::Handle<i::Script> script_object =
|
472
|
+
i::Handle<i::Script>(i::Script::cast(script_fun->shared()->script()));
|
473
|
+
script_object->set_type(i::Smi::FromInt(i::Script::TYPE_NATIVE));
|
474
|
+
|
475
|
+
// Create the evaluation context
|
476
|
+
evaluation_context_ = Context::New(NULL, global_template);
|
477
|
+
evaluation_context_->SetSecurityToken(Undefined());
|
478
|
+
|
479
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
480
|
+
// Set the security token of the debug context to allow access.
|
481
|
+
i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
|
482
|
+
|
483
|
+
// Start the debugger agent if requested.
|
484
|
+
if (i::FLAG_debugger_agent) {
|
485
|
+
v8::Debug::EnableAgent("d8 shell", i::FLAG_debugger_port);
|
486
|
+
}
|
487
|
+
|
488
|
+
// Start the in-process debugger if requested.
|
489
|
+
if (i::FLAG_debugger && !i::FLAG_debugger_agent) {
|
490
|
+
v8::Debug::SetDebugEventListener(HandleDebugEvent);
|
491
|
+
}
|
492
|
+
#endif
|
493
|
+
}
|
494
|
+
|
495
|
+
|
496
|
+
void Shell::OnExit() {
|
497
|
+
if (i::FLAG_dump_counters) {
|
498
|
+
::printf("+----------------------------------------+-------------+\n");
|
499
|
+
::printf("| Name | Value |\n");
|
500
|
+
::printf("+----------------------------------------+-------------+\n");
|
501
|
+
for (CounterMap::Iterator i(counter_map_); i.More(); i.Next()) {
|
502
|
+
Counter* counter = i.CurrentValue();
|
503
|
+
if (counter->is_histogram()) {
|
504
|
+
::printf("| c:%-36s | %11i |\n", i.CurrentKey(), counter->count());
|
505
|
+
::printf("| t:%-36s | %11i |\n",
|
506
|
+
i.CurrentKey(),
|
507
|
+
counter->sample_total());
|
508
|
+
} else {
|
509
|
+
::printf("| %-38s | %11i |\n", i.CurrentKey(), counter->count());
|
510
|
+
}
|
511
|
+
}
|
512
|
+
::printf("+----------------------------------------+-------------+\n");
|
513
|
+
}
|
514
|
+
if (counters_file_ != NULL)
|
515
|
+
delete counters_file_;
|
516
|
+
}
|
517
|
+
|
518
|
+
|
519
|
+
static char* ReadChars(const char* name, int* size_out) {
|
520
|
+
v8::Unlocker unlocker; // Release the V8 lock while reading files.
|
521
|
+
FILE* file = i::OS::FOpen(name, "rb");
|
522
|
+
if (file == NULL) return NULL;
|
523
|
+
|
524
|
+
fseek(file, 0, SEEK_END);
|
525
|
+
int size = ftell(file);
|
526
|
+
rewind(file);
|
527
|
+
|
528
|
+
char* chars = new char[size + 1];
|
529
|
+
chars[size] = '\0';
|
530
|
+
for (int i = 0; i < size;) {
|
531
|
+
int read = fread(&chars[i], 1, size - i, file);
|
532
|
+
i += read;
|
533
|
+
}
|
534
|
+
fclose(file);
|
535
|
+
*size_out = size;
|
536
|
+
return chars;
|
537
|
+
}
|
538
|
+
|
539
|
+
|
540
|
+
static char* ReadToken(char* data, char token) {
|
541
|
+
char* next = i::OS::StrChr(data, token);
|
542
|
+
if (next != NULL) {
|
543
|
+
*next = '\0';
|
544
|
+
return (next + 1);
|
545
|
+
}
|
546
|
+
|
547
|
+
return NULL;
|
548
|
+
}
|
549
|
+
|
550
|
+
|
551
|
+
static char* ReadLine(char* data) {
|
552
|
+
return ReadToken(data, '\n');
|
553
|
+
}
|
554
|
+
|
555
|
+
|
556
|
+
static char* ReadWord(char* data) {
|
557
|
+
return ReadToken(data, ' ');
|
558
|
+
}
|
559
|
+
|
560
|
+
|
561
|
+
// Reads a file into a v8 string.
|
562
|
+
Handle<String> Shell::ReadFile(const char* name) {
|
563
|
+
int size = 0;
|
564
|
+
char* chars = ReadChars(name, &size);
|
565
|
+
if (chars == NULL) return Handle<String>();
|
566
|
+
Handle<String> result = String::New(chars);
|
567
|
+
delete[] chars;
|
568
|
+
return result;
|
569
|
+
}
|
570
|
+
|
571
|
+
|
572
|
+
void Shell::RunShell() {
|
573
|
+
LineEditor* editor = LineEditor::Get();
|
574
|
+
printf("V8 version %s [console: %s]\n", V8::GetVersion(), editor->name());
|
575
|
+
editor->Open();
|
576
|
+
while (true) {
|
577
|
+
Locker locker;
|
578
|
+
HandleScope handle_scope;
|
579
|
+
Context::Scope context_scope(evaluation_context_);
|
580
|
+
i::SmartPointer<char> input = editor->Prompt(Shell::kPrompt);
|
581
|
+
if (input.is_empty())
|
582
|
+
break;
|
583
|
+
editor->AddHistory(*input);
|
584
|
+
Handle<String> name = String::New("(d8)");
|
585
|
+
ExecuteString(String::New(*input), name, true, true);
|
586
|
+
}
|
587
|
+
editor->Close();
|
588
|
+
printf("\n");
|
589
|
+
}
|
590
|
+
|
591
|
+
|
592
|
+
class ShellThread : public i::Thread {
|
593
|
+
public:
|
594
|
+
ShellThread(int no, i::Vector<const char> files)
|
595
|
+
: no_(no), files_(files) { }
|
596
|
+
virtual void Run();
|
597
|
+
private:
|
598
|
+
int no_;
|
599
|
+
i::Vector<const char> files_;
|
600
|
+
};
|
601
|
+
|
602
|
+
|
603
|
+
void ShellThread::Run() {
|
604
|
+
// Prepare the context for this thread.
|
605
|
+
Locker locker;
|
606
|
+
HandleScope scope;
|
607
|
+
Handle<ObjectTemplate> global_template = ObjectTemplate::New();
|
608
|
+
global_template->Set(String::New("print"),
|
609
|
+
FunctionTemplate::New(Shell::Print));
|
610
|
+
global_template->Set(String::New("write"),
|
611
|
+
FunctionTemplate::New(Shell::Write));
|
612
|
+
global_template->Set(String::New("read"),
|
613
|
+
FunctionTemplate::New(Shell::Read));
|
614
|
+
global_template->Set(String::New("readline"),
|
615
|
+
FunctionTemplate::New(Shell::ReadLine));
|
616
|
+
global_template->Set(String::New("load"),
|
617
|
+
FunctionTemplate::New(Shell::Load));
|
618
|
+
global_template->Set(String::New("yield"),
|
619
|
+
FunctionTemplate::New(Shell::Yield));
|
620
|
+
global_template->Set(String::New("version"),
|
621
|
+
FunctionTemplate::New(Shell::Version));
|
622
|
+
|
623
|
+
char* ptr = const_cast<char*>(files_.start());
|
624
|
+
while ((ptr != NULL) && (*ptr != '\0')) {
|
625
|
+
// For each newline-separated line.
|
626
|
+
char* next_line = ReadLine(ptr);
|
627
|
+
|
628
|
+
if (*ptr == '#') {
|
629
|
+
// Skip comment lines.
|
630
|
+
ptr = next_line;
|
631
|
+
continue;
|
632
|
+
}
|
633
|
+
|
634
|
+
Persistent<Context> thread_context = Context::New(NULL, global_template);
|
635
|
+
thread_context->SetSecurityToken(Undefined());
|
636
|
+
Context::Scope context_scope(thread_context);
|
637
|
+
|
638
|
+
while ((ptr != NULL) && (*ptr != '\0')) {
|
639
|
+
char* filename = ptr;
|
640
|
+
ptr = ReadWord(ptr);
|
641
|
+
|
642
|
+
// Skip empty strings.
|
643
|
+
if (strlen(filename) == 0) {
|
644
|
+
break;
|
645
|
+
}
|
646
|
+
|
647
|
+
Handle<String> str = Shell::ReadFile(filename);
|
648
|
+
if (str.IsEmpty()) {
|
649
|
+
printf("WARNING: %s not found\n", filename);
|
650
|
+
break;
|
651
|
+
}
|
652
|
+
|
653
|
+
Shell::ExecuteString(str, String::New(filename), false, false);
|
654
|
+
}
|
655
|
+
|
656
|
+
thread_context.Dispose();
|
657
|
+
ptr = next_line;
|
658
|
+
}
|
659
|
+
}
|
660
|
+
|
661
|
+
|
662
|
+
int Shell::Main(int argc, char* argv[]) {
|
663
|
+
i::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
|
664
|
+
if (i::FLAG_help) {
|
665
|
+
return 1;
|
666
|
+
}
|
667
|
+
Initialize();
|
668
|
+
bool run_shell = (argc == 1);
|
669
|
+
|
670
|
+
// Default use preemption if threads are created.
|
671
|
+
bool use_preemption = true;
|
672
|
+
|
673
|
+
// Default to use lowest possible thread preemption interval to test as many
|
674
|
+
// edgecases as possible.
|
675
|
+
int preemption_interval = 1;
|
676
|
+
|
677
|
+
i::List<i::Thread*> threads(1);
|
678
|
+
|
679
|
+
{
|
680
|
+
// Acquire the V8 lock once initialization has finished. Since the thread
|
681
|
+
// below may spawn new threads accessing V8 holding the V8 lock here is
|
682
|
+
// mandatory.
|
683
|
+
Locker locker;
|
684
|
+
Context::Scope context_scope(evaluation_context_);
|
685
|
+
for (int i = 1; i < argc; i++) {
|
686
|
+
char* str = argv[i];
|
687
|
+
if (strcmp(str, "--shell") == 0) {
|
688
|
+
run_shell = true;
|
689
|
+
} else if (strcmp(str, "--preemption") == 0) {
|
690
|
+
use_preemption = true;
|
691
|
+
} else if (strcmp(str, "--no-preemption") == 0) {
|
692
|
+
use_preemption = false;
|
693
|
+
} else if (strcmp(str, "--preemption-interval") == 0) {
|
694
|
+
if (i + 1 < argc) {
|
695
|
+
char* end = NULL;
|
696
|
+
preemption_interval = strtol(argv[++i], &end, 10); // NOLINT
|
697
|
+
if (preemption_interval <= 0 || *end != '\0' || errno == ERANGE) {
|
698
|
+
printf("Invalid value for --preemption-interval '%s'\n", argv[i]);
|
699
|
+
return 1;
|
700
|
+
}
|
701
|
+
} else {
|
702
|
+
printf("Missing value for --preemption-interval\n");
|
703
|
+
return 1;
|
704
|
+
}
|
705
|
+
} else if (strcmp(str, "-f") == 0) {
|
706
|
+
// Ignore any -f flags for compatibility with other stand-alone
|
707
|
+
// JavaScript engines.
|
708
|
+
continue;
|
709
|
+
} else if (strncmp(str, "--", 2) == 0) {
|
710
|
+
printf("Warning: unknown flag %s.\nTry --help for options\n", str);
|
711
|
+
} else if (strcmp(str, "-e") == 0 && i + 1 < argc) {
|
712
|
+
// Execute argument given to -e option directly.
|
713
|
+
v8::HandleScope handle_scope;
|
714
|
+
v8::Handle<v8::String> file_name = v8::String::New("unnamed");
|
715
|
+
v8::Handle<v8::String> source = v8::String::New(argv[i + 1]);
|
716
|
+
if (!ExecuteString(source, file_name, false, true)) {
|
717
|
+
OnExit();
|
718
|
+
return 1;
|
719
|
+
}
|
720
|
+
i++;
|
721
|
+
} else if (strcmp(str, "-p") == 0 && i + 1 < argc) {
|
722
|
+
int size = 0;
|
723
|
+
const char* files = ReadChars(argv[++i], &size);
|
724
|
+
if (files == NULL) return 1;
|
725
|
+
ShellThread* thread =
|
726
|
+
new ShellThread(threads.length(),
|
727
|
+
i::Vector<const char>(files, size));
|
728
|
+
thread->Start();
|
729
|
+
threads.Add(thread);
|
730
|
+
} else {
|
731
|
+
// Use all other arguments as names of files to load and run.
|
732
|
+
HandleScope handle_scope;
|
733
|
+
Handle<String> file_name = v8::String::New(str);
|
734
|
+
Handle<String> source = ReadFile(str);
|
735
|
+
if (source.IsEmpty()) {
|
736
|
+
printf("Error reading '%s'\n", str);
|
737
|
+
return 1;
|
738
|
+
}
|
739
|
+
if (!ExecuteString(source, file_name, false, true)) {
|
740
|
+
OnExit();
|
741
|
+
return 1;
|
742
|
+
}
|
743
|
+
}
|
744
|
+
}
|
745
|
+
|
746
|
+
// Start preemption if threads have been created and preemption is enabled.
|
747
|
+
if (threads.length() > 0 && use_preemption) {
|
748
|
+
Locker::StartPreemption(preemption_interval);
|
749
|
+
}
|
750
|
+
|
751
|
+
#ifdef ENABLE_DEBUGGER_SUPPORT
|
752
|
+
// Run the remote debugger if requested.
|
753
|
+
if (i::FLAG_remote_debugger) {
|
754
|
+
RunRemoteDebugger(i::FLAG_debugger_port);
|
755
|
+
return 0;
|
756
|
+
}
|
757
|
+
#endif
|
758
|
+
}
|
759
|
+
if (run_shell)
|
760
|
+
RunShell();
|
761
|
+
for (int i = 0; i < threads.length(); i++) {
|
762
|
+
i::Thread* thread = threads[i];
|
763
|
+
thread->Join();
|
764
|
+
delete thread;
|
765
|
+
}
|
766
|
+
OnExit();
|
767
|
+
return 0;
|
768
|
+
}
|
769
|
+
|
770
|
+
|
771
|
+
} // namespace v8
|
772
|
+
|
773
|
+
|
774
|
+
int main(int argc, char* argv[]) {
|
775
|
+
return v8::Shell::Main(argc, argv);
|
776
|
+
}
|