therubyracer 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of therubyracer might be problematic. Click here for more details.
- data/History.txt +11 -0
- data/Rakefile +1 -1
- data/ext/v8/extconf.rb +0 -18
- data/ext/v8/rr.cpp +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
- data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
- data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
- data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
- data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
- data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
- data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
- data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
- data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
- data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
- data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
- data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
- data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
- data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
- data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
- data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
- data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
- data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
- data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
- data/ext/v8/upstream/Makefile +1 -1
- data/ext/v8/v8_template.cpp +94 -2
- data/ext/v8/v8_try_catch.cpp +2 -2
- data/lib/v8.rb +1 -1
- data/lib/v8/access.rb +93 -40
- data/lib/v8/cli.rb +1 -1
- data/lib/v8/function.rb +14 -2
- data/spec/redjs/jsapi_spec.rb +231 -42
- data/therubyracer.gemspec +3 -3
- metadata +463 -453
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
- data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
- data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
- data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
- data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
- data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
- data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
@@ -28,7 +28,9 @@
|
|
28
28
|
#ifndef V8_X64_CODEGEN_X64_H_
|
29
29
|
#define V8_X64_CODEGEN_X64_H_
|
30
30
|
|
31
|
+
#include "ast.h"
|
31
32
|
#include "ic-inl.h"
|
33
|
+
#include "jump-target-heavy.h"
|
32
34
|
|
33
35
|
namespace v8 {
|
34
36
|
namespace internal {
|
@@ -312,7 +314,9 @@ class CodeGenerator: public AstVisitor {
|
|
312
314
|
static bool ShouldGenerateLog(Expression* type);
|
313
315
|
#endif
|
314
316
|
|
315
|
-
static
|
317
|
+
static bool RecordPositions(MacroAssembler* masm,
|
318
|
+
int pos,
|
319
|
+
bool right_here = false);
|
316
320
|
|
317
321
|
// Accessors
|
318
322
|
MacroAssembler* masm() { return masm_; }
|
@@ -389,6 +393,9 @@ class CodeGenerator: public AstVisitor {
|
|
389
393
|
// target (which can not be done more than once).
|
390
394
|
void GenerateReturnSequence(Result* return_value);
|
391
395
|
|
396
|
+
// Generate code for a fast smi loop.
|
397
|
+
void GenerateFastSmiLoop(ForStatement* node);
|
398
|
+
|
392
399
|
// Returns the arguments allocation mode.
|
393
400
|
ArgumentsAllocationMode ArgumentsMode();
|
394
401
|
|
@@ -433,14 +440,39 @@ class CodeGenerator: public AstVisitor {
|
|
433
440
|
TypeofState typeof_state,
|
434
441
|
JumpTarget* slow);
|
435
442
|
|
443
|
+
// Support for loading from local/global variables and arguments
|
444
|
+
// whose location is known unless they are shadowed by
|
445
|
+
// eval-introduced bindings. Generates no code for unsupported slot
|
446
|
+
// types and therefore expects to fall through to the slow jump target.
|
447
|
+
void EmitDynamicLoadFromSlotFastCase(Slot* slot,
|
448
|
+
TypeofState typeof_state,
|
449
|
+
Result* result,
|
450
|
+
JumpTarget* slow,
|
451
|
+
JumpTarget* done);
|
452
|
+
|
436
453
|
// Store the value on top of the expression stack into a slot, leaving the
|
437
454
|
// value in place.
|
438
455
|
void StoreToSlot(Slot* slot, InitState init_state);
|
439
456
|
|
457
|
+
// Support for compiling assignment expressions.
|
458
|
+
void EmitSlotAssignment(Assignment* node);
|
459
|
+
void EmitNamedPropertyAssignment(Assignment* node);
|
460
|
+
void EmitKeyedPropertyAssignment(Assignment* node);
|
461
|
+
|
462
|
+
// Receiver is passed on the frame and not consumed.
|
463
|
+
Result EmitNamedLoad(Handle<String> name, bool is_contextual);
|
464
|
+
|
465
|
+
// If the store is contextual, value is passed on the frame and consumed.
|
466
|
+
// Otherwise, receiver and value are passed on the frame and consumed.
|
467
|
+
Result EmitNamedStore(Handle<String> name, bool is_contextual);
|
468
|
+
|
440
469
|
// Load a property of an object, returning it in a Result.
|
441
470
|
// The object and the property name are passed on the stack, and
|
442
471
|
// not changed.
|
443
|
-
Result EmitKeyedLoad(
|
472
|
+
Result EmitKeyedLoad();
|
473
|
+
|
474
|
+
// Receiver, key, and value are passed on the frame and consumed.
|
475
|
+
Result EmitKeyedStore(StaticType* key_type);
|
444
476
|
|
445
477
|
// Special code for typeof expressions: Unfortunately, we must
|
446
478
|
// be careful when loading the expression in 'typeof'
|
@@ -460,6 +492,29 @@ class CodeGenerator: public AstVisitor {
|
|
460
492
|
void GenericBinaryOperation(BinaryOperation* expr,
|
461
493
|
OverwriteMode overwrite_mode);
|
462
494
|
|
495
|
+
// Emits code sequence that jumps to a JumpTarget if the inputs
|
496
|
+
// are both smis. Cannot be in MacroAssembler because it takes
|
497
|
+
// advantage of TypeInfo to skip unneeded checks.
|
498
|
+
void JumpIfBothSmiUsingTypeInfo(Result* left,
|
499
|
+
Result* right,
|
500
|
+
JumpTarget* both_smi);
|
501
|
+
|
502
|
+
// Emits code sequence that jumps to deferred code if the input
|
503
|
+
// is not a smi. Cannot be in MacroAssembler because it takes
|
504
|
+
// advantage of TypeInfo to skip unneeded checks.
|
505
|
+
void JumpIfNotSmiUsingTypeInfo(Register reg,
|
506
|
+
TypeInfo type,
|
507
|
+
DeferredCode* deferred);
|
508
|
+
|
509
|
+
// Emits code sequence that jumps to deferred code if the inputs
|
510
|
+
// are not both smis. Cannot be in MacroAssembler because it takes
|
511
|
+
// advantage of TypeInfo to skip unneeded checks.
|
512
|
+
void JumpIfNotBothSmiUsingTypeInfo(Register left,
|
513
|
+
Register right,
|
514
|
+
TypeInfo left_info,
|
515
|
+
TypeInfo right_info,
|
516
|
+
DeferredCode* deferred);
|
517
|
+
|
463
518
|
// If possible, combine two constant smi values using op to produce
|
464
519
|
// a smi result, and push it on the virtual frame, all at compile time.
|
465
520
|
// Returns true if it succeeds. Otherwise it has no effect.
|
@@ -485,6 +540,17 @@ class CodeGenerator: public AstVisitor {
|
|
485
540
|
Condition cc,
|
486
541
|
bool strict,
|
487
542
|
ControlDestination* destination);
|
543
|
+
|
544
|
+
// If at least one of the sides is a constant smi, generate optimized code.
|
545
|
+
void ConstantSmiComparison(Condition cc,
|
546
|
+
bool strict,
|
547
|
+
ControlDestination* destination,
|
548
|
+
Result* left_side,
|
549
|
+
Result* right_side,
|
550
|
+
bool left_side_constant_smi,
|
551
|
+
bool right_side_constant_smi,
|
552
|
+
bool is_loop_condition);
|
553
|
+
|
488
554
|
void GenerateInlineNumberComparison(Result* left_side,
|
489
555
|
Result* right_side,
|
490
556
|
Condition cc,
|
@@ -527,6 +593,8 @@ class CodeGenerator: public AstVisitor {
|
|
527
593
|
|
528
594
|
static Handle<Code> ComputeCallInitialize(int argc, InLoopFlag in_loop);
|
529
595
|
|
596
|
+
static Handle<Code> ComputeKeyedCallInitialize(int argc, InLoopFlag in_loop);
|
597
|
+
|
530
598
|
// Declare global variables and functions in the given array of
|
531
599
|
// name/value pairs.
|
532
600
|
void DeclareGlobals(Handle<FixedArray> pairs);
|
@@ -540,6 +608,7 @@ class CodeGenerator: public AstVisitor {
|
|
540
608
|
void GenerateIsArray(ZoneList<Expression*>* args);
|
541
609
|
void GenerateIsRegExp(ZoneList<Expression*>* args);
|
542
610
|
void GenerateIsObject(ZoneList<Expression*>* args);
|
611
|
+
void GenerateIsSpecObject(ZoneList<Expression*>* args);
|
543
612
|
void GenerateIsFunction(ZoneList<Expression*>* args);
|
544
613
|
void GenerateIsUndetectableObject(ZoneList<Expression*>* args);
|
545
614
|
|
@@ -556,10 +625,13 @@ class CodeGenerator: public AstVisitor {
|
|
556
625
|
void GenerateSetValueOf(ZoneList<Expression*>* args);
|
557
626
|
|
558
627
|
// Fast support for charCodeAt(n).
|
559
|
-
void
|
628
|
+
void GenerateStringCharCodeAt(ZoneList<Expression*>* args);
|
560
629
|
|
561
630
|
// Fast support for string.charAt(n) and string[n].
|
562
|
-
void
|
631
|
+
void GenerateStringCharFromCode(ZoneList<Expression*>* args);
|
632
|
+
|
633
|
+
// Fast support for string.charAt(n) and string[n].
|
634
|
+
void GenerateStringCharAt(ZoneList<Expression*>* args);
|
563
635
|
|
564
636
|
// Fast support for object equality testing.
|
565
637
|
void GenerateObjectEquals(ZoneList<Expression*>* args);
|
@@ -711,7 +783,6 @@ class GenericBinaryOpStub: public CodeStub {
|
|
711
783
|
static_operands_type_(operands_type),
|
712
784
|
runtime_operands_type_(BinaryOpIC::DEFAULT),
|
713
785
|
name_(NULL) {
|
714
|
-
use_sse3_ = CpuFeatures::IsSupported(SSE3);
|
715
786
|
ASSERT(OpBits::is_valid(Token::NUM_TOKENS));
|
716
787
|
}
|
717
788
|
|
@@ -721,7 +792,6 @@ class GenericBinaryOpStub: public CodeStub {
|
|
721
792
|
flags_(FlagBits::decode(key)),
|
722
793
|
args_in_registers_(ArgsInRegistersBits::decode(key)),
|
723
794
|
args_reversed_(ArgsReversedBits::decode(key)),
|
724
|
-
use_sse3_(SSE3Bits::decode(key)),
|
725
795
|
static_operands_type_(TypeInfo::ExpandedRepresentation(
|
726
796
|
StaticTypeInfoBits::decode(key))),
|
727
797
|
runtime_operands_type_(type_info),
|
@@ -746,7 +816,6 @@ class GenericBinaryOpStub: public CodeStub {
|
|
746
816
|
GenericBinaryFlags flags_;
|
747
817
|
bool args_in_registers_; // Arguments passed in registers not on the stack.
|
748
818
|
bool args_reversed_; // Left and right argument are swapped.
|
749
|
-
bool use_sse3_;
|
750
819
|
|
751
820
|
// Number type information of operands, determined by code generator.
|
752
821
|
TypeInfo static_operands_type_;
|
@@ -772,15 +841,14 @@ class GenericBinaryOpStub: public CodeStub {
|
|
772
841
|
}
|
773
842
|
#endif
|
774
843
|
|
775
|
-
// Minor key encoding in
|
844
|
+
// Minor key encoding in 17 bits TTNNNFRAOOOOOOOMM.
|
776
845
|
class ModeBits: public BitField<OverwriteMode, 0, 2> {};
|
777
846
|
class OpBits: public BitField<Token::Value, 2, 7> {};
|
778
|
-
class
|
779
|
-
class
|
780
|
-
class
|
781
|
-
class
|
782
|
-
class
|
783
|
-
class RuntimeTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 16, 2> {};
|
847
|
+
class ArgsInRegistersBits: public BitField<bool, 9, 1> {};
|
848
|
+
class ArgsReversedBits: public BitField<bool, 10, 1> {};
|
849
|
+
class FlagBits: public BitField<GenericBinaryFlags, 11, 1> {};
|
850
|
+
class StaticTypeInfoBits: public BitField<int, 12, 3> {};
|
851
|
+
class RuntimeTypeInfoBits: public BitField<BinaryOpIC::TypeInfo, 15, 2> {};
|
784
852
|
|
785
853
|
Major MajorKey() { return GenericBinaryOp; }
|
786
854
|
int MinorKey() {
|
@@ -788,7 +856,6 @@ class GenericBinaryOpStub: public CodeStub {
|
|
788
856
|
return OpBits::encode(op_)
|
789
857
|
| ModeBits::encode(mode_)
|
790
858
|
| FlagBits::encode(flags_)
|
791
|
-
| SSE3Bits::encode(use_sse3_)
|
792
859
|
| ArgsInRegistersBits::encode(args_in_registers_)
|
793
860
|
| ArgsReversedBits::encode(args_reversed_)
|
794
861
|
| StaticTypeInfoBits::encode(
|
@@ -836,38 +903,6 @@ class GenericBinaryOpStub: public CodeStub {
|
|
836
903
|
|
837
904
|
class StringHelper : public AllStatic {
|
838
905
|
public:
|
839
|
-
// Generates fast code for getting a char code out of a string
|
840
|
-
// object at the given index. May bail out for four reasons (in the
|
841
|
-
// listed order):
|
842
|
-
// * Receiver is not a string (receiver_not_string label).
|
843
|
-
// * Index is not a smi (index_not_smi label).
|
844
|
-
// * Index is out of range (index_out_of_range).
|
845
|
-
// * Some other reason (slow_case label). In this case it's
|
846
|
-
// guaranteed that the above conditions are not violated,
|
847
|
-
// e.g. it's safe to assume the receiver is a string and the
|
848
|
-
// index is a non-negative smi < length.
|
849
|
-
// When successful, object, index, and scratch are clobbered.
|
850
|
-
// Otherwise, scratch and result are clobbered.
|
851
|
-
static void GenerateFastCharCodeAt(MacroAssembler* masm,
|
852
|
-
Register object,
|
853
|
-
Register index,
|
854
|
-
Register scratch,
|
855
|
-
Register result,
|
856
|
-
Label* receiver_not_string,
|
857
|
-
Label* index_not_smi,
|
858
|
-
Label* index_out_of_range,
|
859
|
-
Label* slow_case);
|
860
|
-
|
861
|
-
// Generates code for creating a one-char string from the given char
|
862
|
-
// code. May do a runtime call, so any register can be clobbered
|
863
|
-
// and, if the given invoke flag specifies a call, an internal frame
|
864
|
-
// is required. In tail call mode the result must be rax register.
|
865
|
-
static void GenerateCharFromCode(MacroAssembler* masm,
|
866
|
-
Register code,
|
867
|
-
Register result,
|
868
|
-
Register scratch,
|
869
|
-
InvokeFlag flag);
|
870
|
-
|
871
906
|
// Generate code for copying characters using a simple loop. This should only
|
872
907
|
// be used in places where the number of characters is small and the
|
873
908
|
// additional setup and checking in GenerateCopyCharactersREP adds too much
|
@@ -28,6 +28,8 @@
|
|
28
28
|
|
29
29
|
#include "v8.h"
|
30
30
|
|
31
|
+
#if defined(V8_TARGET_ARCH_X64)
|
32
|
+
|
31
33
|
#include "codegen-inl.h"
|
32
34
|
#include "debug.h"
|
33
35
|
|
@@ -122,9 +124,10 @@ void Debug::GenerateConstructCallDebugBreak(MacroAssembler* masm) {
|
|
122
124
|
void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
|
123
125
|
// Register state for keyed IC load call (from ic-x64.cc).
|
124
126
|
// ----------- S t a t e -------------
|
125
|
-
//
|
127
|
+
// -- rax : key
|
128
|
+
// -- rdx : receiver
|
126
129
|
// -----------------------------------
|
127
|
-
Generate_DebugBreakCallHelper(masm,
|
130
|
+
Generate_DebugBreakCallHelper(masm, rax.bit() | rdx.bit(), false);
|
128
131
|
}
|
129
132
|
|
130
133
|
|
@@ -132,19 +135,20 @@ void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
|
|
132
135
|
// Register state for keyed IC load call (from ic-x64.cc).
|
133
136
|
// ----------- S t a t e -------------
|
134
137
|
// -- rax : value
|
138
|
+
// -- rcx : key
|
139
|
+
// -- rdx : receiver
|
135
140
|
// -----------------------------------
|
136
|
-
|
137
|
-
// expression stack of the fake JS frame.
|
138
|
-
Generate_DebugBreakCallHelper(masm, rax.bit(), false);
|
141
|
+
Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit() | rdx.bit(), false);
|
139
142
|
}
|
140
143
|
|
141
144
|
|
142
145
|
void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) {
|
143
146
|
// Register state for IC load call (from ic-x64.cc).
|
144
147
|
// ----------- S t a t e -------------
|
148
|
+
// -- rax : receiver
|
145
149
|
// -- rcx : name
|
146
150
|
// -----------------------------------
|
147
|
-
Generate_DebugBreakCallHelper(masm, rcx.bit(), false);
|
151
|
+
Generate_DebugBreakCallHelper(masm, rax.bit() | rcx.bit(), false);
|
148
152
|
}
|
149
153
|
|
150
154
|
|
@@ -177,10 +181,31 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
|
|
177
181
|
}
|
178
182
|
|
179
183
|
|
184
|
+
void Debug::GenerateSlot(MacroAssembler* masm) {
|
185
|
+
// Generate enough nop's to make space for a call instruction.
|
186
|
+
Label check_codesize;
|
187
|
+
__ bind(&check_codesize);
|
188
|
+
__ RecordDebugBreakSlot();
|
189
|
+
for (int i = 0; i < Assembler::kDebugBreakSlotLength; i++) {
|
190
|
+
__ nop();
|
191
|
+
}
|
192
|
+
ASSERT_EQ(Assembler::kDebugBreakSlotLength,
|
193
|
+
masm->SizeOfCodeGeneratedSince(&check_codesize));
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
void Debug::GenerateSlotDebugBreak(MacroAssembler* masm) {
|
198
|
+
// In the places where a debug break slot is inserted no registers can contain
|
199
|
+
// object pointers.
|
200
|
+
Generate_DebugBreakCallHelper(masm, 0, true);
|
201
|
+
}
|
202
|
+
|
203
|
+
|
180
204
|
void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
|
181
205
|
masm->Abort("LiveEdit frame dropping is not supported on x64");
|
182
206
|
}
|
183
207
|
|
208
|
+
|
184
209
|
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
|
185
210
|
masm->Abort("LiveEdit frame dropping is not supported on x64");
|
186
211
|
}
|
@@ -213,6 +238,30 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
|
|
213
238
|
Assembler::kJSReturnSequenceLength - Assembler::kCallInstructionLength);
|
214
239
|
}
|
215
240
|
|
241
|
+
|
242
|
+
bool BreakLocationIterator::IsDebugBreakAtSlot() {
|
243
|
+
ASSERT(IsDebugBreakSlot());
|
244
|
+
// Check whether the debug break slot instructions have been patched.
|
245
|
+
return !Assembler::IsNop(rinfo()->pc());
|
246
|
+
}
|
247
|
+
|
248
|
+
|
249
|
+
void BreakLocationIterator::SetDebugBreakAtSlot() {
|
250
|
+
ASSERT(IsDebugBreakSlot());
|
251
|
+
rinfo()->PatchCodeWithCall(
|
252
|
+
Debug::debug_break_slot()->entry(),
|
253
|
+
Assembler::kDebugBreakSlotLength - Assembler::kCallInstructionLength);
|
254
|
+
}
|
255
|
+
|
256
|
+
|
257
|
+
void BreakLocationIterator::ClearDebugBreakAtSlot() {
|
258
|
+
ASSERT(IsDebugBreakSlot());
|
259
|
+
rinfo()->PatchCode(original_rinfo()->pc(), Assembler::kDebugBreakSlotLength);
|
260
|
+
}
|
261
|
+
|
262
|
+
|
216
263
|
#endif // ENABLE_DEBUGGER_SUPPORT
|
217
264
|
|
218
265
|
} } // namespace v8::internal
|
266
|
+
|
267
|
+
#endif // V8_TARGET_ARCH_X64
|
@@ -30,6 +30,9 @@
|
|
30
30
|
#include <stdarg.h>
|
31
31
|
|
32
32
|
#include "v8.h"
|
33
|
+
|
34
|
+
#if defined(V8_TARGET_ARCH_X64)
|
35
|
+
|
33
36
|
#include "disasm.h"
|
34
37
|
|
35
38
|
namespace disasm {
|
@@ -465,20 +468,20 @@ int DisassemblerX64::PrintRightOperandHelper(
|
|
465
468
|
if (index == 4 && (base & 7) == 4 && scale == 0 /*times_1*/) {
|
466
469
|
// index == rsp means no index. Only use sib byte with no index for
|
467
470
|
// rsp and r12 base.
|
468
|
-
AppendToBuffer("[%s]", (
|
471
|
+
AppendToBuffer("[%s]", NameOfCPURegister(base));
|
469
472
|
return 2;
|
470
473
|
} else if (base == 5) {
|
471
474
|
// base == rbp means no base register (when mod == 0).
|
472
475
|
int32_t disp = *reinterpret_cast<int32_t*>(modrmp + 2);
|
473
476
|
AppendToBuffer("[%s*%d+0x%x]",
|
474
|
-
(
|
477
|
+
NameOfCPURegister(index),
|
475
478
|
1 << scale, disp);
|
476
479
|
return 6;
|
477
480
|
} else if (index != 4 && base != 5) {
|
478
481
|
// [base+index*scale]
|
479
482
|
AppendToBuffer("[%s+%s*%d]",
|
480
|
-
(
|
481
|
-
(
|
483
|
+
NameOfCPURegister(base),
|
484
|
+
NameOfCPURegister(index),
|
482
485
|
1 << scale);
|
483
486
|
return 2;
|
484
487
|
} else {
|
@@ -486,7 +489,7 @@ int DisassemblerX64::PrintRightOperandHelper(
|
|
486
489
|
return 1;
|
487
490
|
}
|
488
491
|
} else {
|
489
|
-
AppendToBuffer("[%s]", (
|
492
|
+
AppendToBuffer("[%s]", NameOfCPURegister(rm));
|
490
493
|
return 1;
|
491
494
|
}
|
492
495
|
break;
|
@@ -500,21 +503,21 @@ int DisassemblerX64::PrintRightOperandHelper(
|
|
500
503
|
: *reinterpret_cast<char*>(modrmp + 2);
|
501
504
|
if (index == 4 && (base & 7) == 4 && scale == 0 /*times_1*/) {
|
502
505
|
if (-disp > 0) {
|
503
|
-
AppendToBuffer("[%s-0x%x]", (
|
506
|
+
AppendToBuffer("[%s-0x%x]", NameOfCPURegister(base), -disp);
|
504
507
|
} else {
|
505
|
-
AppendToBuffer("[%s+0x%x]", (
|
508
|
+
AppendToBuffer("[%s+0x%x]", NameOfCPURegister(base), disp);
|
506
509
|
}
|
507
510
|
} else {
|
508
511
|
if (-disp > 0) {
|
509
512
|
AppendToBuffer("[%s+%s*%d-0x%x]",
|
510
|
-
(
|
511
|
-
(
|
513
|
+
NameOfCPURegister(base),
|
514
|
+
NameOfCPURegister(index),
|
512
515
|
1 << scale,
|
513
516
|
-disp);
|
514
517
|
} else {
|
515
518
|
AppendToBuffer("[%s+%s*%d+0x%x]",
|
516
|
-
(
|
517
|
-
(
|
519
|
+
NameOfCPURegister(base),
|
520
|
+
NameOfCPURegister(index),
|
518
521
|
1 << scale,
|
519
522
|
disp);
|
520
523
|
}
|
@@ -525,9 +528,9 @@ int DisassemblerX64::PrintRightOperandHelper(
|
|
525
528
|
int disp = (mod == 2) ? *reinterpret_cast<int32_t*>(modrmp + 1)
|
526
529
|
: *reinterpret_cast<char*>(modrmp + 1);
|
527
530
|
if (-disp > 0) {
|
528
|
-
AppendToBuffer("[%s-0x%x]", (
|
531
|
+
AppendToBuffer("[%s-0x%x]", NameOfCPURegister(rm), -disp);
|
529
532
|
} else {
|
530
|
-
AppendToBuffer("[%s+0x%x]", (
|
533
|
+
AppendToBuffer("[%s+0x%x]", NameOfCPURegister(rm), disp);
|
531
534
|
}
|
532
535
|
return (mod == 2) ? 5 : 2;
|
533
536
|
}
|
@@ -1025,9 +1028,9 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
1025
1028
|
if (opcode == 0x57) {
|
1026
1029
|
mnemonic = "xorpd";
|
1027
1030
|
} else if (opcode == 0x2E) {
|
1028
|
-
mnemonic = "comisd";
|
1029
|
-
} else if (opcode == 0x2F) {
|
1030
1031
|
mnemonic = "ucomisd";
|
1032
|
+
} else if (opcode == 0x2F) {
|
1033
|
+
mnemonic = "comisd";
|
1031
1034
|
} else {
|
1032
1035
|
UnimplementedInstruction();
|
1033
1036
|
}
|
@@ -1054,7 +1057,7 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
1054
1057
|
// CVTSI2SD: integer to XMM double conversion.
|
1055
1058
|
int mod, regop, rm;
|
1056
1059
|
get_modrm(*current, &mod, ®op, &rm);
|
1057
|
-
AppendToBuffer("%
|
1060
|
+
AppendToBuffer("%sd %s,", mnemonic, NameOfXMMRegister(regop));
|
1058
1061
|
current += PrintRightOperand(current);
|
1059
1062
|
} else if ((opcode & 0xF8) == 0x58 || opcode == 0x51) {
|
1060
1063
|
// XMM arithmetic. Mnemonic was retrieved at the start of this function.
|
@@ -1067,7 +1070,25 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
|
|
1067
1070
|
}
|
1068
1071
|
} else if (group_1_prefix_ == 0xF3) {
|
1069
1072
|
// Instructions with prefix 0xF3.
|
1070
|
-
if (opcode ==
|
1073
|
+
if (opcode == 0x11 || opcode == 0x10) {
|
1074
|
+
// MOVSS: Move scalar double-precision fp to/from/between XMM registers.
|
1075
|
+
AppendToBuffer("movss ");
|
1076
|
+
int mod, regop, rm;
|
1077
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1078
|
+
if (opcode == 0x11) {
|
1079
|
+
current += PrintRightOperand(current);
|
1080
|
+
AppendToBuffer(",%s", NameOfXMMRegister(regop));
|
1081
|
+
} else {
|
1082
|
+
AppendToBuffer("%s,", NameOfXMMRegister(regop));
|
1083
|
+
current += PrintRightOperand(current);
|
1084
|
+
}
|
1085
|
+
} else if (opcode == 0x2A) {
|
1086
|
+
// CVTSI2SS: integer to XMM single conversion.
|
1087
|
+
int mod, regop, rm;
|
1088
|
+
get_modrm(*current, &mod, ®op, &rm);
|
1089
|
+
AppendToBuffer("%ss %s,", mnemonic, NameOfXMMRegister(regop));
|
1090
|
+
current += PrintRightOperand(current);
|
1091
|
+
} else if (opcode == 0x2C) {
|
1071
1092
|
// CVTTSS2SI: Convert scalar single-precision FP to dword integer.
|
1072
1093
|
// Assert that mod is not 3, so source is memory, not an XMM register.
|
1073
1094
|
ASSERT_NE(0xC0, *current & 0xC0);
|
@@ -1143,8 +1164,8 @@ const char* DisassemblerX64::TwoByteMnemonic(byte opcode) {
|
|
1143
1164
|
switch (opcode) {
|
1144
1165
|
case 0x1F:
|
1145
1166
|
return "nop";
|
1146
|
-
case 0x2A: // F2 prefix.
|
1147
|
-
return "
|
1167
|
+
case 0x2A: // F2/F3 prefix.
|
1168
|
+
return "cvtsi2s";
|
1148
1169
|
case 0x31:
|
1149
1170
|
return "rdtsc";
|
1150
1171
|
case 0x51: // F2 prefix.
|
@@ -1671,3 +1692,5 @@ void Disassembler::Disassemble(FILE* f, byte* begin, byte* end) {
|
|
1671
1692
|
}
|
1672
1693
|
|
1673
1694
|
} // namespace disasm
|
1695
|
+
|
1696
|
+
#endif // V8_TARGET_ARCH_X64
|