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
@@ -106,6 +106,18 @@ class CompressionHelper;
|
|
106
106
|
V(CALL_MISS_TAG, "CallMiss", "cm") \
|
107
107
|
V(CALL_NORMAL_TAG, "CallNormal", "cn") \
|
108
108
|
V(CALL_PRE_MONOMORPHIC_TAG, "CallPreMonomorphic", "cpm") \
|
109
|
+
V(KEYED_CALL_DEBUG_BREAK_TAG, "KeyedCallDebugBreak", "kcdb") \
|
110
|
+
V(KEYED_CALL_DEBUG_PREPARE_STEP_IN_TAG, \
|
111
|
+
"KeyedCallDebugPrepareStepIn", \
|
112
|
+
"kcdbsi") \
|
113
|
+
V(KEYED_CALL_IC_TAG, "KeyedCallIC", "kcic") \
|
114
|
+
V(KEYED_CALL_INITIALIZE_TAG, "KeyedCallInitialize", "kci") \
|
115
|
+
V(KEYED_CALL_MEGAMORPHIC_TAG, "KeyedCallMegamorphic", "kcmm") \
|
116
|
+
V(KEYED_CALL_MISS_TAG, "KeyedCallMiss", "kcm") \
|
117
|
+
V(KEYED_CALL_NORMAL_TAG, "KeyedCallNormal", "kcn") \
|
118
|
+
V(KEYED_CALL_PRE_MONOMORPHIC_TAG, \
|
119
|
+
"KeyedCallPreMonomorphic", \
|
120
|
+
"kcpm") \
|
109
121
|
V(CALLBACK_TAG, "Callback", "cb") \
|
110
122
|
V(EVAL_TAG, "Eval", "e") \
|
111
123
|
V(FUNCTION_TAG, "Function", "f") \
|
@@ -50,17 +50,6 @@ enum HandlerType {
|
|
50
50
|
};
|
51
51
|
|
52
52
|
|
53
|
-
// Flags used for the AllocateInNewSpace functions.
|
54
|
-
enum AllocationFlags {
|
55
|
-
// No special flags.
|
56
|
-
NO_ALLOCATION_FLAGS = 0,
|
57
|
-
// Return the pointer to the allocated already tagged as a heap object.
|
58
|
-
TAG_OBJECT = 1 << 0,
|
59
|
-
// The content of the result register already contains the allocation top in
|
60
|
-
// new space.
|
61
|
-
RESULT_CONTAINS_TOP = 1 << 1
|
62
|
-
};
|
63
|
-
|
64
53
|
// Invalid depth in prototype chain.
|
65
54
|
const int kInvalidProtoDepth = -1;
|
66
55
|
|
@@ -79,13 +68,8 @@ const int kInvalidProtoDepth = -1;
|
|
79
68
|
#elif V8_TARGET_ARCH_ARM
|
80
69
|
#include "arm/constants-arm.h"
|
81
70
|
#include "assembler.h"
|
82
|
-
#ifdef V8_ARM_VARIANT_THUMB
|
83
|
-
#include "arm/assembler-thumb2.h"
|
84
|
-
#include "arm/assembler-thumb2-inl.h"
|
85
|
-
#else
|
86
71
|
#include "arm/assembler-arm.h"
|
87
72
|
#include "arm/assembler-arm-inl.h"
|
88
|
-
#endif
|
89
73
|
#include "code.h" // must be after assembler_*.h
|
90
74
|
#include "arm/macro-assembler-arm.h"
|
91
75
|
#elif V8_TARGET_ARCH_MIPS
|
@@ -112,9 +112,16 @@ macro IS_GLOBAL(arg) = (%_ClassOf(arg) === 'global');
|
|
112
112
|
macro IS_UNDETECTABLE(arg) = (%_IsUndetectableObject(arg));
|
113
113
|
macro FLOOR(arg) = $floor(arg);
|
114
114
|
|
115
|
+
# Macro for ECMAScript 5 queries of the type:
|
116
|
+
# "Type(O) is object."
|
117
|
+
# This is the same as being either a function or an object in V8 terminology.
|
118
|
+
# In addition, an undetectable object is also included by this.
|
119
|
+
macro IS_SPEC_OBJECT(arg) = (%_IsSpecObject(arg));
|
120
|
+
|
115
121
|
# Inline macros. Use %IS_VAR to make sure arg is evaluated only once.
|
116
122
|
macro NUMBER_IS_NAN(arg) = (!%_IsSmi(%IS_VAR(arg)) && !(arg == arg));
|
117
123
|
macro TO_INTEGER(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : ToInteger(arg));
|
124
|
+
macro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero(ToNumber(arg)));
|
118
125
|
macro TO_INT32(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : (arg >> 0));
|
119
126
|
macro TO_UINT32(arg) = (arg >>> 0);
|
120
127
|
macro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString(arg));
|
@@ -140,11 +147,15 @@ macro DATE_VALUE(arg) = (%_ClassOf(arg) === 'Date' ? %_ValueOf(arg) : ThrowDateT
|
|
140
147
|
macro DAY(time) = ($floor(time / 86400000));
|
141
148
|
macro MONTH_FROM_TIME(time) = (MonthFromTime(time));
|
142
149
|
macro DATE_FROM_TIME(time) = (DateFromTime(time));
|
150
|
+
macro NAN_OR_DATE_FROM_TIME(time) = (NUMBER_IS_NAN(time) ? time : DATE_FROM_TIME(time));
|
143
151
|
macro YEAR_FROM_TIME(time) = (YearFromTime(time));
|
144
152
|
macro HOUR_FROM_TIME(time) = (Modulo($floor(time / 3600000), 24));
|
145
153
|
macro MIN_FROM_TIME(time) = (Modulo($floor(time / 60000), 60));
|
154
|
+
macro NAN_OR_MIN_FROM_TIME(time) = (NUMBER_IS_NAN(time) ? time : MIN_FROM_TIME(time));
|
146
155
|
macro SEC_FROM_TIME(time) = (Modulo($floor(time / 1000), 60));
|
156
|
+
macro NAN_OR_SEC_FROM_TIME(time) = (NUMBER_IS_NAN(time) ? time : SEC_FROM_TIME(time));
|
147
157
|
macro MS_FROM_TIME(time) = (Modulo(time, 1000));
|
158
|
+
macro NAN_OR_MS_FROM_TIME(time) = (NUMBER_IS_NAN(time) ? time : MS_FROM_TIME(time));
|
148
159
|
|
149
160
|
# Last input and last subject of regexp matches.
|
150
161
|
macro LAST_SUBJECT(array) = ((array)[1]);
|
@@ -154,3 +165,13 @@ macro LAST_INPUT(array) = ((array)[2]);
|
|
154
165
|
macro CAPTURE(index) = (3 + (index));
|
155
166
|
const CAPTURE0 = 3;
|
156
167
|
const CAPTURE1 = 4;
|
168
|
+
|
169
|
+
# PropertyDescriptor return value indices - must match
|
170
|
+
# PropertyDescriptorIndices in runtime.cc.
|
171
|
+
const IS_ACCESSOR_INDEX = 0;
|
172
|
+
const VALUE_INDEX = 1;
|
173
|
+
const GETTER_INDEX = 2;
|
174
|
+
const SETTER_INDEX = 3;
|
175
|
+
const WRITABLE_INDEX = 4;
|
176
|
+
const ENUMERABLE_INDEX = 5;
|
177
|
+
const CONFIGURABLE_INDEX = 6;
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
30
|
#include "execution.h"
|
31
|
+
#include "heap-profiler.h"
|
31
32
|
#include "global-handles.h"
|
32
33
|
#include "ic-inl.h"
|
33
34
|
#include "mark-compact.h"
|
@@ -78,14 +79,12 @@ void MarkCompactCollector::CollectGarbage() {
|
|
78
79
|
SweepLargeObjectSpace();
|
79
80
|
|
80
81
|
if (IsCompacting()) {
|
82
|
+
GCTracer::Scope gc_scope(tracer_, GCTracer::Scope::MC_COMPACT);
|
81
83
|
EncodeForwardingAddresses();
|
82
84
|
|
83
85
|
UpdatePointers();
|
84
86
|
|
85
87
|
RelocateObjects();
|
86
|
-
|
87
|
-
RebuildRSets();
|
88
|
-
|
89
88
|
} else {
|
90
89
|
SweepSpaces();
|
91
90
|
}
|
@@ -120,14 +119,6 @@ void MarkCompactCollector::Prepare(GCTracer* tracer) {
|
|
120
119
|
compacting_collection_ = false;
|
121
120
|
if (FLAG_collect_maps) CreateBackPointers();
|
122
121
|
|
123
|
-
#ifdef DEBUG
|
124
|
-
if (compacting_collection_) {
|
125
|
-
// We will write bookkeeping information to the remembered set area
|
126
|
-
// starting now.
|
127
|
-
Page::set_rset_state(Page::NOT_IN_USE);
|
128
|
-
}
|
129
|
-
#endif
|
130
|
-
|
131
122
|
PagedSpaces spaces;
|
132
123
|
for (PagedSpace* space = spaces.next();
|
133
124
|
space != NULL; space = spaces.next()) {
|
@@ -149,7 +140,7 @@ void MarkCompactCollector::Prepare(GCTracer* tracer) {
|
|
149
140
|
|
150
141
|
void MarkCompactCollector::Finish() {
|
151
142
|
#ifdef DEBUG
|
152
|
-
ASSERT(state_ == SWEEP_SPACES || state_ ==
|
143
|
+
ASSERT(state_ == SWEEP_SPACES || state_ == RELOCATE_OBJECTS);
|
153
144
|
state_ = IDLE;
|
154
145
|
#endif
|
155
146
|
// The stub cache is not traversed during GC; clear the cache to
|
@@ -243,8 +234,8 @@ static inline HeapObject* ShortCircuitConsString(Object** p) {
|
|
243
234
|
}
|
244
235
|
|
245
236
|
// Since we don't have the object's start, it is impossible to update the
|
246
|
-
//
|
247
|
-
// substring when
|
237
|
+
// page dirty marks. Therefore, we only replace the string with its left
|
238
|
+
// substring when page dirty marks do not change.
|
248
239
|
Object* first = reinterpret_cast<ConsString*>(object)->unchecked_first();
|
249
240
|
if (!Heap::InNewSpace(object) && Heap::InNewSpace(first)) return object;
|
250
241
|
|
@@ -283,8 +274,10 @@ class MarkingVisitor : public ObjectVisitor {
|
|
283
274
|
}
|
284
275
|
|
285
276
|
void VisitDebugTarget(RelocInfo* rinfo) {
|
286
|
-
ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
287
|
-
|
277
|
+
ASSERT((RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
278
|
+
rinfo->IsPatchedReturnSequence()) ||
|
279
|
+
(RelocInfo::IsDebugBreakSlot(rinfo->rmode()) &&
|
280
|
+
rinfo->IsPatchedDebugBreakSlotSequence()));
|
288
281
|
HeapObject* code = Code::GetCodeFromTargetAddress(rinfo->call_address());
|
289
282
|
MarkCompactCollector::MarkObject(code);
|
290
283
|
}
|
@@ -433,8 +426,10 @@ void MarkCompactCollector::MarkMapContents(Map* map) {
|
|
433
426
|
// Since the descriptor array has been marked already, it is fine
|
434
427
|
// that one of these fields contains a pointer to it.
|
435
428
|
MarkingVisitor visitor; // Has no state or contents.
|
436
|
-
visitor.VisitPointers(HeapObject::RawField(map,
|
437
|
-
|
429
|
+
visitor.VisitPointers(HeapObject::RawField(map,
|
430
|
+
Map::kPointerFieldsBeginOffset),
|
431
|
+
HeapObject::RawField(map,
|
432
|
+
Map::kPointerFieldsEndOffset));
|
438
433
|
}
|
439
434
|
|
440
435
|
|
@@ -678,6 +673,7 @@ void MarkCompactCollector::ProcessObjectGroups(MarkingVisitor* visitor) {
|
|
678
673
|
|
679
674
|
|
680
675
|
void MarkCompactCollector::MarkLiveObjects() {
|
676
|
+
GCTracer::Scope gc_scope(tracer_, GCTracer::Scope::MC_MARK);
|
681
677
|
#ifdef DEBUG
|
682
678
|
ASSERT(state_ == PREPARE_GC);
|
683
679
|
state_ = MARK_LIVE_OBJECTS;
|
@@ -774,6 +770,7 @@ void MarkCompactCollector::SweepLargeObjectSpace() {
|
|
774
770
|
Heap::lo_space()->FreeUnmarkedObjects();
|
775
771
|
}
|
776
772
|
|
773
|
+
|
777
774
|
// Safe to use during marking phase only.
|
778
775
|
bool MarkCompactCollector::SafeIsMap(HeapObject* object) {
|
779
776
|
MapWord metamap = object->map_word();
|
@@ -781,6 +778,7 @@ bool MarkCompactCollector::SafeIsMap(HeapObject* object) {
|
|
781
778
|
return metamap.ToMap()->instance_type() == MAP_TYPE;
|
782
779
|
}
|
783
780
|
|
781
|
+
|
784
782
|
void MarkCompactCollector::ClearNonLiveTransitions() {
|
785
783
|
HeapObjectIterator map_iterator(Heap::map_space(), &CountMarkedCallback);
|
786
784
|
// Iterate over the map space, setting map transitions that go from
|
@@ -1076,13 +1074,18 @@ void MarkCompactCollector::EncodeForwardingAddressesInPagedSpace(
|
|
1076
1074
|
// first word of object without any encoding. If object is dead we are writing
|
1077
1075
|
// NULL as a forwarding address.
|
1078
1076
|
// The second pass updates pointers to new space in all spaces. It is possible
|
1079
|
-
// to encounter pointers to dead objects during traversal of
|
1080
|
-
//
|
1081
|
-
//
|
1082
|
-
static void MigrateObject(Address dst,
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1077
|
+
// to encounter pointers to dead objects during traversal of dirty regions we
|
1078
|
+
// should clear them to avoid encountering them during next dirty regions
|
1079
|
+
// iteration.
|
1080
|
+
static void MigrateObject(Address dst,
|
1081
|
+
Address src,
|
1082
|
+
int size,
|
1083
|
+
bool to_old_space) {
|
1084
|
+
if (to_old_space) {
|
1085
|
+
Heap::CopyBlockToOldSpaceAndUpdateRegionMarks(dst, src, size);
|
1086
|
+
} else {
|
1087
|
+
Heap::CopyBlock(dst, src, size);
|
1088
|
+
}
|
1086
1089
|
|
1087
1090
|
Memory::Address_at(src) = dst;
|
1088
1091
|
}
|
@@ -1108,8 +1111,10 @@ class PointersToNewGenUpdatingVisitor: public ObjectVisitor {
|
|
1108
1111
|
}
|
1109
1112
|
|
1110
1113
|
void VisitDebugTarget(RelocInfo* rinfo) {
|
1111
|
-
ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
1112
|
-
|
1114
|
+
ASSERT((RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
1115
|
+
rinfo->IsPatchedReturnSequence()) ||
|
1116
|
+
(RelocInfo::IsDebugBreakSlot(rinfo->rmode()) &&
|
1117
|
+
rinfo->IsPatchedDebugBreakSlotSequence()));
|
1113
1118
|
Object* target = Code::GetCodeFromTargetAddress(rinfo->call_address());
|
1114
1119
|
VisitPointer(&target);
|
1115
1120
|
rinfo->set_call_address(Code::cast(target)->instruction_start());
|
@@ -1129,6 +1134,7 @@ class PointersToNewGenUpdatingVisitor: public ObjectVisitor {
|
|
1129
1134
|
}
|
1130
1135
|
};
|
1131
1136
|
|
1137
|
+
|
1132
1138
|
// Visitor for updating pointers from live objects in old spaces to new space.
|
1133
1139
|
// It can encounter pointers to dead objects in new space when traversing map
|
1134
1140
|
// space (see comment for MigrateObject).
|
@@ -1140,10 +1146,13 @@ static void UpdatePointerToNewGen(HeapObject** p) {
|
|
1140
1146
|
|
1141
1147
|
Address new_addr = Memory::Address_at(old_addr);
|
1142
1148
|
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1149
|
+
if (new_addr == NULL) {
|
1150
|
+
// We encountered pointer to a dead object. Clear it so we will
|
1151
|
+
// not visit it again during next iteration of dirty regions.
|
1152
|
+
*p = NULL;
|
1153
|
+
} else {
|
1154
|
+
*p = HeapObject::FromAddress(new_addr);
|
1155
|
+
}
|
1147
1156
|
}
|
1148
1157
|
|
1149
1158
|
|
@@ -1161,8 +1170,9 @@ static bool TryPromoteObject(HeapObject* object, int object_size) {
|
|
1161
1170
|
result = Heap::lo_space()->AllocateRawFixedArray(object_size);
|
1162
1171
|
if (!result->IsFailure()) {
|
1163
1172
|
HeapObject* target = HeapObject::cast(result);
|
1164
|
-
MigrateObject(target->address(), object->address(), object_size);
|
1165
|
-
|
1173
|
+
MigrateObject(target->address(), object->address(), object_size, true);
|
1174
|
+
MarkCompactCollector::tracer()->
|
1175
|
+
increment_promoted_objects_size(object_size);
|
1166
1176
|
return true;
|
1167
1177
|
}
|
1168
1178
|
} else {
|
@@ -1173,10 +1183,12 @@ static bool TryPromoteObject(HeapObject* object, int object_size) {
|
|
1173
1183
|
result = target_space->AllocateRaw(object_size);
|
1174
1184
|
if (!result->IsFailure()) {
|
1175
1185
|
HeapObject* target = HeapObject::cast(result);
|
1176
|
-
MigrateObject(target->address(),
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1186
|
+
MigrateObject(target->address(),
|
1187
|
+
object->address(),
|
1188
|
+
object_size,
|
1189
|
+
target_space == Heap::old_pointer_space());
|
1190
|
+
MarkCompactCollector::tracer()->
|
1191
|
+
increment_promoted_objects_size(object_size);
|
1180
1192
|
return true;
|
1181
1193
|
}
|
1182
1194
|
}
|
@@ -1216,14 +1228,16 @@ static void SweepNewSpace(NewSpace* space) {
|
|
1216
1228
|
continue;
|
1217
1229
|
}
|
1218
1230
|
|
1219
|
-
// Promotion
|
1220
|
-
// Copy the content of the object.
|
1231
|
+
// Promotion failed. Just migrate object to another semispace.
|
1221
1232
|
Object* target = space->AllocateRaw(size);
|
1222
1233
|
|
1223
1234
|
// Allocation cannot fail at this point: semispaces are of equal size.
|
1224
1235
|
ASSERT(!target->IsFailure());
|
1225
1236
|
|
1226
|
-
MigrateObject(HeapObject::cast(target)->address(),
|
1237
|
+
MigrateObject(HeapObject::cast(target)->address(),
|
1238
|
+
current,
|
1239
|
+
size,
|
1240
|
+
false);
|
1227
1241
|
} else {
|
1228
1242
|
size = object->Size();
|
1229
1243
|
Memory::Address_at(current) = NULL;
|
@@ -1249,9 +1263,12 @@ static void SweepNewSpace(NewSpace* space) {
|
|
1249
1263
|
Heap::IterateRoots(&updating_visitor, VISIT_ALL_IN_SCAVENGE);
|
1250
1264
|
|
1251
1265
|
// Update pointers in old spaces.
|
1252
|
-
Heap::
|
1253
|
-
|
1254
|
-
|
1266
|
+
Heap::IterateDirtyRegions(Heap::old_pointer_space(),
|
1267
|
+
&Heap::IteratePointersInDirtyRegion,
|
1268
|
+
&UpdatePointerToNewGen,
|
1269
|
+
Heap::WATERMARK_SHOULD_BE_VALID);
|
1270
|
+
|
1271
|
+
Heap::lo_space()->IterateDirtyRegions(&UpdatePointerToNewGen);
|
1255
1272
|
|
1256
1273
|
// Update pointers from cells.
|
1257
1274
|
HeapObjectIterator cell_iterator(Heap::cell_space());
|
@@ -1317,7 +1334,10 @@ static void SweepSpace(PagedSpace* space, DeallocateFunction dealloc) {
|
|
1317
1334
|
MarkCompactCollector::tracer()->decrement_marked_count();
|
1318
1335
|
|
1319
1336
|
if (!is_previous_alive) { // Transition from free to live.
|
1320
|
-
dealloc(free_start,
|
1337
|
+
dealloc(free_start,
|
1338
|
+
static_cast<int>(current - free_start),
|
1339
|
+
true,
|
1340
|
+
false);
|
1321
1341
|
is_previous_alive = true;
|
1322
1342
|
}
|
1323
1343
|
} else {
|
@@ -1347,7 +1367,7 @@ static void SweepSpace(PagedSpace* space, DeallocateFunction dealloc) {
|
|
1347
1367
|
// without putting anything into free list.
|
1348
1368
|
int size_in_bytes = static_cast<int>(p->AllocationTop() - free_start);
|
1349
1369
|
if (size_in_bytes > 0) {
|
1350
|
-
dealloc(free_start, size_in_bytes, false);
|
1370
|
+
dealloc(free_start, size_in_bytes, false, true);
|
1351
1371
|
}
|
1352
1372
|
}
|
1353
1373
|
} else {
|
@@ -1361,7 +1381,9 @@ static void SweepSpace(PagedSpace* space, DeallocateFunction dealloc) {
|
|
1361
1381
|
// If there is a free ending area on one of the previous pages we have
|
1362
1382
|
// deallocate that area and put it on the free list.
|
1363
1383
|
if (last_free_size > 0) {
|
1364
|
-
|
1384
|
+
Page::FromAddress(last_free_start)->
|
1385
|
+
SetAllocationWatermark(last_free_start);
|
1386
|
+
dealloc(last_free_start, last_free_size, true, true);
|
1365
1387
|
last_free_start = NULL;
|
1366
1388
|
last_free_size = 0;
|
1367
1389
|
}
|
@@ -1392,7 +1414,7 @@ static void SweepSpace(PagedSpace* space, DeallocateFunction dealloc) {
|
|
1392
1414
|
// There was a free ending area on the previous page.
|
1393
1415
|
// Deallocate it without putting it into freelist and move allocation
|
1394
1416
|
// top to the beginning of this free area.
|
1395
|
-
dealloc(last_free_start, last_free_size, false);
|
1417
|
+
dealloc(last_free_start, last_free_size, false, true);
|
1396
1418
|
new_allocation_top = last_free_start;
|
1397
1419
|
}
|
1398
1420
|
|
@@ -1415,34 +1437,36 @@ static void SweepSpace(PagedSpace* space, DeallocateFunction dealloc) {
|
|
1415
1437
|
|
1416
1438
|
void MarkCompactCollector::DeallocateOldPointerBlock(Address start,
|
1417
1439
|
int size_in_bytes,
|
1418
|
-
bool add_to_freelist
|
1419
|
-
|
1440
|
+
bool add_to_freelist,
|
1441
|
+
bool last_on_page) {
|
1420
1442
|
Heap::old_pointer_space()->Free(start, size_in_bytes, add_to_freelist);
|
1421
1443
|
}
|
1422
1444
|
|
1423
1445
|
|
1424
1446
|
void MarkCompactCollector::DeallocateOldDataBlock(Address start,
|
1425
1447
|
int size_in_bytes,
|
1426
|
-
bool add_to_freelist
|
1448
|
+
bool add_to_freelist,
|
1449
|
+
bool last_on_page) {
|
1427
1450
|
Heap::old_data_space()->Free(start, size_in_bytes, add_to_freelist);
|
1428
1451
|
}
|
1429
1452
|
|
1430
1453
|
|
1431
1454
|
void MarkCompactCollector::DeallocateCodeBlock(Address start,
|
1432
1455
|
int size_in_bytes,
|
1433
|
-
bool add_to_freelist
|
1456
|
+
bool add_to_freelist,
|
1457
|
+
bool last_on_page) {
|
1434
1458
|
Heap::code_space()->Free(start, size_in_bytes, add_to_freelist);
|
1435
1459
|
}
|
1436
1460
|
|
1437
1461
|
|
1438
1462
|
void MarkCompactCollector::DeallocateMapBlock(Address start,
|
1439
1463
|
int size_in_bytes,
|
1440
|
-
bool add_to_freelist
|
1464
|
+
bool add_to_freelist,
|
1465
|
+
bool last_on_page) {
|
1441
1466
|
// Objects in map space are assumed to have size Map::kSize and a
|
1442
1467
|
// valid map in their first word. Thus, we break the free block up into
|
1443
1468
|
// chunks and free them separately.
|
1444
1469
|
ASSERT(size_in_bytes % Map::kSize == 0);
|
1445
|
-
Heap::ClearRSetRange(start, size_in_bytes);
|
1446
1470
|
Address end = start + size_in_bytes;
|
1447
1471
|
for (Address a = start; a < end; a += Map::kSize) {
|
1448
1472
|
Heap::map_space()->Free(a, add_to_freelist);
|
@@ -1452,13 +1476,13 @@ void MarkCompactCollector::DeallocateMapBlock(Address start,
|
|
1452
1476
|
|
1453
1477
|
void MarkCompactCollector::DeallocateCellBlock(Address start,
|
1454
1478
|
int size_in_bytes,
|
1455
|
-
bool add_to_freelist
|
1479
|
+
bool add_to_freelist,
|
1480
|
+
bool last_on_page) {
|
1456
1481
|
// Free-list elements in cell space are assumed to have a fixed size.
|
1457
1482
|
// We break the free block into chunks and add them to the free list
|
1458
1483
|
// individually.
|
1459
1484
|
int size = Heap::cell_space()->object_size_in_bytes();
|
1460
1485
|
ASSERT(size_in_bytes % size == 0);
|
1461
|
-
Heap::ClearRSetRange(start, size_in_bytes);
|
1462
1486
|
Address end = start + size_in_bytes;
|
1463
1487
|
for (Address a = start; a < end; a += size) {
|
1464
1488
|
Heap::cell_space()->Free(a, add_to_freelist);
|
@@ -1557,20 +1581,6 @@ class MapCompact {
|
|
1557
1581
|
GlobalHandles::IterateWeakRoots(&map_updating_visitor_);
|
1558
1582
|
}
|
1559
1583
|
|
1560
|
-
void FinishMapSpace() {
|
1561
|
-
// Iterate through to space and finish move.
|
1562
|
-
MapIterator it;
|
1563
|
-
HeapObject* o = it.next();
|
1564
|
-
for (; o != first_map_to_evacuate_; o = it.next()) {
|
1565
|
-
ASSERT(o != NULL);
|
1566
|
-
Map* map = reinterpret_cast<Map*>(o);
|
1567
|
-
ASSERT(!map->IsMarked());
|
1568
|
-
ASSERT(!map->IsOverflowed());
|
1569
|
-
ASSERT(map->IsMap());
|
1570
|
-
Heap::UpdateRSet(map);
|
1571
|
-
}
|
1572
|
-
}
|
1573
|
-
|
1574
1584
|
void UpdateMapPointersInPagedSpace(PagedSpace* space) {
|
1575
1585
|
ASSERT(space != Heap::map_space());
|
1576
1586
|
|
@@ -1663,9 +1673,9 @@ class MapCompact {
|
|
1663
1673
|
|
1664
1674
|
ASSERT(Map::kSize % 4 == 0);
|
1665
1675
|
|
1666
|
-
Heap::
|
1667
|
-
|
1668
|
-
|
1676
|
+
Heap::CopyBlockToOldSpaceAndUpdateRegionMarks(vacant_map->address(),
|
1677
|
+
map_to_evacuate->address(),
|
1678
|
+
Map::kSize);
|
1669
1679
|
|
1670
1680
|
ASSERT(vacant_map->IsMap()); // Due to memcpy above.
|
1671
1681
|
|
@@ -1735,6 +1745,8 @@ MapCompact::MapUpdatingVisitor MapCompact::map_updating_visitor_;
|
|
1735
1745
|
|
1736
1746
|
|
1737
1747
|
void MarkCompactCollector::SweepSpaces() {
|
1748
|
+
GCTracer::Scope gc_scope(tracer_, GCTracer::Scope::MC_SWEEP);
|
1749
|
+
|
1738
1750
|
ASSERT(state_ == SWEEP_SPACES);
|
1739
1751
|
ASSERT(!IsCompacting());
|
1740
1752
|
// Noncompacting collections simply sweep the spaces to clear the mark
|
@@ -1748,6 +1760,12 @@ void MarkCompactCollector::SweepSpaces() {
|
|
1748
1760
|
SweepSpace(Heap::cell_space(), &DeallocateCellBlock);
|
1749
1761
|
SweepNewSpace(Heap::new_space());
|
1750
1762
|
SweepSpace(Heap::map_space(), &DeallocateMapBlock);
|
1763
|
+
|
1764
|
+
Heap::IterateDirtyRegions(Heap::map_space(),
|
1765
|
+
&Heap::IteratePointersInDirtyMapsRegion,
|
1766
|
+
&UpdatePointerToNewGen,
|
1767
|
+
Heap::WATERMARK_SHOULD_BE_VALID);
|
1768
|
+
|
1751
1769
|
int live_maps_size = Heap::map_space()->Size();
|
1752
1770
|
int live_maps = live_maps_size / Map::kSize;
|
1753
1771
|
ASSERT(live_map_objects_size_ == live_maps_size);
|
@@ -1758,7 +1776,6 @@ void MarkCompactCollector::SweepSpaces() {
|
|
1758
1776
|
map_compact.CompactMaps();
|
1759
1777
|
map_compact.UpdateMapPointersInRoots();
|
1760
1778
|
|
1761
|
-
map_compact.FinishMapSpace();
|
1762
1779
|
PagedSpaces spaces;
|
1763
1780
|
for (PagedSpace* space = spaces.next();
|
1764
1781
|
space != NULL; space = spaces.next()) {
|
@@ -1846,8 +1863,10 @@ class UpdatingVisitor: public ObjectVisitor {
|
|
1846
1863
|
}
|
1847
1864
|
|
1848
1865
|
void VisitDebugTarget(RelocInfo* rinfo) {
|
1849
|
-
ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
1850
|
-
|
1866
|
+
ASSERT((RelocInfo::IsJSReturn(rinfo->rmode()) &&
|
1867
|
+
rinfo->IsPatchedReturnSequence()) ||
|
1868
|
+
(RelocInfo::IsDebugBreakSlot(rinfo->rmode()) &&
|
1869
|
+
rinfo->IsPatchedDebugBreakSlotSequence()));
|
1851
1870
|
Object* target = Code::GetCodeFromTargetAddress(rinfo->call_address());
|
1852
1871
|
VisitPointer(&target);
|
1853
1872
|
rinfo->set_call_address(
|
@@ -2031,9 +2050,8 @@ Address MarkCompactCollector::GetForwardingAddressInOldSpace(HeapObject* obj) {
|
|
2031
2050
|
Page* forwarded_page = Page::FromAddress(first_forwarded);
|
2032
2051
|
int forwarded_offset = forwarded_page->Offset(first_forwarded);
|
2033
2052
|
|
2034
|
-
// Find end of allocation
|
2035
|
-
|
2036
|
-
int mc_top_offset = forwarded_page->Offset(mc_top);
|
2053
|
+
// Find end of allocation in the page of first_forwarded.
|
2054
|
+
int mc_top_offset = forwarded_page->AllocationWatermarkOffset();
|
2037
2055
|
|
2038
2056
|
// Check if current object's forward pointer is in the same page
|
2039
2057
|
// as the first live object's forwarding pointer
|
@@ -2050,7 +2068,7 @@ Address MarkCompactCollector::GetForwardingAddressInOldSpace(HeapObject* obj) {
|
|
2050
2068
|
offset += Page::kObjectStartOffset;
|
2051
2069
|
|
2052
2070
|
ASSERT_PAGE_OFFSET(offset);
|
2053
|
-
ASSERT(next_page->OffsetToAddress(offset) < next_page->
|
2071
|
+
ASSERT(next_page->OffsetToAddress(offset) < next_page->AllocationTop());
|
2054
2072
|
|
2055
2073
|
return next_page->OffsetToAddress(offset);
|
2056
2074
|
}
|
@@ -2095,16 +2113,12 @@ void MarkCompactCollector::RelocateObjects() {
|
|
2095
2113
|
// Flip from and to spaces
|
2096
2114
|
Heap::new_space()->Flip();
|
2097
2115
|
|
2116
|
+
Heap::new_space()->MCCommitRelocationInfo();
|
2117
|
+
|
2098
2118
|
// Set age_mark to bottom in to space
|
2099
2119
|
Address mark = Heap::new_space()->bottom();
|
2100
2120
|
Heap::new_space()->set_age_mark(mark);
|
2101
2121
|
|
2102
|
-
Heap::new_space()->MCCommitRelocationInfo();
|
2103
|
-
#ifdef DEBUG
|
2104
|
-
// It is safe to write to the remembered sets as remembered sets on a
|
2105
|
-
// page-by-page basis after committing the m-c forwarding pointer.
|
2106
|
-
Page::set_rset_state(Page::IN_USE);
|
2107
|
-
#endif
|
2108
2122
|
PagedSpaces spaces;
|
2109
2123
|
for (PagedSpace* space = spaces.next(); space != NULL; space = spaces.next())
|
2110
2124
|
space->MCCommitRelocationInfo();
|
@@ -2131,9 +2145,9 @@ int MarkCompactCollector::RelocateMapObject(HeapObject* obj) {
|
|
2131
2145
|
|
2132
2146
|
if (new_addr != old_addr) {
|
2133
2147
|
// Move contents.
|
2134
|
-
Heap::
|
2135
|
-
|
2136
|
-
|
2148
|
+
Heap::MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr,
|
2149
|
+
old_addr,
|
2150
|
+
Map::kSize);
|
2137
2151
|
}
|
2138
2152
|
|
2139
2153
|
#ifdef DEBUG
|
@@ -2190,9 +2204,13 @@ int MarkCompactCollector::RelocateOldNonCodeObject(HeapObject* obj,
|
|
2190
2204
|
|
2191
2205
|
if (new_addr != old_addr) {
|
2192
2206
|
// Move contents.
|
2193
|
-
Heap::
|
2194
|
-
|
2195
|
-
|
2207
|
+
if (space == Heap::old_data_space()) {
|
2208
|
+
Heap::MoveBlock(new_addr, old_addr, obj_size);
|
2209
|
+
} else {
|
2210
|
+
Heap::MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr,
|
2211
|
+
old_addr,
|
2212
|
+
obj_size);
|
2213
|
+
}
|
2196
2214
|
}
|
2197
2215
|
|
2198
2216
|
ASSERT(!HeapObject::FromAddress(new_addr)->IsCode());
|
@@ -2201,6 +2219,7 @@ int MarkCompactCollector::RelocateOldNonCodeObject(HeapObject* obj,
|
|
2201
2219
|
if (copied_to->IsJSFunction()) {
|
2202
2220
|
PROFILE(FunctionMoveEvent(old_addr, new_addr));
|
2203
2221
|
}
|
2222
|
+
HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
|
2204
2223
|
|
2205
2224
|
return obj_size;
|
2206
2225
|
}
|
@@ -2237,9 +2256,7 @@ int MarkCompactCollector::RelocateCodeObject(HeapObject* obj) {
|
|
2237
2256
|
|
2238
2257
|
if (new_addr != old_addr) {
|
2239
2258
|
// Move contents.
|
2240
|
-
Heap::MoveBlock(
|
2241
|
-
reinterpret_cast<Object**>(old_addr),
|
2242
|
-
obj_size);
|
2259
|
+
Heap::MoveBlock(new_addr, old_addr, obj_size);
|
2243
2260
|
}
|
2244
2261
|
|
2245
2262
|
HeapObject* copied_to = HeapObject::FromAddress(new_addr);
|
@@ -2249,6 +2266,7 @@ int MarkCompactCollector::RelocateCodeObject(HeapObject* obj) {
|
|
2249
2266
|
// Notify the logger that compiled code has moved.
|
2250
2267
|
PROFILE(CodeMoveEvent(old_addr, new_addr));
|
2251
2268
|
}
|
2269
|
+
HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
|
2252
2270
|
|
2253
2271
|
return obj_size;
|
2254
2272
|
}
|
@@ -2275,9 +2293,13 @@ int MarkCompactCollector::RelocateNewObject(HeapObject* obj) {
|
|
2275
2293
|
#endif
|
2276
2294
|
|
2277
2295
|
// New and old addresses cannot overlap.
|
2278
|
-
Heap::
|
2279
|
-
|
2280
|
-
|
2296
|
+
if (Heap::InNewSpace(HeapObject::FromAddress(new_addr))) {
|
2297
|
+
Heap::CopyBlock(new_addr, old_addr, obj_size);
|
2298
|
+
} else {
|
2299
|
+
Heap::CopyBlockToOldSpaceAndUpdateRegionMarks(new_addr,
|
2300
|
+
old_addr,
|
2301
|
+
obj_size);
|
2302
|
+
}
|
2281
2303
|
|
2282
2304
|
#ifdef DEBUG
|
2283
2305
|
if (FLAG_gc_verbose) {
|
@@ -2289,23 +2311,12 @@ int MarkCompactCollector::RelocateNewObject(HeapObject* obj) {
|
|
2289
2311
|
if (copied_to->IsJSFunction()) {
|
2290
2312
|
PROFILE(FunctionMoveEvent(old_addr, new_addr));
|
2291
2313
|
}
|
2314
|
+
HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
|
2292
2315
|
|
2293
2316
|
return obj_size;
|
2294
2317
|
}
|
2295
2318
|
|
2296
2319
|
|
2297
|
-
// -------------------------------------------------------------------------
|
2298
|
-
// Phase 5: rebuild remembered sets
|
2299
|
-
|
2300
|
-
void MarkCompactCollector::RebuildRSets() {
|
2301
|
-
#ifdef DEBUG
|
2302
|
-
ASSERT(state_ == RELOCATE_OBJECTS);
|
2303
|
-
state_ = REBUILD_RSETS;
|
2304
|
-
#endif
|
2305
|
-
Heap::RebuildRSets();
|
2306
|
-
}
|
2307
|
-
|
2308
|
-
|
2309
2320
|
void MarkCompactCollector::ReportDeleteIfNeeded(HeapObject* obj) {
|
2310
2321
|
#ifdef ENABLE_LOGGING_AND_PROFILING
|
2311
2322
|
if (obj->IsCode()) {
|