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
@@ -33,11 +33,25 @@
|
|
33
33
|
namespace v8 {
|
34
34
|
namespace internal {
|
35
35
|
|
36
|
+
// Flags used for the AllocateInNewSpace functions.
|
37
|
+
enum AllocationFlags {
|
38
|
+
// No special flags.
|
39
|
+
NO_ALLOCATION_FLAGS = 0,
|
40
|
+
// Return the pointer to the allocated already tagged as a heap object.
|
41
|
+
TAG_OBJECT = 1 << 0,
|
42
|
+
// The content of the result register already contains the allocation top in
|
43
|
+
// new space.
|
44
|
+
RESULT_CONTAINS_TOP = 1 << 1
|
45
|
+
};
|
46
|
+
|
36
47
|
// Default scratch register used by MacroAssembler (and other code that needs
|
37
48
|
// a spare register). The register isn't callee save, and not used by the
|
38
49
|
// function calling convention.
|
39
|
-
static const Register kScratchRegister = { 10 };
|
40
|
-
static const Register
|
50
|
+
static const Register kScratchRegister = { 10 }; // r10.
|
51
|
+
static const Register kSmiConstantRegister = { 15 }; // r15 (callee save).
|
52
|
+
static const Register kRootRegister = { 13 }; // r13 (callee save).
|
53
|
+
// Value of smi in kSmiConstantRegister.
|
54
|
+
static const int kSmiConstantRegisterValue = 1;
|
41
55
|
|
42
56
|
// Convenience for platform-independent signatures.
|
43
57
|
typedef Operand MemOperand;
|
@@ -62,12 +76,13 @@ class MacroAssembler: public Assembler {
|
|
62
76
|
void CompareRoot(Register with, Heap::RootListIndex index);
|
63
77
|
void CompareRoot(Operand with, Heap::RootListIndex index);
|
64
78
|
void PushRoot(Heap::RootListIndex index);
|
79
|
+
void StoreRoot(Register source, Heap::RootListIndex index);
|
65
80
|
|
66
81
|
// ---------------------------------------------------------------------------
|
67
82
|
// GC Support
|
68
83
|
|
69
|
-
//
|
70
|
-
//
|
84
|
+
// For page containing |object| mark region covering |addr| dirty.
|
85
|
+
// RecordWriteHelper only works if the object is not in new
|
71
86
|
// space.
|
72
87
|
void RecordWriteHelper(Register object,
|
73
88
|
Register addr,
|
@@ -81,17 +96,28 @@ class MacroAssembler: public Assembler {
|
|
81
96
|
Condition cc,
|
82
97
|
Label* branch);
|
83
98
|
|
84
|
-
//
|
85
|
-
// object is the object being stored into, value is the
|
86
|
-
// If offset is zero, then the scratch
|
87
|
-
// the
|
88
|
-
// All registers are clobbered by the
|
99
|
+
// For page containing |object| mark region covering [object+offset]
|
100
|
+
// dirty. |object| is the object being stored into, |value| is the
|
101
|
+
// object being stored. If |offset| is zero, then the |scratch|
|
102
|
+
// register contains the array index into the elements array
|
103
|
+
// represented as a Smi. All registers are clobbered by the
|
104
|
+
// operation. RecordWrite filters out smis so it does not update the
|
105
|
+
// write barrier if the value is a smi.
|
89
106
|
void RecordWrite(Register object,
|
90
107
|
int offset,
|
91
108
|
Register value,
|
92
109
|
Register scratch);
|
93
110
|
|
94
|
-
//
|
111
|
+
// For page containing |object| mark region covering [address]
|
112
|
+
// dirty. |object| is the object being stored into, |value| is the
|
113
|
+
// object being stored. All registers are clobbered by the
|
114
|
+
// operation. RecordWrite filters out smis so it does not update
|
115
|
+
// the write barrier if the value is a smi.
|
116
|
+
void RecordWrite(Register object,
|
117
|
+
Register address,
|
118
|
+
Register value);
|
119
|
+
|
120
|
+
// For page containing |object| mark region covering [object+offset] dirty.
|
95
121
|
// The value is known to not be a smi.
|
96
122
|
// object is the object being stored into, value is the object being stored.
|
97
123
|
// If offset is zero, then the scratch register contains the array index into
|
@@ -179,6 +205,12 @@ class MacroAssembler: public Assembler {
|
|
179
205
|
// ---------------------------------------------------------------------------
|
180
206
|
// Smi tagging, untagging and operations on tagged smis.
|
181
207
|
|
208
|
+
void InitializeSmiConstantRegister() {
|
209
|
+
movq(kSmiConstantRegister,
|
210
|
+
reinterpret_cast<uint64_t>(Smi::FromInt(kSmiConstantRegisterValue)),
|
211
|
+
RelocInfo::NONE);
|
212
|
+
}
|
213
|
+
|
182
214
|
// Conversions between tagged smi values and non-tagged integer values.
|
183
215
|
|
184
216
|
// Tag an integer value. The result must be known to be a valid smi value.
|
@@ -191,6 +223,9 @@ class MacroAssembler: public Assembler {
|
|
191
223
|
// NOTICE: Destroys the dst register even if unsuccessful!
|
192
224
|
void Integer32ToSmi(Register dst, Register src, Label* on_overflow);
|
193
225
|
|
226
|
+
// Stores an integer32 value into a memory field that already holds a smi.
|
227
|
+
void Integer32ToSmiField(const Operand& dst, Register src);
|
228
|
+
|
194
229
|
// Adds constant to src and tags the result as a smi.
|
195
230
|
// Result must be a valid smi.
|
196
231
|
void Integer64PlusConstantToSmi(Register dst, Register src, int constant);
|
@@ -198,9 +233,11 @@ class MacroAssembler: public Assembler {
|
|
198
233
|
// Convert smi to 32-bit integer. I.e., not sign extended into
|
199
234
|
// high 32 bits of destination.
|
200
235
|
void SmiToInteger32(Register dst, Register src);
|
236
|
+
void SmiToInteger32(Register dst, const Operand& src);
|
201
237
|
|
202
238
|
// Convert smi to 64-bit integer (sign extended if necessary).
|
203
239
|
void SmiToInteger64(Register dst, Register src);
|
240
|
+
void SmiToInteger64(Register dst, const Operand& src);
|
204
241
|
|
205
242
|
// Multiply a positive smi's integer value by a power of two.
|
206
243
|
// Provides result as 64-bit integer value.
|
@@ -208,12 +245,21 @@ class MacroAssembler: public Assembler {
|
|
208
245
|
Register src,
|
209
246
|
int power);
|
210
247
|
|
248
|
+
// Divide a positive smi's integer value by a power of two.
|
249
|
+
// Provides result as 32-bit integer value.
|
250
|
+
void PositiveSmiDivPowerOfTwoToInteger32(Register dst,
|
251
|
+
Register src,
|
252
|
+
int power);
|
253
|
+
|
254
|
+
|
211
255
|
// Simple comparison of smis.
|
212
256
|
void SmiCompare(Register dst, Register src);
|
213
257
|
void SmiCompare(Register dst, Smi* src);
|
214
258
|
void SmiCompare(Register dst, const Operand& src);
|
215
259
|
void SmiCompare(const Operand& dst, Register src);
|
216
260
|
void SmiCompare(const Operand& dst, Smi* src);
|
261
|
+
// Compare the int32 in src register to the value of the smi stored at dst.
|
262
|
+
void SmiCompareInteger32(const Operand& dst, Register src);
|
217
263
|
// Sets sign and zero flags depending on value of smi in register.
|
218
264
|
void SmiTest(Register src);
|
219
265
|
|
@@ -294,6 +340,10 @@ class MacroAssembler: public Assembler {
|
|
294
340
|
// No overflow testing on the result is done.
|
295
341
|
void SmiAddConstant(Register dst, Register src, Smi* constant);
|
296
342
|
|
343
|
+
// Add an integer constant to a tagged smi, giving a tagged smi as result.
|
344
|
+
// No overflow testing on the result is done.
|
345
|
+
void SmiAddConstant(const Operand& dst, Smi* constant);
|
346
|
+
|
297
347
|
// Add an integer constant to a tagged smi, giving a tagged smi as result,
|
298
348
|
// or jumping to a label if the result cannot be represented by a smi.
|
299
349
|
void SmiAddConstant(Register dst,
|
@@ -337,7 +387,7 @@ class MacroAssembler: public Assembler {
|
|
337
387
|
|
338
388
|
void SmiSub(Register dst,
|
339
389
|
Register src1,
|
340
|
-
Operand
|
390
|
+
const Operand& src2,
|
341
391
|
Label* on_not_smi_result);
|
342
392
|
|
343
393
|
// Multiplies smi values and return the result as a smi,
|
@@ -374,8 +424,7 @@ class MacroAssembler: public Assembler {
|
|
374
424
|
|
375
425
|
void SmiShiftLeftConstant(Register dst,
|
376
426
|
Register src,
|
377
|
-
int shift_value
|
378
|
-
Label* on_not_smi_result);
|
427
|
+
int shift_value);
|
379
428
|
void SmiShiftLogicalRightConstant(Register dst,
|
380
429
|
Register src,
|
381
430
|
int shift_value,
|
@@ -388,8 +437,7 @@ class MacroAssembler: public Assembler {
|
|
388
437
|
// Uses and clobbers rcx, so dst may not be rcx.
|
389
438
|
void SmiShiftLeft(Register dst,
|
390
439
|
Register src1,
|
391
|
-
Register src2
|
392
|
-
Label* on_not_smi_result);
|
440
|
+
Register src2);
|
393
441
|
// Shifts a smi value to the right, shifting in zero bits at the top, and
|
394
442
|
// returns the unsigned intepretation of the result if that is a smi.
|
395
443
|
// Uses and clobbers rcx, so dst may not be rcx.
|
@@ -430,11 +478,12 @@ class MacroAssembler: public Assembler {
|
|
430
478
|
|
431
479
|
// Basic Smi operations.
|
432
480
|
void Move(Register dst, Smi* source) {
|
433
|
-
|
481
|
+
LoadSmiConstant(dst, source);
|
434
482
|
}
|
435
483
|
|
436
484
|
void Move(const Operand& dst, Smi* source) {
|
437
|
-
|
485
|
+
Register constant = GetSmiConstant(source);
|
486
|
+
movq(dst, constant);
|
438
487
|
}
|
439
488
|
|
440
489
|
void Push(Smi* smi);
|
@@ -518,15 +567,21 @@ class MacroAssembler: public Assembler {
|
|
518
567
|
Register map,
|
519
568
|
Register instance_type);
|
520
569
|
|
521
|
-
// FCmp
|
570
|
+
// FCmp compares and pops the two values on top of the FPU stack.
|
571
|
+
// The flag results are similar to integer cmp, but requires unsigned
|
522
572
|
// jcc instructions (je, ja, jae, jb, jbe, je, and jz).
|
523
573
|
void FCmp();
|
524
574
|
|
525
575
|
// Abort execution if argument is not a number. Used in debug code.
|
526
|
-
void AbortIfNotNumber(Register object
|
576
|
+
void AbortIfNotNumber(Register object);
|
527
577
|
|
528
578
|
// Abort execution if argument is not a smi. Used in debug code.
|
529
|
-
void AbortIfNotSmi(Register object
|
579
|
+
void AbortIfNotSmi(Register object);
|
580
|
+
|
581
|
+
// Abort execution if argument is not the root value with the given index.
|
582
|
+
void AbortIfNotRootValue(Register src,
|
583
|
+
Heap::RootListIndex root_value_index,
|
584
|
+
const char* message);
|
530
585
|
|
531
586
|
// ---------------------------------------------------------------------------
|
532
587
|
// Exception handling
|
@@ -541,24 +596,6 @@ class MacroAssembler: public Assembler {
|
|
541
596
|
// ---------------------------------------------------------------------------
|
542
597
|
// Inline caching support
|
543
598
|
|
544
|
-
// Generates code that verifies that the maps of objects in the
|
545
|
-
// prototype chain of object hasn't changed since the code was
|
546
|
-
// generated and branches to the miss label if any map has. If
|
547
|
-
// necessary the function also generates code for security check
|
548
|
-
// in case of global object holders. The scratch and holder
|
549
|
-
// registers are always clobbered, but the object register is only
|
550
|
-
// clobbered if it the same as the holder register. The function
|
551
|
-
// returns a register containing the holder - either object_reg or
|
552
|
-
// holder_reg.
|
553
|
-
// The function can optionally (when save_at_depth !=
|
554
|
-
// kInvalidProtoDepth) save the object at the given depth by moving
|
555
|
-
// it to [rsp + kPointerSize].
|
556
|
-
Register CheckMaps(JSObject* object, Register object_reg,
|
557
|
-
JSObject* holder, Register holder_reg,
|
558
|
-
Register scratch,
|
559
|
-
int save_at_depth,
|
560
|
-
Label* miss);
|
561
|
-
|
562
599
|
// Generate code for checking access rights - used for security checks
|
563
600
|
// on access to global objects across environments. The holder register
|
564
601
|
// is left untouched, but the scratch register and kScratchRegister,
|
@@ -775,6 +812,14 @@ class MacroAssembler: public Assembler {
|
|
775
812
|
private:
|
776
813
|
bool generating_stub_;
|
777
814
|
bool allow_stub_calls_;
|
815
|
+
|
816
|
+
// Returns a register holding the smi value. The register MUST NOT be
|
817
|
+
// modified. It may be the "smi 1 constant" register.
|
818
|
+
Register GetSmiConstant(Smi* value);
|
819
|
+
|
820
|
+
// Moves the smi value to the destination register.
|
821
|
+
void LoadSmiConstant(Register dst, Smi* value);
|
822
|
+
|
778
823
|
// This handle will be patched with the code object on installation.
|
779
824
|
Handle<Object> code_object_;
|
780
825
|
|
@@ -26,6 +26,9 @@
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
|
+
|
30
|
+
#if defined(V8_TARGET_ARCH_X64)
|
31
|
+
|
29
32
|
#include "serialize.h"
|
30
33
|
#include "unicode.h"
|
31
34
|
#include "log.h"
|
@@ -188,8 +191,8 @@ void RegExpMacroAssemblerX64::CheckCharacterGT(uc16 limit, Label* on_greater) {
|
|
188
191
|
void RegExpMacroAssemblerX64::CheckAtStart(Label* on_at_start) {
|
189
192
|
Label not_at_start;
|
190
193
|
// Did we start the match at the start of the string at all?
|
191
|
-
__ cmpb(Operand(rbp,
|
192
|
-
BranchOrBacktrack(
|
194
|
+
__ cmpb(Operand(rbp, kStartIndex), Immediate(0));
|
195
|
+
BranchOrBacktrack(not_equal, ¬_at_start);
|
193
196
|
// If we did, are we still at the start of the input?
|
194
197
|
__ lea(rax, Operand(rsi, rdi, times_1, 0));
|
195
198
|
__ cmpq(rax, Operand(rbp, kInputStart));
|
@@ -200,8 +203,8 @@ void RegExpMacroAssemblerX64::CheckAtStart(Label* on_at_start) {
|
|
200
203
|
|
201
204
|
void RegExpMacroAssemblerX64::CheckNotAtStart(Label* on_not_at_start) {
|
202
205
|
// Did we start the match at the start of the string at all?
|
203
|
-
__ cmpb(Operand(rbp,
|
204
|
-
BranchOrBacktrack(
|
206
|
+
__ cmpb(Operand(rbp, kStartIndex), Immediate(0));
|
207
|
+
BranchOrBacktrack(not_equal, on_not_at_start);
|
205
208
|
// If we did, are we still at the start of the input?
|
206
209
|
__ lea(rax, Operand(rsi, rdi, times_1, 0));
|
207
210
|
__ cmpq(rax, Operand(rbp, kInputStart));
|
@@ -219,6 +222,15 @@ void RegExpMacroAssemblerX64::CheckCharacters(Vector<const uc16> str,
|
|
219
222
|
int cp_offset,
|
220
223
|
Label* on_failure,
|
221
224
|
bool check_end_of_string) {
|
225
|
+
#ifdef DEBUG
|
226
|
+
// If input is ASCII, don't even bother calling here if the string to
|
227
|
+
// match contains a non-ascii character.
|
228
|
+
if (mode_ == ASCII) {
|
229
|
+
for (int i = 0; i < str.length(); i++) {
|
230
|
+
ASSERT(str[i] <= String::kMaxAsciiCharCodeU);
|
231
|
+
}
|
232
|
+
}
|
233
|
+
#endif
|
222
234
|
int byte_length = str.length() * char_size();
|
223
235
|
int byte_offset = cp_offset * char_size();
|
224
236
|
if (check_end_of_string) {
|
@@ -232,16 +244,71 @@ void RegExpMacroAssemblerX64::CheckCharacters(Vector<const uc16> str,
|
|
232
244
|
on_failure = &backtrack_label_;
|
233
245
|
}
|
234
246
|
|
235
|
-
//
|
236
|
-
// at
|
237
|
-
|
247
|
+
// Do one character test first to minimize loading for the case that
|
248
|
+
// we don't match at all (loading more than one character introduces that
|
249
|
+
// chance of reading unaligned and reading across cache boundaries).
|
250
|
+
// If the first character matches, expect a larger chance of matching the
|
251
|
+
// string, and start loading more characters at a time.
|
252
|
+
if (mode_ == ASCII) {
|
253
|
+
__ cmpb(Operand(rsi, rdi, times_1, byte_offset),
|
254
|
+
Immediate(static_cast<int8_t>(str[0])));
|
255
|
+
} else {
|
256
|
+
// Don't use 16-bit immediate. The size changing prefix throws off
|
257
|
+
// pre-decoding.
|
258
|
+
__ movzxwl(rax,
|
259
|
+
Operand(rsi, rdi, times_1, byte_offset));
|
260
|
+
__ cmpl(rax, Immediate(static_cast<int32_t>(str[0])));
|
261
|
+
}
|
262
|
+
BranchOrBacktrack(not_equal, on_failure);
|
263
|
+
|
264
|
+
__ lea(rbx, Operand(rsi, rdi, times_1, 0));
|
265
|
+
for (int i = 1, n = str.length(); i < n; ) {
|
238
266
|
if (mode_ == ASCII) {
|
239
|
-
|
240
|
-
|
267
|
+
if (i + 8 <= n) {
|
268
|
+
uint64_t combined_chars =
|
269
|
+
(static_cast<uint64_t>(str[i + 0]) << 0) ||
|
270
|
+
(static_cast<uint64_t>(str[i + 1]) << 8) ||
|
271
|
+
(static_cast<uint64_t>(str[i + 2]) << 16) ||
|
272
|
+
(static_cast<uint64_t>(str[i + 3]) << 24) ||
|
273
|
+
(static_cast<uint64_t>(str[i + 4]) << 32) ||
|
274
|
+
(static_cast<uint64_t>(str[i + 5]) << 40) ||
|
275
|
+
(static_cast<uint64_t>(str[i + 6]) << 48) ||
|
276
|
+
(static_cast<uint64_t>(str[i + 7]) << 56);
|
277
|
+
__ movq(rax, combined_chars, RelocInfo::NONE);
|
278
|
+
__ cmpq(rax, Operand(rbx, byte_offset + i));
|
279
|
+
i += 8;
|
280
|
+
} else if (i + 4 <= n) {
|
281
|
+
uint32_t combined_chars =
|
282
|
+
(static_cast<uint32_t>(str[i + 0]) << 0) ||
|
283
|
+
(static_cast<uint32_t>(str[i + 1]) << 8) ||
|
284
|
+
(static_cast<uint32_t>(str[i + 2]) << 16) ||
|
285
|
+
(static_cast<uint32_t>(str[i + 3]) << 24);
|
286
|
+
__ cmpl(Operand(rbx, byte_offset + i), Immediate(combined_chars));
|
287
|
+
i += 4;
|
288
|
+
} else {
|
289
|
+
__ cmpb(Operand(rbx, byte_offset + i),
|
290
|
+
Immediate(static_cast<int8_t>(str[i])));
|
291
|
+
i++;
|
292
|
+
}
|
241
293
|
} else {
|
242
294
|
ASSERT(mode_ == UC16);
|
243
|
-
|
244
|
-
|
295
|
+
if (i + 4 <= n) {
|
296
|
+
uint64_t combined_chars = *reinterpret_cast<const uint64_t*>(&str[i]);
|
297
|
+
__ movq(rax, combined_chars, RelocInfo::NONE);
|
298
|
+
__ cmpq(rax,
|
299
|
+
Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)));
|
300
|
+
i += 4;
|
301
|
+
} else if (i + 2 <= n) {
|
302
|
+
uint32_t combined_chars = *reinterpret_cast<const uint32_t*>(&str[i]);
|
303
|
+
__ cmpl(Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)),
|
304
|
+
Immediate(combined_chars));
|
305
|
+
i += 2;
|
306
|
+
} else {
|
307
|
+
__ movzxwl(rax,
|
308
|
+
Operand(rsi, rdi, times_1, byte_offset + i * sizeof(uc16)));
|
309
|
+
__ cmpl(rax, Immediate(str[i]));
|
310
|
+
i++;
|
311
|
+
}
|
245
312
|
}
|
246
313
|
BranchOrBacktrack(not_equal, on_failure);
|
247
314
|
}
|
@@ -671,7 +738,6 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
671
738
|
__ push(rbx); // Callee-save
|
672
739
|
#endif
|
673
740
|
|
674
|
-
__ push(Immediate(0)); // Make room for "input start - 1" constant.
|
675
741
|
__ push(Immediate(0)); // Make room for "at start" constant.
|
676
742
|
|
677
743
|
// Check if we have space on the stack for registers.
|
@@ -724,14 +790,6 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
724
790
|
// position registers.
|
725
791
|
__ movq(Operand(rbp, kInputStartMinusOne), rax);
|
726
792
|
|
727
|
-
// Determine whether the start index is zero, that is at the start of the
|
728
|
-
// string, and store that value in a local variable.
|
729
|
-
__ movq(rbx, Operand(rbp, kStartIndex));
|
730
|
-
__ xor_(rcx, rcx); // setcc only operates on cl (lower byte of rcx).
|
731
|
-
__ testq(rbx, rbx);
|
732
|
-
__ setcc(zero, rcx); // 1 if 0 (start of string), 0 if positive.
|
733
|
-
__ movq(Operand(rbp, kAtStart), rcx);
|
734
|
-
|
735
793
|
if (num_saved_registers_ > 0) {
|
736
794
|
// Fill saved registers with initial value = start offset - 1
|
737
795
|
// Fill in stack push order, to avoid accessing across an unwritten
|
@@ -761,8 +819,8 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
761
819
|
__ Move(code_object_pointer(), masm_->CodeObject());
|
762
820
|
// Load previous char as initial value of current-character.
|
763
821
|
Label at_start;
|
764
|
-
__ cmpb(Operand(rbp,
|
765
|
-
__ j(
|
822
|
+
__ cmpb(Operand(rbp, kStartIndex), Immediate(0));
|
823
|
+
__ j(equal, &at_start);
|
766
824
|
LoadCurrentCharacterUnchecked(-1, 1); // Load previous char.
|
767
825
|
__ jmp(&start_label_);
|
768
826
|
__ bind(&at_start);
|
@@ -902,7 +960,6 @@ Handle<Object> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
|
|
902
960
|
CodeDesc code_desc;
|
903
961
|
masm_->GetCode(&code_desc);
|
904
962
|
Handle<Code> code = Factory::NewCode(code_desc,
|
905
|
-
NULL,
|
906
963
|
Code::ComputeFlags(Code::REGEXP),
|
907
964
|
masm_->CodeObject());
|
908
965
|
PROFILE(RegExpCodeCreateEvent(*code, *source));
|
@@ -1313,3 +1370,5 @@ void RegExpMacroAssemblerX64::LoadCurrentCharacterUnchecked(int cp_offset,
|
|
1313
1370
|
#endif // V8_INTERPRETED_REGEXP
|
1314
1371
|
|
1315
1372
|
}} // namespace v8::internal
|
1373
|
+
|
1374
|
+
#endif // V8_TARGET_ARCH_X64
|
@@ -173,10 +173,9 @@ class RegExpMacroAssemblerX64: public NativeRegExpMacroAssembler {
|
|
173
173
|
// the frame in GetCode.
|
174
174
|
static const int kInputStartMinusOne =
|
175
175
|
kLastCalleeSaveRegister - kPointerSize;
|
176
|
-
static const int kAtStart = kInputStartMinusOne - kPointerSize;
|
177
176
|
|
178
177
|
// First register address. Following registers are below it on the stack.
|
179
|
-
static const int kRegisterZero =
|
178
|
+
static const int kRegisterZero = kInputStartMinusOne - kPointerSize;
|
180
179
|
|
181
180
|
// Initial size of code buffer.
|
182
181
|
static const size_t kRegExpCodeSize = 1024;
|
@@ -38,7 +38,8 @@ namespace internal {
|
|
38
38
|
|
39
39
|
bool RegisterAllocator::IsReserved(Register reg) {
|
40
40
|
return reg.is(rsp) || reg.is(rbp) || reg.is(rsi) ||
|
41
|
-
reg.is(kScratchRegister) || reg.is(kRootRegister)
|
41
|
+
reg.is(kScratchRegister) || reg.is(kRootRegister) ||
|
42
|
+
reg.is(kSmiConstantRegister);
|
42
43
|
}
|
43
44
|
|
44
45
|
|
@@ -58,11 +59,11 @@ int RegisterAllocator::ToNumber(Register reg) {
|
|
58
59
|
5, // r8
|
59
60
|
6, // r9
|
60
61
|
-1, // r10 Scratch register.
|
61
|
-
|
62
|
-
|
62
|
+
8, // r11
|
63
|
+
9, // r12
|
63
64
|
-1, // r13 Roots array. This is callee saved.
|
64
65
|
7, // r14
|
65
|
-
|
66
|
+
-1 // r15 Smi constant register.
|
66
67
|
};
|
67
68
|
return kNumbers[reg.code()];
|
68
69
|
}
|
@@ -71,7 +72,7 @@ int RegisterAllocator::ToNumber(Register reg) {
|
|
71
72
|
Register RegisterAllocator::ToRegister(int num) {
|
72
73
|
ASSERT(num >= 0 && num < kNumRegisters);
|
73
74
|
const Register kRegisters[] =
|
74
|
-
{ rax, rbx, rcx, rdx, rdi, r8, r9, r14,
|
75
|
+
{ rax, rbx, rcx, rdx, rdi, r8, r9, r14, r11, r12 };
|
75
76
|
return kRegisters[num];
|
76
77
|
}
|
77
78
|
|