mustang 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -37,57 +37,9 @@ namespace v8 {
|
|
37
37
|
namespace internal {
|
38
38
|
|
39
39
|
|
40
|
-
StackFrame::Type StackFrame::ComputeType(State* state) {
|
41
|
-
ASSERT(state->fp != NULL);
|
42
|
-
if (StandardFrame::IsArgumentsAdaptorFrame(state->fp)) {
|
43
|
-
return ARGUMENTS_ADAPTOR;
|
44
|
-
}
|
45
|
-
// The marker and function offsets overlap. If the marker isn't a
|
46
|
-
// smi then the frame is a JavaScript frame -- and the marker is
|
47
|
-
// really the function.
|
48
|
-
const int offset = StandardFrameConstants::kMarkerOffset;
|
49
|
-
Object* marker = Memory::Object_at(state->fp + offset);
|
50
|
-
if (!marker->IsSmi()) return JAVA_SCRIPT;
|
51
|
-
return static_cast<StackFrame::Type>(Smi::cast(marker)->value());
|
52
|
-
}
|
53
|
-
|
54
|
-
|
55
40
|
Address ExitFrame::ComputeStackPointer(Address fp) {
|
56
|
-
Address sp = fp + ExitFrameConstants::kSPDisplacement;
|
57
|
-
const int offset = ExitFrameConstants::kCodeOffset;
|
58
|
-
Object* code = Memory::Object_at(fp + offset);
|
59
|
-
bool is_debug_exit = code->IsSmi();
|
60
|
-
if (is_debug_exit) {
|
61
|
-
sp -= kNumJSCallerSaved * kPointerSize;
|
62
|
-
}
|
63
|
-
return sp;
|
64
|
-
}
|
65
|
-
|
66
|
-
|
67
|
-
void ExitFrame::Iterate(ObjectVisitor* v) const {
|
68
|
-
// Do nothing
|
69
|
-
}
|
70
|
-
|
71
|
-
|
72
|
-
int JavaScriptFrame::GetProvidedParametersCount() const {
|
73
|
-
return ComputeParametersCount();
|
74
|
-
}
|
75
|
-
|
76
|
-
|
77
|
-
Address JavaScriptFrame::GetCallerStackPointer() const {
|
78
41
|
UNIMPLEMENTED_MIPS();
|
79
|
-
return
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
Address ArgumentsAdaptorFrame::GetCallerStackPointer() const {
|
84
|
-
UNIMPLEMENTED_MIPS();
|
85
|
-
return static_cast<Address>(NULL); // UNIMPLEMENTED RETURN
|
86
|
-
}
|
87
|
-
|
88
|
-
|
89
|
-
Address InternalFrame::GetCallerStackPointer() const {
|
90
|
-
return fp() + StandardFrameConstants::kCallerSPOffset;
|
42
|
+
return fp;
|
91
43
|
}
|
92
44
|
|
93
45
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -40,16 +40,17 @@ namespace internal {
|
|
40
40
|
static const int kNumRegs = 32;
|
41
41
|
|
42
42
|
static const RegList kJSCallerSaved =
|
43
|
+
1 << 2 | // v0
|
43
44
|
1 << 4 | // a0
|
44
45
|
1 << 5 | // a1
|
45
46
|
1 << 6 | // a2
|
46
47
|
1 << 7; // a3
|
47
48
|
|
48
|
-
static const int kNumJSCallerSaved =
|
49
|
+
static const int kNumJSCallerSaved = 5;
|
49
50
|
|
50
51
|
|
51
52
|
// Return the code of the n-th caller-saved register available to JavaScript
|
52
|
-
// e.g. JSCallerSavedReg(0) returns
|
53
|
+
// e.g. JSCallerSavedReg(0) returns a0.code() == 4.
|
53
54
|
int JSCallerSavedCode(int n);
|
54
55
|
|
55
56
|
|
@@ -64,6 +65,18 @@ static const RegList kCalleeSaved =
|
|
64
65
|
static const int kNumCalleeSaved = 11;
|
65
66
|
|
66
67
|
|
68
|
+
// Number of registers for which space is reserved in safepoints. Must be a
|
69
|
+
// multiple of 8.
|
70
|
+
// TODO(mips): Only 8 registers may actually be sufficient. Revisit.
|
71
|
+
static const int kNumSafepointRegisters = 16;
|
72
|
+
|
73
|
+
// Define the list of registers actually saved at safepoints.
|
74
|
+
// Note that the number of saved registers may be smaller than the reserved
|
75
|
+
// space, i.e. kNumSafepointSavedRegisters <= kNumSafepointRegisters.
|
76
|
+
static const RegList kSafepointSavedRegisters = kJSCallerSaved | kCalleeSaved;
|
77
|
+
static const int kNumSafepointSavedRegisters =
|
78
|
+
kNumJSCallerSaved + kNumCalleeSaved;
|
79
|
+
|
67
80
|
typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved];
|
68
81
|
|
69
82
|
|
@@ -88,15 +101,14 @@ class EntryFrameConstants : public AllStatic {
|
|
88
101
|
|
89
102
|
class ExitFrameConstants : public AllStatic {
|
90
103
|
public:
|
91
|
-
// Exit frames have a debug marker on the stack.
|
92
|
-
static const int kSPDisplacement = -1 * kPointerSize;
|
93
|
-
|
94
|
-
// The debug marker is just above the frame pointer.
|
95
104
|
static const int kDebugMarkOffset = -1 * kPointerSize;
|
96
105
|
// Must be the same as kDebugMarkOffset. Alias introduced when upgrading.
|
97
106
|
static const int kCodeOffset = -1 * kPointerSize;
|
107
|
+
static const int kSPOffset = -1 * kPointerSize;
|
98
108
|
|
99
|
-
|
109
|
+
// TODO(mips): Use a patched sp value on the stack instead.
|
110
|
+
// A marker of 0 indicates that double registers are saved.
|
111
|
+
static const int kMarkerOffset = -2 * kPointerSize;
|
100
112
|
|
101
113
|
// The caller fields are below the frame pointer on the stack.
|
102
114
|
static const int kCallerFPOffset = +0 * kPointerSize;
|
@@ -126,6 +138,8 @@ class StandardFrameConstants : public AllStatic {
|
|
126
138
|
static const int kCArgsSlotsSize = 4 * kPointerSize;
|
127
139
|
// JS argument slots size.
|
128
140
|
static const int kJSArgsSlotsSize = 0 * kPointerSize;
|
141
|
+
// Assembly builtins argument slots size.
|
142
|
+
static const int kBArgsSlotsSize = 0 * kPointerSize;
|
129
143
|
};
|
130
144
|
|
131
145
|
|
@@ -133,7 +147,7 @@ class JavaScriptFrameConstants : public AllStatic {
|
|
133
147
|
public:
|
134
148
|
// FP-relative.
|
135
149
|
static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset;
|
136
|
-
static const int
|
150
|
+
static const int kLastParameterOffset = +2 * kPointerSize;
|
137
151
|
static const int kFunctionOffset = StandardFrameConstants::kMarkerOffset;
|
138
152
|
|
139
153
|
// Caller SP-relative.
|
@@ -159,6 +173,7 @@ inline Object* JavaScriptFrame::function_slot_object() const {
|
|
159
173
|
return Memory::Object_at(fp() + offset);
|
160
174
|
}
|
161
175
|
|
176
|
+
|
162
177
|
} } // namespace v8::internal
|
163
178
|
|
164
179
|
#endif
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -29,18 +29,55 @@
|
|
29
29
|
|
30
30
|
#if defined(V8_TARGET_ARCH_MIPS)
|
31
31
|
|
32
|
+
// Note on Mips implementation:
|
33
|
+
//
|
34
|
+
// The result_register() for mips is the 'v0' register, which is defined
|
35
|
+
// by the ABI to contain function return values. However, the first
|
36
|
+
// parameter to a function is defined to be 'a0'. So there are many
|
37
|
+
// places where we have to move a previous result in v0 to a0 for the
|
38
|
+
// next call: mov(a0, v0). This is not needed on the other architectures.
|
39
|
+
|
40
|
+
#include "code-stubs.h"
|
32
41
|
#include "codegen-inl.h"
|
33
42
|
#include "compiler.h"
|
34
43
|
#include "debug.h"
|
35
44
|
#include "full-codegen.h"
|
36
45
|
#include "parser.h"
|
46
|
+
#include "scopes.h"
|
47
|
+
#include "stub-cache.h"
|
48
|
+
|
49
|
+
#include "mips/code-stubs-mips.h"
|
37
50
|
|
38
51
|
namespace v8 {
|
39
52
|
namespace internal {
|
40
53
|
|
41
54
|
#define __ ACCESS_MASM(masm_)
|
42
55
|
|
43
|
-
|
56
|
+
// Generate code for a JS function. On entry to the function the receiver
|
57
|
+
// and arguments have been pushed on the stack left to right. The actual
|
58
|
+
// argument count matches the formal parameter count expected by the
|
59
|
+
// function.
|
60
|
+
//
|
61
|
+
// The live registers are:
|
62
|
+
// o a1: the JS function object being called (ie, ourselves)
|
63
|
+
// o cp: our context
|
64
|
+
// o fp: our caller's frame pointer
|
65
|
+
// o sp: stack pointer
|
66
|
+
// o ra: return address
|
67
|
+
//
|
68
|
+
// The function builds a JS frame. Please see JavaScriptFrameConstants in
|
69
|
+
// frames-mips.h for its layout.
|
70
|
+
void FullCodeGenerator::Generate(CompilationInfo* info) {
|
71
|
+
UNIMPLEMENTED_MIPS();
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
void FullCodeGenerator::ClearAccumulator() {
|
76
|
+
UNIMPLEMENTED_MIPS();
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
void FullCodeGenerator::EmitStackCheck(IterationStatement* stmt) {
|
44
81
|
UNIMPLEMENTED_MIPS();
|
45
82
|
}
|
46
83
|
|
@@ -50,47 +87,165 @@ void FullCodeGenerator::EmitReturnSequence() {
|
|
50
87
|
}
|
51
88
|
|
52
89
|
|
53
|
-
void FullCodeGenerator::
|
90
|
+
void FullCodeGenerator::EffectContext::Plug(Slot* slot) const {
|
91
|
+
UNIMPLEMENTED_MIPS();
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
void FullCodeGenerator::AccumulatorValueContext::Plug(Slot* slot) const {
|
96
|
+
UNIMPLEMENTED_MIPS();
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
void FullCodeGenerator::StackValueContext::Plug(Slot* slot) const {
|
101
|
+
UNIMPLEMENTED_MIPS();
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
void FullCodeGenerator::TestContext::Plug(Slot* slot) const {
|
106
|
+
UNIMPLEMENTED_MIPS();
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
void FullCodeGenerator::EffectContext::Plug(Heap::RootListIndex index) const {
|
111
|
+
UNIMPLEMENTED_MIPS();
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
void FullCodeGenerator::AccumulatorValueContext::Plug(
|
116
|
+
Heap::RootListIndex index) const {
|
117
|
+
UNIMPLEMENTED_MIPS();
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
void FullCodeGenerator::StackValueContext::Plug(
|
122
|
+
Heap::RootListIndex index) const {
|
123
|
+
UNIMPLEMENTED_MIPS();
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
void FullCodeGenerator::TestContext::Plug(Heap::RootListIndex index) const {
|
128
|
+
UNIMPLEMENTED_MIPS();
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
void FullCodeGenerator::EffectContext::Plug(Handle<Object> lit) const {
|
133
|
+
UNIMPLEMENTED_MIPS();
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
void FullCodeGenerator::AccumulatorValueContext::Plug(
|
138
|
+
Handle<Object> lit) const {
|
139
|
+
UNIMPLEMENTED_MIPS();
|
140
|
+
}
|
141
|
+
|
142
|
+
|
143
|
+
void FullCodeGenerator::StackValueContext::Plug(Handle<Object> lit) const {
|
144
|
+
UNIMPLEMENTED_MIPS();
|
145
|
+
}
|
146
|
+
|
147
|
+
|
148
|
+
void FullCodeGenerator::TestContext::Plug(Handle<Object> lit) const {
|
149
|
+
UNIMPLEMENTED_MIPS();
|
150
|
+
}
|
151
|
+
|
152
|
+
|
153
|
+
void FullCodeGenerator::EffectContext::DropAndPlug(int count,
|
154
|
+
Register reg) const {
|
155
|
+
UNIMPLEMENTED_MIPS();
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
void FullCodeGenerator::AccumulatorValueContext::DropAndPlug(
|
160
|
+
int count,
|
161
|
+
Register reg) const {
|
162
|
+
UNIMPLEMENTED_MIPS();
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
void FullCodeGenerator::StackValueContext::DropAndPlug(int count,
|
167
|
+
Register reg) const {
|
168
|
+
UNIMPLEMENTED_MIPS();
|
169
|
+
}
|
170
|
+
|
171
|
+
|
172
|
+
void FullCodeGenerator::TestContext::DropAndPlug(int count,
|
173
|
+
Register reg) const {
|
174
|
+
UNIMPLEMENTED_MIPS();
|
175
|
+
}
|
176
|
+
|
177
|
+
|
178
|
+
void FullCodeGenerator::EffectContext::Plug(Label* materialize_true,
|
179
|
+
Label* materialize_false) const {
|
180
|
+
UNIMPLEMENTED_MIPS();
|
181
|
+
}
|
182
|
+
|
183
|
+
|
184
|
+
void FullCodeGenerator::AccumulatorValueContext::Plug(
|
185
|
+
Label* materialize_true,
|
186
|
+
Label* materialize_false) const {
|
54
187
|
UNIMPLEMENTED_MIPS();
|
55
188
|
}
|
56
189
|
|
57
190
|
|
58
|
-
void FullCodeGenerator::
|
191
|
+
void FullCodeGenerator::StackValueContext::Plug(
|
192
|
+
Label* materialize_true,
|
193
|
+
Label* materialize_false) const {
|
59
194
|
UNIMPLEMENTED_MIPS();
|
60
195
|
}
|
61
196
|
|
62
|
-
|
197
|
+
|
198
|
+
void FullCodeGenerator::TestContext::Plug(Label* materialize_true,
|
199
|
+
Label* materialize_false) const {
|
200
|
+
UNIMPLEMENTED_MIPS();
|
201
|
+
}
|
202
|
+
|
203
|
+
|
204
|
+
void FullCodeGenerator::EffectContext::Plug(bool flag) const {
|
63
205
|
UNIMPLEMENTED_MIPS();
|
64
206
|
}
|
65
207
|
|
66
208
|
|
67
|
-
void FullCodeGenerator::
|
209
|
+
void FullCodeGenerator::AccumulatorValueContext::Plug(bool flag) const {
|
68
210
|
UNIMPLEMENTED_MIPS();
|
69
211
|
}
|
70
212
|
|
71
213
|
|
72
|
-
void FullCodeGenerator::
|
73
|
-
Expression::Context context,
|
74
|
-
Register reg) {
|
214
|
+
void FullCodeGenerator::StackValueContext::Plug(bool flag) const {
|
75
215
|
UNIMPLEMENTED_MIPS();
|
76
216
|
}
|
77
217
|
|
78
218
|
|
79
|
-
void FullCodeGenerator::
|
80
|
-
Label* materialize_true,
|
81
|
-
Label* materialize_false) {
|
219
|
+
void FullCodeGenerator::TestContext::Plug(bool flag) const {
|
82
220
|
UNIMPLEMENTED_MIPS();
|
83
221
|
}
|
84
222
|
|
85
223
|
|
86
|
-
void FullCodeGenerator::DoTest(
|
224
|
+
void FullCodeGenerator::DoTest(Label* if_true,
|
225
|
+
Label* if_false,
|
226
|
+
Label* fall_through) {
|
227
|
+
UNIMPLEMENTED_MIPS();
|
228
|
+
}
|
229
|
+
|
230
|
+
|
231
|
+
// Original prototype for mips, needs arch-indep change. Leave out for now.
|
232
|
+
// void FullCodeGenerator::Split(Condition cc,
|
233
|
+
// Register lhs,
|
234
|
+
// const Operand& rhs,
|
235
|
+
// Label* if_true,
|
236
|
+
// Label* if_false,
|
237
|
+
// Label* fall_through) {
|
238
|
+
void FullCodeGenerator::Split(Condition cc,
|
239
|
+
Label* if_true,
|
240
|
+
Label* if_false,
|
241
|
+
Label* fall_through) {
|
87
242
|
UNIMPLEMENTED_MIPS();
|
88
243
|
}
|
89
244
|
|
90
245
|
|
91
246
|
MemOperand FullCodeGenerator::EmitSlotSearch(Slot* slot, Register scratch) {
|
92
247
|
UNIMPLEMENTED_MIPS();
|
93
|
-
return MemOperand(zero_reg, 0);
|
248
|
+
return MemOperand(zero_reg, 0);
|
94
249
|
}
|
95
250
|
|
96
251
|
|
@@ -99,6 +254,14 @@ void FullCodeGenerator::Move(Register destination, Slot* source) {
|
|
99
254
|
}
|
100
255
|
|
101
256
|
|
257
|
+
void FullCodeGenerator::PrepareForBailoutBeforeSplit(State state,
|
258
|
+
bool should_normalize,
|
259
|
+
Label* if_true,
|
260
|
+
Label* if_false) {
|
261
|
+
UNIMPLEMENTED_MIPS();
|
262
|
+
}
|
263
|
+
|
264
|
+
|
102
265
|
void FullCodeGenerator::Move(Slot* dst,
|
103
266
|
Register src,
|
104
267
|
Register scratch1,
|
@@ -107,6 +270,13 @@ void FullCodeGenerator::Move(Slot* dst,
|
|
107
270
|
}
|
108
271
|
|
109
272
|
|
273
|
+
void FullCodeGenerator::EmitDeclaration(Variable* variable,
|
274
|
+
Variable::Mode mode,
|
275
|
+
FunctionLiteral* function) {
|
276
|
+
UNIMPLEMENTED_MIPS();
|
277
|
+
}
|
278
|
+
|
279
|
+
|
110
280
|
void FullCodeGenerator::VisitDeclaration(Declaration* decl) {
|
111
281
|
UNIMPLEMENTED_MIPS();
|
112
282
|
}
|
@@ -117,7 +287,18 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|
117
287
|
}
|
118
288
|
|
119
289
|
|
120
|
-
void FullCodeGenerator::
|
290
|
+
void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) {
|
291
|
+
UNIMPLEMENTED_MIPS();
|
292
|
+
}
|
293
|
+
|
294
|
+
|
295
|
+
void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
296
|
+
UNIMPLEMENTED_MIPS();
|
297
|
+
}
|
298
|
+
|
299
|
+
|
300
|
+
void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
301
|
+
bool pretenure) {
|
121
302
|
UNIMPLEMENTED_MIPS();
|
122
303
|
}
|
123
304
|
|
@@ -127,8 +308,32 @@ void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) {
|
|
127
308
|
}
|
128
309
|
|
129
310
|
|
130
|
-
|
131
|
-
|
311
|
+
MemOperand FullCodeGenerator::ContextSlotOperandCheckExtensions(
|
312
|
+
Slot* slot,
|
313
|
+
Label* slow) {
|
314
|
+
UNIMPLEMENTED_MIPS();
|
315
|
+
return MemOperand(zero_reg, 0);
|
316
|
+
}
|
317
|
+
|
318
|
+
|
319
|
+
void FullCodeGenerator::EmitDynamicLoadFromSlotFastCase(
|
320
|
+
Slot* slot,
|
321
|
+
TypeofState typeof_state,
|
322
|
+
Label* slow,
|
323
|
+
Label* done) {
|
324
|
+
UNIMPLEMENTED_MIPS();
|
325
|
+
}
|
326
|
+
|
327
|
+
|
328
|
+
void FullCodeGenerator::EmitLoadGlobalSlotCheckExtensions(
|
329
|
+
Slot* slot,
|
330
|
+
TypeofState typeof_state,
|
331
|
+
Label* slow) {
|
332
|
+
UNIMPLEMENTED_MIPS();
|
333
|
+
}
|
334
|
+
|
335
|
+
|
336
|
+
void FullCodeGenerator::EmitVariableLoad(Variable* var) {
|
132
337
|
UNIMPLEMENTED_MIPS();
|
133
338
|
}
|
134
339
|
|
@@ -163,14 +368,28 @@ void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) {
|
|
163
368
|
}
|
164
369
|
|
165
370
|
|
371
|
+
void FullCodeGenerator::EmitInlineSmiBinaryOp(Expression* expr,
|
372
|
+
Token::Value op,
|
373
|
+
OverwriteMode mode,
|
374
|
+
Expression* left,
|
375
|
+
Expression* right) {
|
376
|
+
UNIMPLEMENTED_MIPS();
|
377
|
+
}
|
378
|
+
|
379
|
+
|
166
380
|
void FullCodeGenerator::EmitBinaryOp(Token::Value op,
|
167
|
-
|
381
|
+
OverwriteMode mode) {
|
382
|
+
UNIMPLEMENTED_MIPS();
|
383
|
+
}
|
384
|
+
|
385
|
+
|
386
|
+
void FullCodeGenerator::EmitAssignment(Expression* expr, int bailout_ast_id) {
|
168
387
|
UNIMPLEMENTED_MIPS();
|
169
388
|
}
|
170
389
|
|
171
390
|
|
172
391
|
void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
173
|
-
|
392
|
+
Token::Value op) {
|
174
393
|
UNIMPLEMENTED_MIPS();
|
175
394
|
}
|
176
395
|
|
@@ -189,13 +408,21 @@ void FullCodeGenerator::VisitProperty(Property* expr) {
|
|
189
408
|
UNIMPLEMENTED_MIPS();
|
190
409
|
}
|
191
410
|
|
411
|
+
|
192
412
|
void FullCodeGenerator::EmitCallWithIC(Call* expr,
|
193
|
-
Handle<Object>
|
413
|
+
Handle<Object> name,
|
194
414
|
RelocInfo::Mode mode) {
|
195
415
|
UNIMPLEMENTED_MIPS();
|
196
416
|
}
|
197
417
|
|
198
418
|
|
419
|
+
void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr,
|
420
|
+
Expression* key,
|
421
|
+
RelocInfo::Mode mode) {
|
422
|
+
UNIMPLEMENTED_MIPS();
|
423
|
+
}
|
424
|
+
|
425
|
+
|
199
426
|
void FullCodeGenerator::EmitCallWithStub(Call* expr) {
|
200
427
|
UNIMPLEMENTED_MIPS();
|
201
428
|
}
|
@@ -211,6 +438,202 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) {
|
|
211
438
|
}
|
212
439
|
|
213
440
|
|
441
|
+
void FullCodeGenerator::EmitIsSmi(ZoneList<Expression*>* args) {
|
442
|
+
UNIMPLEMENTED_MIPS();
|
443
|
+
}
|
444
|
+
|
445
|
+
|
446
|
+
void FullCodeGenerator::EmitIsNonNegativeSmi(ZoneList<Expression*>* args) {
|
447
|
+
UNIMPLEMENTED_MIPS();
|
448
|
+
}
|
449
|
+
|
450
|
+
|
451
|
+
void FullCodeGenerator::EmitIsObject(ZoneList<Expression*>* args) {
|
452
|
+
UNIMPLEMENTED_MIPS();
|
453
|
+
}
|
454
|
+
|
455
|
+
|
456
|
+
void FullCodeGenerator::EmitIsSpecObject(ZoneList<Expression*>* args) {
|
457
|
+
UNIMPLEMENTED_MIPS();
|
458
|
+
}
|
459
|
+
|
460
|
+
|
461
|
+
void FullCodeGenerator::EmitIsUndetectableObject(ZoneList<Expression*>* args) {
|
462
|
+
UNIMPLEMENTED_MIPS();
|
463
|
+
}
|
464
|
+
|
465
|
+
|
466
|
+
void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
467
|
+
ZoneList<Expression*>* args) {
|
468
|
+
UNIMPLEMENTED_MIPS();
|
469
|
+
}
|
470
|
+
|
471
|
+
|
472
|
+
void FullCodeGenerator::EmitIsFunction(ZoneList<Expression*>* args) {
|
473
|
+
UNIMPLEMENTED_MIPS();
|
474
|
+
}
|
475
|
+
|
476
|
+
|
477
|
+
void FullCodeGenerator::EmitIsArray(ZoneList<Expression*>* args) {
|
478
|
+
UNIMPLEMENTED_MIPS();
|
479
|
+
}
|
480
|
+
|
481
|
+
|
482
|
+
void FullCodeGenerator::EmitIsRegExp(ZoneList<Expression*>* args) {
|
483
|
+
UNIMPLEMENTED_MIPS();
|
484
|
+
}
|
485
|
+
|
486
|
+
|
487
|
+
void FullCodeGenerator::EmitIsConstructCall(ZoneList<Expression*>* args) {
|
488
|
+
UNIMPLEMENTED_MIPS();
|
489
|
+
}
|
490
|
+
|
491
|
+
|
492
|
+
void FullCodeGenerator::EmitObjectEquals(ZoneList<Expression*>* args) {
|
493
|
+
UNIMPLEMENTED_MIPS();
|
494
|
+
}
|
495
|
+
|
496
|
+
|
497
|
+
void FullCodeGenerator::EmitArguments(ZoneList<Expression*>* args) {
|
498
|
+
UNIMPLEMENTED_MIPS();
|
499
|
+
}
|
500
|
+
|
501
|
+
|
502
|
+
void FullCodeGenerator::EmitArgumentsLength(ZoneList<Expression*>* args) {
|
503
|
+
UNIMPLEMENTED_MIPS();
|
504
|
+
}
|
505
|
+
|
506
|
+
|
507
|
+
void FullCodeGenerator::EmitClassOf(ZoneList<Expression*>* args) {
|
508
|
+
UNIMPLEMENTED_MIPS();
|
509
|
+
}
|
510
|
+
|
511
|
+
|
512
|
+
void FullCodeGenerator::EmitLog(ZoneList<Expression*>* args) {
|
513
|
+
UNIMPLEMENTED_MIPS();
|
514
|
+
}
|
515
|
+
|
516
|
+
|
517
|
+
void FullCodeGenerator::EmitRandomHeapNumber(ZoneList<Expression*>* args) {
|
518
|
+
UNIMPLEMENTED_MIPS();
|
519
|
+
}
|
520
|
+
|
521
|
+
|
522
|
+
void FullCodeGenerator::EmitSubString(ZoneList<Expression*>* args) {
|
523
|
+
UNIMPLEMENTED_MIPS();
|
524
|
+
}
|
525
|
+
|
526
|
+
|
527
|
+
void FullCodeGenerator::EmitRegExpExec(ZoneList<Expression*>* args) {
|
528
|
+
UNIMPLEMENTED_MIPS();
|
529
|
+
}
|
530
|
+
|
531
|
+
|
532
|
+
void FullCodeGenerator::EmitValueOf(ZoneList<Expression*>* args) {
|
533
|
+
UNIMPLEMENTED_MIPS();
|
534
|
+
}
|
535
|
+
|
536
|
+
|
537
|
+
void FullCodeGenerator::EmitMathPow(ZoneList<Expression*>* args) {
|
538
|
+
UNIMPLEMENTED_MIPS();
|
539
|
+
}
|
540
|
+
|
541
|
+
|
542
|
+
void FullCodeGenerator::EmitSetValueOf(ZoneList<Expression*>* args) {
|
543
|
+
UNIMPLEMENTED_MIPS();
|
544
|
+
}
|
545
|
+
|
546
|
+
|
547
|
+
void FullCodeGenerator::EmitNumberToString(ZoneList<Expression*>* args) {
|
548
|
+
UNIMPLEMENTED_MIPS();
|
549
|
+
}
|
550
|
+
|
551
|
+
|
552
|
+
void FullCodeGenerator::EmitStringCharFromCode(ZoneList<Expression*>* args) {
|
553
|
+
UNIMPLEMENTED_MIPS();
|
554
|
+
}
|
555
|
+
|
556
|
+
|
557
|
+
void FullCodeGenerator::EmitStringCharCodeAt(ZoneList<Expression*>* args) {
|
558
|
+
UNIMPLEMENTED_MIPS();
|
559
|
+
}
|
560
|
+
|
561
|
+
|
562
|
+
void FullCodeGenerator::EmitStringCharAt(ZoneList<Expression*>* args) {
|
563
|
+
UNIMPLEMENTED_MIPS();
|
564
|
+
}
|
565
|
+
|
566
|
+
|
567
|
+
void FullCodeGenerator::EmitStringAdd(ZoneList<Expression*>* args) {
|
568
|
+
UNIMPLEMENTED_MIPS();
|
569
|
+
}
|
570
|
+
|
571
|
+
|
572
|
+
void FullCodeGenerator::EmitStringCompare(ZoneList<Expression*>* args) {
|
573
|
+
UNIMPLEMENTED_MIPS();
|
574
|
+
}
|
575
|
+
|
576
|
+
|
577
|
+
void FullCodeGenerator::EmitMathSin(ZoneList<Expression*>* args) {
|
578
|
+
UNIMPLEMENTED_MIPS();
|
579
|
+
}
|
580
|
+
|
581
|
+
|
582
|
+
void FullCodeGenerator::EmitMathCos(ZoneList<Expression*>* args) {
|
583
|
+
UNIMPLEMENTED_MIPS();
|
584
|
+
}
|
585
|
+
|
586
|
+
|
587
|
+
void FullCodeGenerator::EmitMathSqrt(ZoneList<Expression*>* args) {
|
588
|
+
UNIMPLEMENTED_MIPS();
|
589
|
+
}
|
590
|
+
|
591
|
+
|
592
|
+
void FullCodeGenerator::EmitMathLog(ZoneList<Expression*>* args) {
|
593
|
+
UNIMPLEMENTED_MIPS();
|
594
|
+
}
|
595
|
+
|
596
|
+
|
597
|
+
void FullCodeGenerator::EmitCallFunction(ZoneList<Expression*>* args) {
|
598
|
+
UNIMPLEMENTED_MIPS();
|
599
|
+
}
|
600
|
+
|
601
|
+
|
602
|
+
void FullCodeGenerator::EmitRegExpConstructResult(ZoneList<Expression*>* args) {
|
603
|
+
UNIMPLEMENTED_MIPS();
|
604
|
+
}
|
605
|
+
|
606
|
+
|
607
|
+
void FullCodeGenerator::EmitSwapElements(ZoneList<Expression*>* args) {
|
608
|
+
UNIMPLEMENTED_MIPS();
|
609
|
+
}
|
610
|
+
|
611
|
+
|
612
|
+
void FullCodeGenerator::EmitGetFromCache(ZoneList<Expression*>* args) {
|
613
|
+
UNIMPLEMENTED_MIPS();
|
614
|
+
}
|
615
|
+
|
616
|
+
|
617
|
+
void FullCodeGenerator::EmitIsRegExpEquivalent(ZoneList<Expression*>* args) {
|
618
|
+
UNIMPLEMENTED_MIPS();
|
619
|
+
}
|
620
|
+
|
621
|
+
|
622
|
+
void FullCodeGenerator::EmitHasCachedArrayIndex(ZoneList<Expression*>* args) {
|
623
|
+
UNIMPLEMENTED_MIPS();
|
624
|
+
}
|
625
|
+
|
626
|
+
|
627
|
+
void FullCodeGenerator::EmitGetCachedArrayIndex(ZoneList<Expression*>* args) {
|
628
|
+
UNIMPLEMENTED_MIPS();
|
629
|
+
}
|
630
|
+
|
631
|
+
|
632
|
+
void FullCodeGenerator::EmitFastAsciiArrayJoin(ZoneList<Expression*>* args) {
|
633
|
+
UNIMPLEMENTED_MIPS();
|
634
|
+
}
|
635
|
+
|
636
|
+
|
214
637
|
void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) {
|
215
638
|
UNIMPLEMENTED_MIPS();
|
216
639
|
}
|
@@ -226,25 +649,52 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
|
226
649
|
}
|
227
650
|
|
228
651
|
|
229
|
-
void FullCodeGenerator::
|
652
|
+
void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
230
653
|
UNIMPLEMENTED_MIPS();
|
231
654
|
}
|
232
655
|
|
233
656
|
|
657
|
+
bool FullCodeGenerator::TryLiteralCompare(Token::Value op,
|
658
|
+
Expression* left,
|
659
|
+
Expression* right,
|
660
|
+
Label* if_true,
|
661
|
+
Label* if_false,
|
662
|
+
Label* fall_through) {
|
663
|
+
UNIMPLEMENTED_MIPS();
|
664
|
+
return false;
|
665
|
+
}
|
666
|
+
|
667
|
+
|
234
668
|
void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
235
669
|
UNIMPLEMENTED_MIPS();
|
236
670
|
}
|
237
671
|
|
238
672
|
|
673
|
+
void FullCodeGenerator::VisitCompareToNull(CompareToNull* expr) {
|
674
|
+
UNIMPLEMENTED_MIPS();
|
675
|
+
}
|
676
|
+
|
677
|
+
|
239
678
|
void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) {
|
240
679
|
UNIMPLEMENTED_MIPS();
|
241
680
|
}
|
242
681
|
|
243
682
|
|
244
|
-
Register FullCodeGenerator::result_register() {
|
683
|
+
Register FullCodeGenerator::result_register() {
|
684
|
+
UNIMPLEMENTED_MIPS();
|
685
|
+
return v0;
|
686
|
+
}
|
245
687
|
|
246
688
|
|
247
|
-
Register FullCodeGenerator::context_register() {
|
689
|
+
Register FullCodeGenerator::context_register() {
|
690
|
+
UNIMPLEMENTED_MIPS();
|
691
|
+
return cp;
|
692
|
+
}
|
693
|
+
|
694
|
+
|
695
|
+
void FullCodeGenerator::EmitCallIC(Handle<Code> ic, RelocInfo::Mode mode) {
|
696
|
+
UNIMPLEMENTED_MIPS();
|
697
|
+
}
|
248
698
|
|
249
699
|
|
250
700
|
void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) {
|