mustang 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Isolate +9 -0
- data/README.md +6 -12
- data/Rakefile +30 -4
- data/TODO.md +9 -0
- data/ext/v8/extconf.rb +56 -0
- data/ext/v8/v8.cpp +37 -0
- data/ext/v8/v8_array.cpp +161 -0
- data/ext/v8/v8_array.h +17 -0
- data/ext/v8/v8_base.cpp +147 -0
- data/ext/v8/v8_base.h +23 -0
- data/ext/v8/v8_cast.cpp +151 -0
- data/ext/v8/v8_cast.h +64 -0
- data/ext/v8/v8_context.cpp +174 -0
- data/ext/v8/v8_context.h +12 -0
- data/ext/v8/v8_date.cpp +61 -0
- data/ext/v8/v8_date.h +16 -0
- data/ext/v8/v8_errors.cpp +147 -0
- data/ext/v8/v8_errors.h +19 -0
- data/ext/v8/v8_external.cpp +66 -0
- data/ext/v8/v8_external.h +16 -0
- data/ext/v8/v8_function.cpp +182 -0
- data/ext/v8/v8_function.h +14 -0
- data/ext/v8/v8_integer.cpp +70 -0
- data/ext/v8/v8_integer.h +16 -0
- data/ext/v8/v8_macros.h +30 -0
- data/ext/v8/v8_main.cpp +53 -0
- data/ext/v8/v8_main.h +13 -0
- data/ext/v8/v8_number.cpp +62 -0
- data/ext/v8/v8_number.h +16 -0
- data/ext/v8/v8_object.cpp +172 -0
- data/ext/v8/v8_object.h +17 -0
- data/ext/v8/v8_ref.cpp +72 -0
- data/ext/v8/v8_ref.h +43 -0
- data/ext/v8/v8_regexp.cpp +148 -0
- data/ext/v8/v8_regexp.h +16 -0
- data/ext/v8/v8_string.cpp +78 -0
- data/ext/v8/v8_string.h +16 -0
- data/ext/v8/v8_value.cpp +370 -0
- data/ext/v8/v8_value.h +19 -0
- data/gemspec.yml +2 -1
- data/lib/core_ext/class.rb +14 -0
- data/lib/core_ext/object.rb +12 -0
- data/lib/core_ext/symbol.rb +23 -0
- data/lib/mustang.rb +44 -0
- data/lib/mustang/context.rb +69 -0
- data/lib/mustang/errors.rb +36 -0
- data/lib/support/delegated.rb +25 -0
- data/lib/v8/array.rb +21 -0
- data/lib/v8/context.rb +13 -0
- data/lib/v8/date.rb +20 -0
- data/lib/v8/error.rb +15 -0
- data/lib/v8/external.rb +16 -0
- data/lib/v8/function.rb +11 -0
- data/lib/v8/integer.rb +16 -0
- data/lib/v8/number.rb +16 -0
- data/lib/v8/object.rb +66 -0
- data/lib/v8/regexp.rb +23 -0
- data/lib/v8/string.rb +27 -0
- data/mustang.gemspec +3 -0
- data/spec/core_ext/class_spec.rb +19 -0
- data/spec/core_ext/object_spec.rb +19 -0
- data/spec/core_ext/symbol_spec.rb +27 -0
- data/spec/fixtures/test1.js +2 -0
- data/spec/fixtures/test2.js +2 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/v8/array_spec.rb +88 -0
- data/spec/v8/cast_spec.rb +151 -0
- data/spec/v8/context_spec.rb +78 -0
- data/spec/v8/data_spec.rb +39 -0
- data/spec/v8/date_spec.rb +45 -0
- data/spec/v8/empty_spec.rb +27 -0
- data/spec/v8/errors_spec.rb +142 -0
- data/spec/v8/external_spec.rb +44 -0
- data/spec/v8/function_spec.rb +170 -0
- data/spec/v8/integer_spec.rb +41 -0
- data/spec/v8/main_spec.rb +18 -0
- data/spec/v8/null_spec.rb +27 -0
- data/spec/v8/number_spec.rb +40 -0
- data/spec/v8/object_spec.rb +79 -0
- data/spec/v8/primitive_spec.rb +9 -0
- data/spec/v8/regexp_spec.rb +65 -0
- data/spec/v8/string_spec.rb +48 -0
- data/spec/v8/undefined_spec.rb +27 -0
- data/spec/v8/value_spec.rb +215 -0
- data/vendor/v8/.gitignore +2 -0
- data/vendor/v8/AUTHORS +3 -1
- data/vendor/v8/ChangeLog +117 -0
- data/vendor/v8/SConstruct +334 -53
- data/vendor/v8/include/v8-debug.h +21 -11
- data/vendor/v8/include/v8-preparser.h +1 -1
- data/vendor/v8/include/v8-profiler.h +122 -43
- data/vendor/v8/include/v8-testing.h +5 -0
- data/vendor/v8/include/v8.h +171 -17
- data/vendor/v8/preparser/SConscript +38 -0
- data/vendor/v8/preparser/preparser-process.cc +77 -114
- data/vendor/v8/samples/shell.cc +232 -46
- data/vendor/v8/src/SConscript +29 -5
- data/vendor/v8/src/accessors.cc +70 -211
- data/vendor/v8/{test/cctest/test-mips.cc → src/allocation-inl.h} +15 -18
- data/vendor/v8/src/allocation.cc +0 -82
- data/vendor/v8/src/allocation.h +9 -42
- data/vendor/v8/src/api.cc +1645 -1156
- data/vendor/v8/src/api.h +76 -12
- data/vendor/v8/src/apiutils.h +0 -7
- data/vendor/v8/src/arguments.h +15 -4
- data/vendor/v8/src/arm/assembler-arm-inl.h +10 -9
- data/vendor/v8/src/arm/assembler-arm.cc +62 -23
- data/vendor/v8/src/arm/assembler-arm.h +76 -11
- data/vendor/v8/src/arm/builtins-arm.cc +39 -33
- data/vendor/v8/src/arm/code-stubs-arm.cc +1182 -402
- data/vendor/v8/src/arm/code-stubs-arm.h +20 -54
- data/vendor/v8/src/arm/codegen-arm.cc +159 -106
- data/vendor/v8/src/arm/codegen-arm.h +6 -6
- data/vendor/v8/src/arm/constants-arm.h +16 -1
- data/vendor/v8/src/arm/cpu-arm.cc +7 -5
- data/vendor/v8/src/arm/debug-arm.cc +6 -4
- data/vendor/v8/src/arm/deoptimizer-arm.cc +51 -14
- data/vendor/v8/src/arm/disasm-arm.cc +47 -15
- data/vendor/v8/src/arm/frames-arm.h +1 -1
- data/vendor/v8/src/arm/full-codegen-arm.cc +724 -408
- data/vendor/v8/src/arm/ic-arm.cc +90 -85
- data/vendor/v8/src/arm/lithium-arm.cc +140 -69
- data/vendor/v8/src/arm/lithium-arm.h +161 -46
- data/vendor/v8/src/arm/lithium-codegen-arm.cc +567 -297
- data/vendor/v8/src/arm/lithium-codegen-arm.h +21 -9
- data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +2 -0
- data/vendor/v8/src/arm/macro-assembler-arm.cc +457 -96
- data/vendor/v8/src/arm/macro-assembler-arm.h +115 -18
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +20 -13
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +1 -0
- data/vendor/v8/src/arm/simulator-arm.cc +184 -101
- data/vendor/v8/src/arm/simulator-arm.h +26 -21
- data/vendor/v8/src/arm/stub-cache-arm.cc +450 -467
- data/vendor/v8/src/arm/virtual-frame-arm.cc +14 -12
- data/vendor/v8/src/arm/virtual-frame-arm.h +11 -8
- data/vendor/v8/src/array.js +35 -18
- data/vendor/v8/src/assembler.cc +186 -92
- data/vendor/v8/src/assembler.h +106 -69
- data/vendor/v8/src/ast-inl.h +5 -0
- data/vendor/v8/src/ast.cc +46 -35
- data/vendor/v8/src/ast.h +107 -50
- data/vendor/v8/src/atomicops.h +2 -0
- data/vendor/v8/src/atomicops_internals_mips_gcc.h +169 -0
- data/vendor/v8/src/bootstrapper.cc +649 -399
- data/vendor/v8/src/bootstrapper.h +94 -27
- data/vendor/v8/src/builtins.cc +359 -227
- data/vendor/v8/src/builtins.h +157 -123
- data/vendor/v8/src/checks.cc +2 -2
- data/vendor/v8/src/checks.h +4 -0
- data/vendor/v8/src/code-stubs.cc +27 -17
- data/vendor/v8/src/code-stubs.h +38 -17
- data/vendor/v8/src/codegen-inl.h +5 -1
- data/vendor/v8/src/codegen.cc +27 -17
- data/vendor/v8/src/codegen.h +9 -9
- data/vendor/v8/src/compilation-cache.cc +92 -206
- data/vendor/v8/src/compilation-cache.h +205 -30
- data/vendor/v8/src/compiler.cc +107 -120
- data/vendor/v8/src/compiler.h +17 -2
- data/vendor/v8/src/contexts.cc +22 -15
- data/vendor/v8/src/contexts.h +14 -8
- data/vendor/v8/src/conversions.cc +86 -30
- data/vendor/v8/src/counters.cc +19 -4
- data/vendor/v8/src/counters.h +28 -16
- data/vendor/v8/src/cpu-profiler-inl.h +4 -3
- data/vendor/v8/src/cpu-profiler.cc +123 -72
- data/vendor/v8/src/cpu-profiler.h +33 -19
- data/vendor/v8/src/cpu.h +2 -0
- data/vendor/v8/src/d8-debug.cc +3 -3
- data/vendor/v8/src/d8-debug.h +7 -6
- data/vendor/v8/src/d8-posix.cc +2 -0
- data/vendor/v8/src/d8.cc +22 -12
- data/vendor/v8/src/d8.gyp +3 -0
- data/vendor/v8/src/d8.js +618 -0
- data/vendor/v8/src/data-flow.h +3 -3
- data/vendor/v8/src/dateparser.h +4 -2
- data/vendor/v8/src/debug-agent.cc +10 -9
- data/vendor/v8/src/debug-agent.h +9 -11
- data/vendor/v8/src/debug-debugger.js +121 -0
- data/vendor/v8/src/debug.cc +331 -227
- data/vendor/v8/src/debug.h +248 -219
- data/vendor/v8/src/deoptimizer.cc +173 -62
- data/vendor/v8/src/deoptimizer.h +119 -19
- data/vendor/v8/src/disasm.h +3 -0
- data/vendor/v8/src/disassembler.cc +10 -9
- data/vendor/v8/src/execution.cc +185 -129
- data/vendor/v8/src/execution.h +47 -78
- data/vendor/v8/src/extensions/experimental/break-iterator.cc +250 -0
- data/vendor/v8/src/extensions/experimental/break-iterator.h +89 -0
- data/vendor/v8/src/extensions/experimental/experimental.gyp +2 -0
- data/vendor/v8/src/extensions/experimental/i18n-extension.cc +22 -2
- data/vendor/v8/src/extensions/externalize-string-extension.cc +2 -2
- data/vendor/v8/src/extensions/gc-extension.cc +1 -1
- data/vendor/v8/src/factory.cc +261 -154
- data/vendor/v8/src/factory.h +162 -158
- data/vendor/v8/src/flag-definitions.h +17 -11
- data/vendor/v8/src/frame-element.cc +0 -5
- data/vendor/v8/src/frame-element.h +9 -13
- data/vendor/v8/src/frames-inl.h +7 -0
- data/vendor/v8/src/frames.cc +56 -46
- data/vendor/v8/src/frames.h +36 -25
- data/vendor/v8/src/full-codegen.cc +15 -24
- data/vendor/v8/src/full-codegen.h +13 -41
- data/vendor/v8/src/func-name-inferrer.cc +7 -6
- data/vendor/v8/src/func-name-inferrer.h +1 -1
- data/vendor/v8/src/gdb-jit.cc +1 -0
- data/vendor/v8/src/global-handles.cc +118 -56
- data/vendor/v8/src/global-handles.h +98 -40
- data/vendor/v8/src/globals.h +2 -2
- data/vendor/v8/src/handles-inl.h +106 -9
- data/vendor/v8/src/handles.cc +220 -157
- data/vendor/v8/src/handles.h +38 -59
- data/vendor/v8/src/hashmap.h +3 -3
- data/vendor/v8/src/heap-inl.h +141 -25
- data/vendor/v8/src/heap-profiler.cc +117 -63
- data/vendor/v8/src/heap-profiler.h +38 -21
- data/vendor/v8/src/heap.cc +805 -564
- data/vendor/v8/src/heap.h +640 -594
- data/vendor/v8/src/hydrogen-instructions.cc +216 -73
- data/vendor/v8/src/hydrogen-instructions.h +259 -124
- data/vendor/v8/src/hydrogen.cc +996 -1171
- data/vendor/v8/src/hydrogen.h +163 -144
- data/vendor/v8/src/ia32/assembler-ia32-inl.h +12 -11
- data/vendor/v8/src/ia32/assembler-ia32.cc +85 -39
- data/vendor/v8/src/ia32/assembler-ia32.h +82 -16
- data/vendor/v8/src/ia32/builtins-ia32.cc +64 -58
- data/vendor/v8/src/ia32/code-stubs-ia32.cc +248 -324
- data/vendor/v8/src/ia32/code-stubs-ia32.h +3 -44
- data/vendor/v8/src/ia32/codegen-ia32.cc +217 -165
- data/vendor/v8/src/ia32/codegen-ia32.h +3 -0
- data/vendor/v8/src/ia32/cpu-ia32.cc +6 -5
- data/vendor/v8/src/ia32/debug-ia32.cc +8 -5
- data/vendor/v8/src/ia32/deoptimizer-ia32.cc +124 -14
- data/vendor/v8/src/ia32/disasm-ia32.cc +85 -62
- data/vendor/v8/src/ia32/frames-ia32.h +1 -1
- data/vendor/v8/src/ia32/full-codegen-ia32.cc +348 -435
- data/vendor/v8/src/ia32/ic-ia32.cc +91 -91
- data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +500 -255
- data/vendor/v8/src/ia32/lithium-codegen-ia32.h +13 -4
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +6 -0
- data/vendor/v8/src/ia32/lithium-ia32.cc +122 -45
- data/vendor/v8/src/ia32/lithium-ia32.h +128 -41
- data/vendor/v8/src/ia32/macro-assembler-ia32.cc +109 -84
- data/vendor/v8/src/ia32/macro-assembler-ia32.h +18 -9
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +26 -15
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +1 -0
- data/vendor/v8/src/ia32/register-allocator-ia32.cc +30 -30
- data/vendor/v8/src/ia32/simulator-ia32.h +4 -4
- data/vendor/v8/src/ia32/stub-cache-ia32.cc +383 -400
- data/vendor/v8/src/ia32/virtual-frame-ia32.cc +36 -13
- data/vendor/v8/src/ia32/virtual-frame-ia32.h +11 -5
- data/vendor/v8/src/ic-inl.h +12 -2
- data/vendor/v8/src/ic.cc +304 -221
- data/vendor/v8/src/ic.h +115 -58
- data/vendor/v8/src/interpreter-irregexp.cc +25 -21
- data/vendor/v8/src/interpreter-irregexp.h +2 -1
- data/vendor/v8/src/isolate.cc +883 -0
- data/vendor/v8/src/isolate.h +1304 -0
- data/vendor/v8/src/json.js +10 -10
- data/vendor/v8/src/jsregexp.cc +111 -80
- data/vendor/v8/src/jsregexp.h +6 -7
- data/vendor/v8/src/jump-target-heavy.cc +5 -8
- data/vendor/v8/src/jump-target-heavy.h +0 -6
- data/vendor/v8/src/jump-target-inl.h +1 -1
- data/vendor/v8/src/jump-target-light.cc +3 -3
- data/vendor/v8/src/lithium-allocator-inl.h +2 -0
- data/vendor/v8/src/lithium-allocator.cc +42 -30
- data/vendor/v8/src/lithium-allocator.h +8 -22
- data/vendor/v8/src/lithium.cc +1 -0
- data/vendor/v8/src/liveedit.cc +141 -99
- data/vendor/v8/src/liveedit.h +7 -2
- data/vendor/v8/src/liveobjectlist-inl.h +90 -0
- data/vendor/v8/src/liveobjectlist.cc +2537 -1
- data/vendor/v8/src/liveobjectlist.h +245 -35
- data/vendor/v8/src/log-utils.cc +122 -35
- data/vendor/v8/src/log-utils.h +33 -36
- data/vendor/v8/src/log.cc +299 -241
- data/vendor/v8/src/log.h +177 -110
- data/vendor/v8/src/mark-compact.cc +612 -470
- data/vendor/v8/src/mark-compact.h +153 -80
- data/vendor/v8/src/messages.cc +16 -14
- data/vendor/v8/src/messages.js +30 -7
- data/vendor/v8/src/mips/assembler-mips-inl.h +155 -35
- data/vendor/v8/src/mips/assembler-mips.cc +1093 -219
- data/vendor/v8/src/mips/assembler-mips.h +552 -153
- data/vendor/v8/src/mips/builtins-mips.cc +43 -100
- data/vendor/v8/src/mips/code-stubs-mips.cc +752 -0
- data/vendor/v8/src/mips/code-stubs-mips.h +511 -0
- data/vendor/v8/src/mips/codegen-mips-inl.h +8 -14
- data/vendor/v8/src/mips/codegen-mips.cc +672 -896
- data/vendor/v8/src/mips/codegen-mips.h +271 -69
- data/vendor/v8/src/mips/constants-mips.cc +44 -20
- data/vendor/v8/src/mips/constants-mips.h +238 -40
- data/vendor/v8/src/mips/cpu-mips.cc +20 -3
- data/vendor/v8/src/mips/debug-mips.cc +35 -7
- data/vendor/v8/src/mips/deoptimizer-mips.cc +91 -0
- data/vendor/v8/src/mips/disasm-mips.cc +329 -93
- data/vendor/v8/src/mips/frames-mips.cc +2 -50
- data/vendor/v8/src/mips/frames-mips.h +24 -9
- data/vendor/v8/src/mips/full-codegen-mips.cc +473 -23
- data/vendor/v8/src/mips/ic-mips.cc +81 -45
- data/vendor/v8/src/mips/jump-target-mips.cc +11 -106
- data/vendor/v8/src/mips/lithium-codegen-mips.h +65 -0
- data/vendor/v8/src/mips/lithium-mips.h +304 -0
- data/vendor/v8/src/mips/macro-assembler-mips.cc +2391 -390
- data/vendor/v8/src/mips/macro-assembler-mips.h +718 -121
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +478 -0
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +250 -0
- data/vendor/v8/src/mips/register-allocator-mips-inl.h +0 -3
- data/vendor/v8/src/mips/register-allocator-mips.h +3 -2
- data/vendor/v8/src/mips/simulator-mips.cc +1009 -221
- data/vendor/v8/src/mips/simulator-mips.h +119 -36
- data/vendor/v8/src/mips/stub-cache-mips.cc +331 -148
- data/vendor/v8/src/mips/{fast-codegen-mips.cc → virtual-frame-mips-inl.h} +11 -30
- data/vendor/v8/src/mips/virtual-frame-mips.cc +137 -149
- data/vendor/v8/src/mips/virtual-frame-mips.h +294 -312
- data/vendor/v8/src/mirror-debugger.js +9 -8
- data/vendor/v8/src/mksnapshot.cc +2 -2
- data/vendor/v8/src/objects-debug.cc +16 -16
- data/vendor/v8/src/objects-inl.h +421 -195
- data/vendor/v8/src/objects-printer.cc +7 -7
- data/vendor/v8/src/objects-visiting.cc +1 -1
- data/vendor/v8/src/objects-visiting.h +33 -12
- data/vendor/v8/src/objects.cc +935 -658
- data/vendor/v8/src/objects.h +234 -139
- data/vendor/v8/src/parser.cc +484 -439
- data/vendor/v8/src/parser.h +35 -14
- data/vendor/v8/src/platform-cygwin.cc +173 -107
- data/vendor/v8/src/platform-freebsd.cc +224 -72
- data/vendor/v8/src/platform-linux.cc +234 -95
- data/vendor/v8/src/platform-macos.cc +215 -82
- data/vendor/v8/src/platform-nullos.cc +9 -3
- data/vendor/v8/src/platform-openbsd.cc +22 -7
- data/vendor/v8/src/platform-posix.cc +30 -5
- data/vendor/v8/src/platform-solaris.cc +120 -38
- data/vendor/v8/src/platform-tls-mac.h +62 -0
- data/vendor/v8/src/platform-tls-win32.h +62 -0
- data/vendor/v8/src/platform-tls.h +50 -0
- data/vendor/v8/src/platform-win32.cc +195 -97
- data/vendor/v8/src/platform.h +72 -15
- data/vendor/v8/src/preparse-data.cc +2 -0
- data/vendor/v8/src/preparser-api.cc +8 -2
- data/vendor/v8/src/preparser.cc +1 -1
- data/vendor/v8/src/prettyprinter.cc +43 -52
- data/vendor/v8/src/prettyprinter.h +1 -1
- data/vendor/v8/src/profile-generator-inl.h +0 -28
- data/vendor/v8/src/profile-generator.cc +942 -685
- data/vendor/v8/src/profile-generator.h +210 -176
- data/vendor/v8/src/property.cc +6 -0
- data/vendor/v8/src/property.h +14 -3
- data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +1 -1
- data/vendor/v8/src/regexp-macro-assembler.cc +28 -19
- data/vendor/v8/src/regexp-macro-assembler.h +11 -6
- data/vendor/v8/src/regexp-stack.cc +18 -10
- data/vendor/v8/src/regexp-stack.h +45 -21
- data/vendor/v8/src/regexp.js +3 -3
- data/vendor/v8/src/register-allocator-inl.h +3 -3
- data/vendor/v8/src/register-allocator.cc +1 -7
- data/vendor/v8/src/register-allocator.h +5 -15
- data/vendor/v8/src/rewriter.cc +2 -1
- data/vendor/v8/src/runtime-profiler.cc +158 -128
- data/vendor/v8/src/runtime-profiler.h +131 -15
- data/vendor/v8/src/runtime.cc +2409 -1692
- data/vendor/v8/src/runtime.h +93 -17
- data/vendor/v8/src/safepoint-table.cc +3 -0
- data/vendor/v8/src/safepoint-table.h +9 -3
- data/vendor/v8/src/scanner-base.cc +21 -28
- data/vendor/v8/src/scanner-base.h +22 -11
- data/vendor/v8/src/scanner.cc +3 -5
- data/vendor/v8/src/scanner.h +4 -2
- data/vendor/v8/src/scopeinfo.cc +11 -16
- data/vendor/v8/src/scopeinfo.h +26 -15
- data/vendor/v8/src/scopes.cc +67 -37
- data/vendor/v8/src/scopes.h +26 -12
- data/vendor/v8/src/serialize.cc +193 -154
- data/vendor/v8/src/serialize.h +41 -36
- data/vendor/v8/src/small-pointer-list.h +163 -0
- data/vendor/v8/src/snapshot-common.cc +1 -1
- data/vendor/v8/src/snapshot.h +3 -1
- data/vendor/v8/src/spaces-inl.h +30 -25
- data/vendor/v8/src/spaces.cc +263 -370
- data/vendor/v8/src/spaces.h +178 -166
- data/vendor/v8/src/string-search.cc +4 -3
- data/vendor/v8/src/string-search.h +21 -20
- data/vendor/v8/src/string-stream.cc +32 -24
- data/vendor/v8/src/string.js +7 -7
- data/vendor/v8/src/stub-cache.cc +324 -248
- data/vendor/v8/src/stub-cache.h +181 -155
- data/vendor/v8/src/token.cc +3 -3
- data/vendor/v8/src/token.h +3 -3
- data/vendor/v8/src/top.cc +218 -390
- data/vendor/v8/src/type-info.cc +98 -32
- data/vendor/v8/src/type-info.h +10 -3
- data/vendor/v8/src/unicode.cc +1 -1
- data/vendor/v8/src/unicode.h +1 -1
- data/vendor/v8/src/utils.h +3 -0
- data/vendor/v8/src/v8-counters.cc +18 -11
- data/vendor/v8/src/v8-counters.h +34 -13
- data/vendor/v8/src/v8.cc +66 -121
- data/vendor/v8/src/v8.h +7 -4
- data/vendor/v8/src/v8globals.h +18 -12
- data/vendor/v8/src/{memory.h → v8memory.h} +0 -0
- data/vendor/v8/src/v8natives.js +59 -18
- data/vendor/v8/src/v8threads.cc +127 -114
- data/vendor/v8/src/v8threads.h +42 -35
- data/vendor/v8/src/v8utils.h +2 -39
- data/vendor/v8/src/variables.h +1 -1
- data/vendor/v8/src/version.cc +26 -5
- data/vendor/v8/src/version.h +4 -0
- data/vendor/v8/src/virtual-frame-heavy-inl.h +2 -4
- data/vendor/v8/src/virtual-frame-light-inl.h +5 -4
- data/vendor/v8/src/vm-state-inl.h +21 -17
- data/vendor/v8/src/vm-state.h +7 -5
- data/vendor/v8/src/win32-headers.h +1 -0
- data/vendor/v8/src/x64/assembler-x64-inl.h +12 -11
- data/vendor/v8/src/x64/assembler-x64.cc +80 -40
- data/vendor/v8/src/x64/assembler-x64.h +67 -17
- data/vendor/v8/src/x64/builtins-x64.cc +34 -33
- data/vendor/v8/src/x64/code-stubs-x64.cc +636 -377
- data/vendor/v8/src/x64/code-stubs-x64.h +14 -48
- data/vendor/v8/src/x64/codegen-x64-inl.h +1 -1
- data/vendor/v8/src/x64/codegen-x64.cc +158 -136
- data/vendor/v8/src/x64/codegen-x64.h +4 -1
- data/vendor/v8/src/x64/cpu-x64.cc +7 -5
- data/vendor/v8/src/x64/debug-x64.cc +8 -6
- data/vendor/v8/src/x64/deoptimizer-x64.cc +195 -20
- data/vendor/v8/src/x64/disasm-x64.cc +42 -23
- data/vendor/v8/src/x64/frames-x64.cc +1 -1
- data/vendor/v8/src/x64/frames-x64.h +2 -2
- data/vendor/v8/src/x64/full-codegen-x64.cc +780 -218
- data/vendor/v8/src/x64/ic-x64.cc +77 -79
- data/vendor/v8/src/x64/jump-target-x64.cc +1 -1
- data/vendor/v8/src/x64/lithium-codegen-x64.cc +698 -181
- data/vendor/v8/src/x64/lithium-codegen-x64.h +31 -6
- data/vendor/v8/src/x64/lithium-x64.cc +136 -54
- data/vendor/v8/src/x64/lithium-x64.h +142 -51
- data/vendor/v8/src/x64/macro-assembler-x64.cc +456 -187
- data/vendor/v8/src/x64/macro-assembler-x64.h +166 -34
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +44 -28
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +8 -4
- data/vendor/v8/src/x64/register-allocator-x64-inl.h +3 -3
- data/vendor/v8/src/x64/register-allocator-x64.cc +12 -8
- data/vendor/v8/src/x64/simulator-x64.h +5 -5
- data/vendor/v8/src/x64/stub-cache-x64.cc +299 -344
- data/vendor/v8/src/x64/virtual-frame-x64.cc +37 -13
- data/vendor/v8/src/x64/virtual-frame-x64.h +13 -7
- data/vendor/v8/src/zone-inl.h +49 -3
- data/vendor/v8/src/zone.cc +42 -41
- data/vendor/v8/src/zone.h +37 -34
- data/vendor/v8/test/benchmarks/testcfg.py +100 -0
- data/vendor/v8/test/cctest/SConscript +5 -4
- data/vendor/v8/test/cctest/cctest.h +3 -2
- data/vendor/v8/test/cctest/cctest.status +6 -11
- data/vendor/v8/test/cctest/test-accessors.cc +3 -3
- data/vendor/v8/test/cctest/test-alloc.cc +39 -33
- data/vendor/v8/test/cctest/test-api.cc +1092 -205
- data/vendor/v8/test/cctest/test-assembler-arm.cc +39 -25
- data/vendor/v8/test/cctest/test-assembler-ia32.cc +36 -37
- data/vendor/v8/test/cctest/test-assembler-mips.cc +1098 -40
- data/vendor/v8/test/cctest/test-assembler-x64.cc +32 -25
- data/vendor/v8/test/cctest/test-ast.cc +1 -0
- data/vendor/v8/test/cctest/test-circular-queue.cc +8 -5
- data/vendor/v8/test/cctest/test-compiler.cc +24 -24
- data/vendor/v8/test/cctest/test-cpu-profiler.cc +140 -5
- data/vendor/v8/test/cctest/test-dataflow.cc +1 -0
- data/vendor/v8/test/cctest/test-debug.cc +136 -77
- data/vendor/v8/test/cctest/test-decls.cc +1 -1
- data/vendor/v8/test/cctest/test-deoptimization.cc +25 -24
- data/vendor/v8/test/cctest/test-disasm-arm.cc +9 -4
- data/vendor/v8/test/cctest/test-disasm-ia32.cc +10 -8
- data/vendor/v8/test/cctest/test-func-name-inference.cc +10 -4
- data/vendor/v8/test/cctest/test-heap-profiler.cc +226 -164
- data/vendor/v8/test/cctest/test-heap.cc +240 -217
- data/vendor/v8/test/cctest/test-liveedit.cc +1 -0
- data/vendor/v8/test/cctest/test-log-stack-tracer.cc +18 -20
- data/vendor/v8/test/cctest/test-log.cc +114 -108
- data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +247 -177
- data/vendor/v8/test/cctest/test-mark-compact.cc +129 -90
- data/vendor/v8/test/cctest/test-parsing.cc +15 -14
- data/vendor/v8/test/cctest/test-platform-linux.cc +1 -0
- data/vendor/v8/test/cctest/test-platform-tls.cc +66 -0
- data/vendor/v8/test/cctest/test-platform-win32.cc +1 -0
- data/vendor/v8/test/cctest/test-profile-generator.cc +1 -1
- data/vendor/v8/test/cctest/test-regexp.cc +53 -41
- data/vendor/v8/test/cctest/test-reloc-info.cc +18 -11
- data/vendor/v8/test/cctest/test-serialize.cc +44 -43
- data/vendor/v8/test/cctest/test-sockets.cc +8 -3
- data/vendor/v8/test/cctest/test-spaces.cc +47 -29
- data/vendor/v8/test/cctest/test-strings.cc +20 -20
- data/vendor/v8/test/cctest/test-thread-termination.cc +8 -3
- data/vendor/v8/test/cctest/test-threads.cc +5 -3
- data/vendor/v8/test/cctest/test-utils.cc +5 -4
- data/vendor/v8/test/cctest/testcfg.py +7 -3
- data/vendor/v8/test/es5conform/es5conform.status +2 -77
- data/vendor/v8/test/es5conform/testcfg.py +1 -1
- data/vendor/v8/test/message/testcfg.py +1 -1
- data/vendor/v8/test/mjsunit/accessors-on-global-object.js +3 -3
- data/vendor/v8/test/mjsunit/array-concat.js +43 -1
- data/vendor/v8/test/mjsunit/array-join.js +25 -0
- data/vendor/v8/test/mjsunit/bitops-info.js +7 -1
- data/vendor/v8/test/mjsunit/compiler/array-length.js +2 -2
- data/vendor/v8/test/mjsunit/compiler/global-accessors.js +47 -0
- data/vendor/v8/test/mjsunit/compiler/pic.js +1 -1
- data/vendor/v8/test/mjsunit/compiler/regress-loadfield.js +65 -0
- data/vendor/v8/test/mjsunit/math-sqrt.js +5 -1
- data/vendor/v8/test/mjsunit/mjsunit.js +59 -8
- data/vendor/v8/test/mjsunit/mjsunit.status +0 -12
- data/vendor/v8/test/mjsunit/mul-exhaustive.js +129 -11
- data/vendor/v8/test/mjsunit/negate-zero.js +1 -1
- data/vendor/v8/test/mjsunit/object-freeze.js +5 -13
- data/vendor/v8/test/mjsunit/object-prevent-extensions.js +9 -50
- data/vendor/v8/test/mjsunit/object-seal.js +4 -13
- data/vendor/v8/test/mjsunit/override-eval-with-non-function.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1145.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-1172-bis.js +37 -0
- data/vendor/v8/test/mjsunit/regress/regress-1181.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-1207.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-1209.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-1210.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-1213.js +43 -0
- data/vendor/v8/test/mjsunit/regress/regress-1218.js +29 -0
- data/vendor/v8/test/mjsunit/regress/regress-1229.js +79 -0
- data/vendor/v8/test/mjsunit/regress/regress-1233.js +47 -0
- data/vendor/v8/test/mjsunit/regress/regress-1236.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-1237.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1240.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-1257.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-1278.js +69 -0
- data/vendor/v8/test/mjsunit/regress/regress-create-exception.js +1 -0
- data/vendor/v8/test/mjsunit/regress/regress-lazy-deopt-reloc.js +52 -0
- data/vendor/v8/test/mjsunit/sin-cos.js +15 -10
- data/vendor/v8/test/mjsunit/smi-negative-zero.js +2 -2
- data/vendor/v8/test/mjsunit/str-to-num.js +1 -1
- data/vendor/v8/test/mjsunit/strict-mode.js +435 -0
- data/vendor/v8/test/mjsunit/testcfg.py +23 -6
- data/vendor/v8/test/mozilla/mozilla.status +0 -2
- data/vendor/v8/test/mozilla/testcfg.py +1 -1
- data/vendor/v8/test/preparser/empty.js +28 -0
- data/vendor/v8/test/preparser/functions-only.js +38 -0
- data/vendor/v8/test/preparser/non-alphanum.js +34 -0
- data/vendor/v8/test/preparser/symbols-only.js +49 -0
- data/vendor/v8/test/preparser/testcfg.py +90 -0
- data/vendor/v8/test/sputnik/testcfg.py +1 -1
- data/vendor/v8/test/test262/README +16 -0
- data/vendor/v8/test/test262/harness-adapt.js +80 -0
- data/vendor/v8/test/test262/test262.status +1506 -0
- data/vendor/v8/test/test262/testcfg.py +123 -0
- data/vendor/v8/tools/freebsd-tick-processor +10 -0
- data/vendor/v8/tools/gyp/v8.gyp +8 -33
- data/vendor/v8/tools/linux-tick-processor +5 -3
- data/vendor/v8/tools/test.py +37 -14
- data/vendor/v8/tools/tickprocessor.js +22 -8
- data/vendor/v8/tools/visual_studio/v8_base.vcproj +13 -1
- data/vendor/v8/tools/visual_studio/v8_base_arm.vcproj +5 -1
- data/vendor/v8/tools/visual_studio/v8_base_x64.vcproj +5 -1
- data/vendor/v8/tools/visual_studio/x64.vsprops +1 -0
- metadata +1495 -1341
- data/ext/extconf.rb +0 -22
- data/ext/mustang.cpp +0 -58
- data/vendor/v8/src/top.h +0 -608
data/vendor/v8/src/runtime.h
CHANGED
@@ -28,6 +28,8 @@
|
|
28
28
|
#ifndef V8_RUNTIME_H_
|
29
29
|
#define V8_RUNTIME_H_
|
30
30
|
|
31
|
+
#include "zone.h"
|
32
|
+
|
31
33
|
namespace v8 {
|
32
34
|
namespace internal {
|
33
35
|
|
@@ -241,7 +243,7 @@ namespace internal {
|
|
241
243
|
F(ResolvePossiblyDirectEval, 4, 2) \
|
242
244
|
F(ResolvePossiblyDirectEvalNoLookup, 4, 2) \
|
243
245
|
\
|
244
|
-
F(SetProperty, -1 /*
|
246
|
+
F(SetProperty, -1 /* 4 or 5 */, 1) \
|
245
247
|
F(DefineOrRedefineDataProperty, 4, 1) \
|
246
248
|
F(DefineOrRedefineAccessorProperty, 5, 1) \
|
247
249
|
F(IgnoreAttributesAndSetProperty, -1 /* 3 or 4 */, 1) \
|
@@ -288,12 +290,12 @@ namespace internal {
|
|
288
290
|
F(DeleteContextSlot, 2, 1) \
|
289
291
|
F(LoadContextSlot, 2, 2) \
|
290
292
|
F(LoadContextSlotNoReferenceError, 2, 2) \
|
291
|
-
F(StoreContextSlot,
|
293
|
+
F(StoreContextSlot, 4, 1) \
|
292
294
|
\
|
293
295
|
/* Declarations and initialization */ \
|
294
|
-
F(DeclareGlobals,
|
296
|
+
F(DeclareGlobals, 4, 1) \
|
295
297
|
F(DeclareContextSlot, 4, 1) \
|
296
|
-
F(InitializeVarGlobal, -1 /*
|
298
|
+
F(InitializeVarGlobal, -1 /* 2 or 3 */, 1) \
|
297
299
|
F(InitializeConstGlobal, 2, 1) \
|
298
300
|
F(InitializeConstContextSlot, 3, 1) \
|
299
301
|
F(OptimizeObjectForAddingMultipleProperties, 2, 1) \
|
@@ -376,7 +378,21 @@ namespace internal {
|
|
376
378
|
\
|
377
379
|
F(SetFlags, 1, 1) \
|
378
380
|
F(CollectGarbage, 1, 1) \
|
379
|
-
F(GetHeapUsage, 0, 1)
|
381
|
+
F(GetHeapUsage, 0, 1) \
|
382
|
+
\
|
383
|
+
/* LiveObjectList support*/ \
|
384
|
+
F(HasLOLEnabled, 0, 1) \
|
385
|
+
F(CaptureLOL, 0, 1) \
|
386
|
+
F(DeleteLOL, 1, 1) \
|
387
|
+
F(DumpLOL, 5, 1) \
|
388
|
+
F(GetLOLObj, 1, 1) \
|
389
|
+
F(GetLOLObjId, 1, 1) \
|
390
|
+
F(GetLOLObjRetainers, 6, 1) \
|
391
|
+
F(GetLOLPath, 3, 1) \
|
392
|
+
F(InfoLOL, 2, 1) \
|
393
|
+
F(PrintLOLObj, 1, 1) \
|
394
|
+
F(ResetLOL, 0, 1) \
|
395
|
+
F(SummarizeLOL, 3, 1)
|
380
396
|
|
381
397
|
#else
|
382
398
|
#define RUNTIME_FUNCTION_LIST_DEBUGGER_SUPPORT(F)
|
@@ -398,7 +414,6 @@ namespace internal {
|
|
398
414
|
#define RUNTIME_FUNCTION_LIST_DEBUG(F)
|
399
415
|
#endif
|
400
416
|
|
401
|
-
|
402
417
|
// ----------------------------------------------------------------------------
|
403
418
|
// RUNTIME_FUNCTION_LIST defines all runtime functions accessed
|
404
419
|
// either directly by id (via the code generator), or indirectly
|
@@ -468,6 +483,57 @@ namespace internal {
|
|
468
483
|
//---------------------------------------------------------------------------
|
469
484
|
// Runtime provides access to all C++ runtime functions.
|
470
485
|
|
486
|
+
class RuntimeState {
|
487
|
+
public:
|
488
|
+
|
489
|
+
StaticResource<StringInputBuffer>* string_input_buffer() {
|
490
|
+
return &string_input_buffer_;
|
491
|
+
}
|
492
|
+
unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() {
|
493
|
+
return &to_upper_mapping_;
|
494
|
+
}
|
495
|
+
unibrow::Mapping<unibrow::ToLowercase, 128>* to_lower_mapping() {
|
496
|
+
return &to_lower_mapping_;
|
497
|
+
}
|
498
|
+
StringInputBuffer* string_input_buffer_compare_bufx() {
|
499
|
+
return &string_input_buffer_compare_bufx_;
|
500
|
+
}
|
501
|
+
StringInputBuffer* string_input_buffer_compare_bufy() {
|
502
|
+
return &string_input_buffer_compare_bufy_;
|
503
|
+
}
|
504
|
+
StringInputBuffer* string_locale_compare_buf1() {
|
505
|
+
return &string_locale_compare_buf1_;
|
506
|
+
}
|
507
|
+
StringInputBuffer* string_locale_compare_buf2() {
|
508
|
+
return &string_locale_compare_buf2_;
|
509
|
+
}
|
510
|
+
int* smi_lexicographic_compare_x_elms() {
|
511
|
+
return smi_lexicographic_compare_x_elms_;
|
512
|
+
}
|
513
|
+
int* smi_lexicographic_compare_y_elms() {
|
514
|
+
return smi_lexicographic_compare_y_elms_;
|
515
|
+
}
|
516
|
+
|
517
|
+
private:
|
518
|
+
RuntimeState() {}
|
519
|
+
// Non-reentrant string buffer for efficient general use in the runtime.
|
520
|
+
StaticResource<StringInputBuffer> string_input_buffer_;
|
521
|
+
unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_;
|
522
|
+
unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_;
|
523
|
+
StringInputBuffer string_input_buffer_compare_bufx_;
|
524
|
+
StringInputBuffer string_input_buffer_compare_bufy_;
|
525
|
+
StringInputBuffer string_locale_compare_buf1_;
|
526
|
+
StringInputBuffer string_locale_compare_buf2_;
|
527
|
+
int smi_lexicographic_compare_x_elms_[10];
|
528
|
+
int smi_lexicographic_compare_y_elms_[10];
|
529
|
+
|
530
|
+
friend class Isolate;
|
531
|
+
friend class Runtime;
|
532
|
+
|
533
|
+
DISALLOW_COPY_AND_ASSIGN(RuntimeState);
|
534
|
+
};
|
535
|
+
|
536
|
+
|
471
537
|
class Runtime : public AllStatic {
|
472
538
|
public:
|
473
539
|
enum FunctionId {
|
@@ -511,57 +577,67 @@ class Runtime : public AllStatic {
|
|
511
577
|
// retried with a new, empty StringDictionary, not with the same one.
|
512
578
|
// Alternatively, heap initialization can be completely restarted.
|
513
579
|
MUST_USE_RESULT static MaybeObject* InitializeIntrinsicFunctionNames(
|
514
|
-
Object* dictionary);
|
580
|
+
Heap* heap, Object* dictionary);
|
515
581
|
|
516
582
|
// Get the intrinsic function with the given name, which must be a symbol.
|
517
|
-
static Function* FunctionForSymbol(Handle<String> name);
|
583
|
+
static const Function* FunctionForSymbol(Handle<String> name);
|
518
584
|
|
519
585
|
// Get the intrinsic function with the given FunctionId.
|
520
|
-
static Function* FunctionForId(FunctionId id);
|
586
|
+
static const Function* FunctionForId(FunctionId id);
|
521
587
|
|
522
588
|
// General-purpose helper functions for runtime system.
|
523
|
-
static int StringMatch(
|
589
|
+
static int StringMatch(Isolate* isolate,
|
590
|
+
Handle<String> sub,
|
591
|
+
Handle<String> pat,
|
592
|
+
int index);
|
524
593
|
|
525
|
-
static bool IsUpperCaseChar(uint16_t ch);
|
594
|
+
static bool IsUpperCaseChar(RuntimeState* runtime_state, uint16_t ch);
|
526
595
|
|
527
596
|
// TODO(1240886): The following three methods are *not* handle safe,
|
528
597
|
// but accept handle arguments. This seems fragile.
|
529
598
|
|
530
599
|
// Support getting the characters in a string using [] notation as
|
531
600
|
// in Firefox/SpiderMonkey, Safari and Opera.
|
532
|
-
MUST_USE_RESULT static MaybeObject* GetElementOrCharAt(
|
601
|
+
MUST_USE_RESULT static MaybeObject* GetElementOrCharAt(Isolate* isolate,
|
602
|
+
Handle<Object> object,
|
533
603
|
uint32_t index);
|
534
604
|
MUST_USE_RESULT static MaybeObject* GetElement(Handle<Object> object,
|
535
605
|
uint32_t index);
|
536
606
|
|
537
607
|
MUST_USE_RESULT static MaybeObject* SetObjectProperty(
|
608
|
+
Isolate* isolate,
|
538
609
|
Handle<Object> object,
|
539
610
|
Handle<Object> key,
|
540
611
|
Handle<Object> value,
|
541
|
-
PropertyAttributes attr
|
612
|
+
PropertyAttributes attr,
|
613
|
+
StrictModeFlag strict_mode);
|
542
614
|
|
543
615
|
MUST_USE_RESULT static MaybeObject* ForceSetObjectProperty(
|
616
|
+
Isolate* isolate,
|
544
617
|
Handle<JSObject> object,
|
545
618
|
Handle<Object> key,
|
546
619
|
Handle<Object> value,
|
547
620
|
PropertyAttributes attr);
|
548
621
|
|
549
622
|
MUST_USE_RESULT static MaybeObject* ForceDeleteObjectProperty(
|
623
|
+
Isolate* isolate,
|
550
624
|
Handle<JSObject> object,
|
551
625
|
Handle<Object> key);
|
552
626
|
|
553
|
-
MUST_USE_RESULT static MaybeObject* GetObjectProperty(
|
554
|
-
|
627
|
+
MUST_USE_RESULT static MaybeObject* GetObjectProperty(
|
628
|
+
Isolate* isolate,
|
629
|
+
Handle<Object> object,
|
630
|
+
Handle<Object> key);
|
555
631
|
|
556
632
|
// This function is used in FunctionNameUsing* tests.
|
557
|
-
static Object* FindSharedFunctionInfoInScript(
|
633
|
+
static Object* FindSharedFunctionInfoInScript(Isolate* isolate,
|
634
|
+
Handle<Script> script,
|
558
635
|
int position);
|
559
636
|
|
560
637
|
// Helper functions used stubs.
|
561
638
|
static void PerformGC(Object* result);
|
562
639
|
};
|
563
640
|
|
564
|
-
|
565
641
|
} } // namespace v8::internal
|
566
642
|
|
567
643
|
#endif // V8_RUNTIME_H_
|
@@ -25,11 +25,14 @@
|
|
25
25
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
27
|
|
28
|
+
#include "v8.h"
|
29
|
+
|
28
30
|
#include "safepoint-table.h"
|
29
31
|
|
30
32
|
#include "deoptimizer.h"
|
31
33
|
#include "disasm.h"
|
32
34
|
#include "macro-assembler.h"
|
35
|
+
#include "zone-inl.h"
|
33
36
|
|
34
37
|
namespace v8 {
|
35
38
|
namespace internal {
|
@@ -28,11 +28,9 @@
|
|
28
28
|
#ifndef V8_SAFEPOINT_TABLE_H_
|
29
29
|
#define V8_SAFEPOINT_TABLE_H_
|
30
30
|
|
31
|
-
#include "v8.h"
|
32
|
-
|
33
31
|
#include "heap.h"
|
32
|
+
#include "v8memory.h"
|
34
33
|
#include "zone.h"
|
35
|
-
#include "zone-inl.h"
|
36
34
|
|
37
35
|
namespace v8 {
|
38
36
|
namespace internal {
|
@@ -228,6 +226,14 @@ class SafepointTableBuilder BASE_EMBEDDED {
|
|
228
226
|
deoptimization_info_[index].pc_after_gap = pc;
|
229
227
|
}
|
230
228
|
|
229
|
+
// Get the end pc offset of the last safepoint, including the code generated
|
230
|
+
// until the end of the gap following it.
|
231
|
+
unsigned GetPcAfterGap() {
|
232
|
+
int index = deoptimization_info_.length();
|
233
|
+
if (index == 0) return 0;
|
234
|
+
return deoptimization_info_[index - 1].pc_after_gap;
|
235
|
+
}
|
236
|
+
|
231
237
|
// Emit the safepoint table after the body. The number of bits per
|
232
238
|
// entry must be enough to hold all the pointer indexes.
|
233
239
|
void Emit(Assembler* assembler, int bits_per_entry);
|
@@ -35,16 +35,6 @@ namespace v8 {
|
|
35
35
|
namespace internal {
|
36
36
|
|
37
37
|
// ----------------------------------------------------------------------------
|
38
|
-
// Character predicates
|
39
|
-
|
40
|
-
unibrow::Predicate<IdentifierStart, 128> ScannerConstants::kIsIdentifierStart;
|
41
|
-
unibrow::Predicate<IdentifierPart, 128> ScannerConstants::kIsIdentifierPart;
|
42
|
-
unibrow::Predicate<unibrow::WhiteSpace, 128> ScannerConstants::kIsWhiteSpace;
|
43
|
-
unibrow::Predicate<unibrow::LineTerminator, 128>
|
44
|
-
ScannerConstants::kIsLineTerminator;
|
45
|
-
|
46
|
-
StaticResource<ScannerConstants::Utf8Decoder> ScannerConstants::utf8_decoder_;
|
47
|
-
|
48
38
|
// Compound predicates.
|
49
39
|
|
50
40
|
bool ScannerConstants::IsIdentifier(unibrow::CharacterStream* buffer) {
|
@@ -64,8 +54,10 @@ bool ScannerConstants::IsIdentifier(unibrow::CharacterStream* buffer) {
|
|
64
54
|
// ----------------------------------------------------------------------------
|
65
55
|
// Scanner
|
66
56
|
|
67
|
-
Scanner::Scanner()
|
68
|
-
|
57
|
+
Scanner::Scanner(ScannerConstants* scanner_constants)
|
58
|
+
: scanner_constants_(scanner_constants),
|
59
|
+
octal_pos_(kNoOctalLocation) {
|
60
|
+
}
|
69
61
|
|
70
62
|
|
71
63
|
uc32 Scanner::ScanHexEscape(uc32 c, int length) {
|
@@ -122,7 +114,8 @@ uc32 Scanner::ScanOctalEscape(uc32 c, int length) {
|
|
122
114
|
// ----------------------------------------------------------------------------
|
123
115
|
// JavaScriptScanner
|
124
116
|
|
125
|
-
JavaScriptScanner::JavaScriptScanner(
|
117
|
+
JavaScriptScanner::JavaScriptScanner(ScannerConstants* scanner_contants)
|
118
|
+
: Scanner(scanner_contants) { }
|
126
119
|
|
127
120
|
|
128
121
|
Token::Value JavaScriptScanner::Next() {
|
@@ -151,9 +144,9 @@ bool JavaScriptScanner::SkipWhiteSpace() {
|
|
151
144
|
while (true) {
|
152
145
|
// We treat byte-order marks (BOMs) as whitespace for better
|
153
146
|
// compatibility with Spidermonkey and other JavaScript engines.
|
154
|
-
while (
|
147
|
+
while (scanner_constants_->IsWhiteSpace(c0_) || IsByteOrderMark(c0_)) {
|
155
148
|
// IsWhiteSpace() includes line terminators!
|
156
|
-
if (
|
149
|
+
if (scanner_constants_->IsLineTerminator(c0_)) {
|
157
150
|
// Ignore line terminators, but remember them. This is necessary
|
158
151
|
// for automatic semicolon insertion.
|
159
152
|
has_line_terminator_before_next_ = true;
|
@@ -193,7 +186,7 @@ Token::Value JavaScriptScanner::SkipSingleLineComment() {
|
|
193
186
|
// separately by the lexical grammar and becomes part of the
|
194
187
|
// stream of input elements for the syntactic grammar (see
|
195
188
|
// ECMA-262, section 7.4, page 12).
|
196
|
-
while (c0_ >= 0 && !
|
189
|
+
while (c0_ >= 0 && !scanner_constants_->IsLineTerminator(c0_)) {
|
197
190
|
Advance();
|
198
191
|
}
|
199
192
|
|
@@ -458,7 +451,7 @@ void JavaScriptScanner::Scan() {
|
|
458
451
|
break;
|
459
452
|
|
460
453
|
default:
|
461
|
-
if (
|
454
|
+
if (scanner_constants_->IsIdentifierStart(c0_)) {
|
462
455
|
token = ScanIdentifierOrKeyword();
|
463
456
|
} else if (IsDecimalDigit(c0_)) {
|
464
457
|
token = ScanNumber(false);
|
@@ -506,7 +499,7 @@ void JavaScriptScanner::ScanEscape() {
|
|
506
499
|
Advance();
|
507
500
|
|
508
501
|
// Skip escaped newlines.
|
509
|
-
if (
|
502
|
+
if (scanner_constants_->IsLineTerminator(c)) {
|
510
503
|
// Allow CR+LF newlines in multiline string literals.
|
511
504
|
if (IsCarriageReturn(c) && IsLineFeed(c0_)) Advance();
|
512
505
|
// Allow LF+CR newlines in multiline string literals.
|
@@ -549,7 +542,7 @@ Token::Value JavaScriptScanner::ScanString() {
|
|
549
542
|
|
550
543
|
LiteralScope literal(this);
|
551
544
|
while (c0_ != quote && c0_ >= 0
|
552
|
-
&& !
|
545
|
+
&& !scanner_constants_->IsLineTerminator(c0_)) {
|
553
546
|
uc32 c = c0_;
|
554
547
|
Advance();
|
555
548
|
if (c == '\\') {
|
@@ -648,7 +641,7 @@ Token::Value JavaScriptScanner::ScanNumber(bool seen_period) {
|
|
648
641
|
// not be an identifier start or a decimal digit; see ECMA-262
|
649
642
|
// section 7.8.3, page 17 (note that we read only one decimal digit
|
650
643
|
// if the value is 0).
|
651
|
-
if (IsDecimalDigit(c0_) ||
|
644
|
+
if (IsDecimalDigit(c0_) || scanner_constants_->IsIdentifierStart(c0_))
|
652
645
|
return Token::ILLEGAL;
|
653
646
|
|
654
647
|
literal.Complete();
|
@@ -670,14 +663,14 @@ uc32 JavaScriptScanner::ScanIdentifierUnicodeEscape() {
|
|
670
663
|
|
671
664
|
|
672
665
|
Token::Value JavaScriptScanner::ScanIdentifierOrKeyword() {
|
673
|
-
ASSERT(
|
666
|
+
ASSERT(scanner_constants_->IsIdentifierStart(c0_));
|
674
667
|
LiteralScope literal(this);
|
675
668
|
KeywordMatcher keyword_match;
|
676
669
|
// Scan identifier start character.
|
677
670
|
if (c0_ == '\\') {
|
678
671
|
uc32 c = ScanIdentifierUnicodeEscape();
|
679
672
|
// Only allow legal identifier start characters.
|
680
|
-
if (!
|
673
|
+
if (!scanner_constants_->IsIdentifierStart(c)) return Token::ILLEGAL;
|
681
674
|
AddLiteralChar(c);
|
682
675
|
return ScanIdentifierSuffix(&literal);
|
683
676
|
}
|
@@ -690,7 +683,7 @@ Token::Value JavaScriptScanner::ScanIdentifierOrKeyword() {
|
|
690
683
|
}
|
691
684
|
|
692
685
|
// Scan the rest of the identifier characters.
|
693
|
-
while (
|
686
|
+
while (scanner_constants_->IsIdentifierPart(c0_)) {
|
694
687
|
if (c0_ != '\\') {
|
695
688
|
uc32 next_char = c0_;
|
696
689
|
Advance();
|
@@ -708,11 +701,11 @@ Token::Value JavaScriptScanner::ScanIdentifierOrKeyword() {
|
|
708
701
|
|
709
702
|
Token::Value JavaScriptScanner::ScanIdentifierSuffix(LiteralScope* literal) {
|
710
703
|
// Scan the rest of the identifier characters.
|
711
|
-
while (
|
704
|
+
while (scanner_constants_->IsIdentifierPart(c0_)) {
|
712
705
|
if (c0_ == '\\') {
|
713
706
|
uc32 c = ScanIdentifierUnicodeEscape();
|
714
707
|
// Only allow legal identifier part characters.
|
715
|
-
if (!
|
708
|
+
if (!scanner_constants_->IsIdentifierPart(c)) return Token::ILLEGAL;
|
716
709
|
AddLiteralChar(c);
|
717
710
|
} else {
|
718
711
|
AddLiteralChar(c0_);
|
@@ -742,10 +735,10 @@ bool JavaScriptScanner::ScanRegExpPattern(bool seen_equal) {
|
|
742
735
|
AddLiteralChar('=');
|
743
736
|
|
744
737
|
while (c0_ != '/' || in_character_class) {
|
745
|
-
if (
|
738
|
+
if (scanner_constants_->IsLineTerminator(c0_) || c0_ < 0) return false;
|
746
739
|
if (c0_ == '\\') { // Escape sequence.
|
747
740
|
AddLiteralCharAdvance();
|
748
|
-
if (
|
741
|
+
if (scanner_constants_->IsLineTerminator(c0_) || c0_ < 0) return false;
|
749
742
|
AddLiteralCharAdvance();
|
750
743
|
// If the escape allows more characters, i.e., \x??, \u????, or \c?,
|
751
744
|
// only "safe" characters are allowed (letters, digits, underscore),
|
@@ -771,7 +764,7 @@ bool JavaScriptScanner::ScanRegExpPattern(bool seen_equal) {
|
|
771
764
|
bool JavaScriptScanner::ScanRegExpFlags() {
|
772
765
|
// Scan regular expression flags.
|
773
766
|
LiteralScope literal(this);
|
774
|
-
while (
|
767
|
+
while (scanner_constants_->IsIdentifierPart(c0_)) {
|
775
768
|
if (c0_ == '\\') {
|
776
769
|
uc32 c = ScanIdentifierUnicodeEscape();
|
777
770
|
if (c != static_cast<uc32>(unibrow::Utf8::kBadChar)) {
|
@@ -119,26 +119,33 @@ class UC16CharacterStream {
|
|
119
119
|
};
|
120
120
|
|
121
121
|
|
122
|
+
class ScannerConstants {
|
122
123
|
// ---------------------------------------------------------------------
|
123
124
|
// Constants used by scanners.
|
124
|
-
|
125
|
-
class ScannerConstants : AllStatic {
|
126
125
|
public:
|
126
|
+
ScannerConstants() {}
|
127
127
|
typedef unibrow::Utf8InputBuffer<1024> Utf8Decoder;
|
128
128
|
|
129
|
-
|
129
|
+
StaticResource<Utf8Decoder>* utf8_decoder() {
|
130
130
|
return &utf8_decoder_;
|
131
131
|
}
|
132
132
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
133
|
+
bool IsIdentifierStart(unibrow::uchar c) { return kIsIdentifierStart.get(c); }
|
134
|
+
bool IsIdentifierPart(unibrow::uchar c) { return kIsIdentifierPart.get(c); }
|
135
|
+
bool IsLineTerminator(unibrow::uchar c) { return kIsLineTerminator.get(c); }
|
136
|
+
bool IsWhiteSpace(unibrow::uchar c) { return kIsWhiteSpace.get(c); }
|
137
137
|
|
138
|
-
|
138
|
+
bool IsIdentifier(unibrow::CharacterStream* buffer);
|
139
139
|
|
140
140
|
private:
|
141
|
-
|
141
|
+
|
142
|
+
unibrow::Predicate<IdentifierStart, 128> kIsIdentifierStart;
|
143
|
+
unibrow::Predicate<IdentifierPart, 128> kIsIdentifierPart;
|
144
|
+
unibrow::Predicate<unibrow::LineTerminator, 128> kIsLineTerminator;
|
145
|
+
unibrow::Predicate<unibrow::WhiteSpace, 128> kIsWhiteSpace;
|
146
|
+
StaticResource<Utf8Decoder> utf8_decoder_;
|
147
|
+
|
148
|
+
DISALLOW_COPY_AND_ASSIGN(ScannerConstants);
|
142
149
|
};
|
143
150
|
|
144
151
|
// ----------------------------------------------------------------------------
|
@@ -238,6 +245,8 @@ class LiteralBuffer {
|
|
238
245
|
bool is_ascii_;
|
239
246
|
int position_;
|
240
247
|
Vector<byte> backing_store_;
|
248
|
+
|
249
|
+
DISALLOW_COPY_AND_ASSIGN(LiteralBuffer);
|
241
250
|
};
|
242
251
|
|
243
252
|
|
@@ -263,7 +272,7 @@ class Scanner {
|
|
263
272
|
bool complete_;
|
264
273
|
};
|
265
274
|
|
266
|
-
Scanner();
|
275
|
+
explicit Scanner(ScannerConstants* scanner_contants);
|
267
276
|
|
268
277
|
// Returns the current token again.
|
269
278
|
Token::Value current_token() { return current_.token; }
|
@@ -418,6 +427,8 @@ class Scanner {
|
|
418
427
|
return source_->pos() - kCharacterLookaheadBufferSize;
|
419
428
|
}
|
420
429
|
|
430
|
+
ScannerConstants* scanner_constants_;
|
431
|
+
|
421
432
|
// Buffers collecting literal strings, numbers, etc.
|
422
433
|
LiteralBuffer literal_buffer1_;
|
423
434
|
LiteralBuffer literal_buffer2_;
|
@@ -462,7 +473,7 @@ class JavaScriptScanner : public Scanner {
|
|
462
473
|
bool complete_;
|
463
474
|
};
|
464
475
|
|
465
|
-
JavaScriptScanner();
|
476
|
+
explicit JavaScriptScanner(ScannerConstants* scanner_contants);
|
466
477
|
|
467
478
|
// Returns the next token.
|
468
479
|
Token::Value Next();
|