therubyracer 0.6.3 → 0.7.0.pre
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/Rakefile +10 -9
- data/ext/v8/callbacks.cpp +15 -8
- data/ext/v8/converters.cpp +7 -8
- data/ext/v8/converters.h +0 -2
- data/ext/v8/extconf.rb +2 -0
- data/ext/v8/rr.cpp +169 -0
- data/ext/v8/rr.h +34 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/AUTHORS +8 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/ChangeLog +198 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/LICENSE +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/SConstruct +152 -38
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8-debug.h +52 -4
- data/ext/v8/upstream/2.1.10/include/v8-profiler.h +176 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8.h +227 -48
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/SConscript +60 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.cc +5 -39
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.cc +477 -57
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.h +8 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apinatives.js +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apiutils.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arguments.h +5 -6
- data/ext/v8/upstream/{2.0.6/src/arm/assembler-thumb2-inl.h → 2.1.10/src/arm/assembler-arm-inl.h} +42 -27
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.cc +430 -216
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.h +199 -110
- data/ext/v8/upstream/{2.0.6/src/arm/assembler-arm-inl.h → 2.1.10/src/arm/assembler-thumb2-inl.h} +4 -18
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.cc +142 -85
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.h +18 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/builtins-arm.cc +127 -87
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm-inl.h +3 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm.cc +4634 -1427
- data/ext/v8/upstream/2.1.10/src/arm/codegen-arm.h +946 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.cc +21 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.h +39 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/cpu-arm.cc +9 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/debug-arm.cc +34 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/disasm-arm.cc +262 -117
- data/ext/v8/upstream/2.1.10/src/arm/fast-codegen-arm.cc +238 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/arm/fast-codegen-arm.cc → 2.1.10/src/arm/full-codegen-arm.cc} +453 -283
- data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +1833 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/jump-target-arm.cc +3 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.cc +564 -104
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.h +255 -46
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.cc +78 -104
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.h +6 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm-inl.h +0 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.h +2 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.cc +557 -180
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.h +52 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/stub-cache-arm.cc +904 -240
- data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.cc +668 -0
- data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.h +503 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/array.js +82 -109
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.cc +49 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.h +27 -5
- data/ext/v8/upstream/2.1.10/src/ast.cc +1138 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ast.h +354 -53
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.cc +609 -501
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.h +27 -8
- data/ext/v8/upstream/2.1.10/src/builtins.cc +1512 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/builtins.h +41 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/2.1.10/src/cached-powers.h +119 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.h +25 -1
- data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +101 -0
- data/ext/v8/upstream/2.1.10/src/circular-queue.cc +121 -0
- data/ext/v8/upstream/2.1.10/src/circular-queue.h +129 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.cc +23 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.h +16 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen-inl.h +6 -34
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.cc +73 -92
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.h +164 -68
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.cc +117 -73
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.h +18 -17
- data/ext/v8/upstream/2.1.10/src/compiler.cc +623 -0
- data/ext/v8/upstream/2.1.10/src/compiler.h +299 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.h +8 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions-inl.h +28 -13
- data/ext/v8/upstream/2.1.10/src/conversions.cc +1105 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions.h +9 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.h +1 -1
- data/ext/v8/upstream/2.1.10/src/cpu-profiler-inl.h +99 -0
- data/ext/v8/upstream/2.1.10/src/cpu-profiler.cc +494 -0
- data/ext/v8/upstream/2.1.10/src/cpu-profiler.h +277 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/cpu.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.cc +15 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-posix.cc +18 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-readline.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.cc +10 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.js +43 -38
- data/ext/v8/upstream/2.1.10/src/data-flow.cc +755 -0
- data/ext/v8/upstream/2.1.10/src/data-flow.h +278 -0
- data/ext/v8/upstream/{2.0.6/src/date-delay.js → 2.1.10/src/date.js} +100 -110
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser-inl.h +11 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.cc +24 -26
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.h +8 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.cc +3 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/debug-delay.js → 2.1.10/src/debug-debugger.js} +111 -15
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.cc +156 -96
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.h +53 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disasm.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.cc +2 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.h +0 -0
- data/ext/v8/upstream/2.1.10/src/diy-fp.cc +58 -0
- data/ext/v8/upstream/2.1.10/src/diy-fp.h +117 -0
- data/ext/v8/upstream/2.1.10/src/double.h +169 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dtoa-config.c +4 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.cc +22 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.h +17 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.cc +70 -46
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.h +27 -17
- data/ext/v8/upstream/2.1.10/src/fast-codegen.cc +746 -0
- data/ext/v8/upstream/2.1.10/src/fast-codegen.h +161 -0
- data/ext/v8/upstream/2.1.10/src/fast-dtoa.cc +512 -0
- data/ext/v8/upstream/2.1.10/src/fast-dtoa.h +59 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flag-definitions.h +32 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.h +0 -0
- data/ext/v8/upstream/2.1.10/src/flow-graph.cc +763 -0
- data/ext/v8/upstream/2.1.10/src/flow-graph.h +180 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.cc +1 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.h +49 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames-inl.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.cc +91 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.h +24 -2
- data/ext/v8/upstream/{2.0.6/src/fast-codegen.cc → 2.1.10/src/full-codegen.cc} +549 -198
- data/ext/v8/upstream/{2.0.6/src/fast-codegen.h → 2.1.10/src/full-codegen.h} +109 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/globals.h +67 -43
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.cc +124 -129
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.h +33 -15
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-inl.h +56 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.cc +413 -221
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.h +192 -67
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32-inl.h +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.cc +187 -32
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.h +31 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/builtins-ia32.cc +160 -133
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32.cc +5533 -2177
- data/ext/v8/upstream/{2.0.6/src/x64/codegen-x64.h → 2.1.10/src/ia32/codegen-ia32.h} +453 -134
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/cpu-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/debug-ia32.cc +63 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/disasm-ia32.cc +99 -16
- data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.cc +950 -0
- data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.h +155 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/ia32/fast-codegen-ia32.cc → 2.1.10/src/ia32/full-codegen-ia32.cc} +454 -253
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/ic-ia32.cc +545 -390
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/jump-target-ia32.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.cc +330 -139
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.h +96 -30
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.cc +73 -89
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.h +6 -21
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.cc +59 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/stub-cache-ia32.cc +745 -303
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.cc +278 -71
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.h +78 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.cc +172 -89
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.h +51 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/json-delay.js → 2.1.10/src/json.js} +26 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.cc +151 -118
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.h +31 -7
- data/ext/v8/upstream/2.1.10/src/jump-target-heavy-inl.h +51 -0
- data/ext/v8/upstream/{2.0.6/src/jump-target.cc → 2.1.10/src/jump-target-heavy.cc} +164 -184
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target-inl.h +8 -9
- data/ext/v8/upstream/{2.0.6/src/usage-analyzer.h → 2.1.10/src/jump-target-light-inl.h} +9 -7
- data/ext/v8/upstream/2.1.10/src/jump-target-light.cc +86 -0
- data/ext/v8/upstream/2.1.10/src/jump-target.cc +155 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target.h +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list.h +2 -1
- data/ext/v8/upstream/2.1.10/src/liveedit-debugger.js +944 -0
- data/ext/v8/upstream/2.1.10/src/liveedit.cc +1468 -0
- data/ext/v8/upstream/2.1.10/src/liveedit.h +170 -0
- data/ext/v8/upstream/2.1.10/src/log-inl.h +59 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.cc +3 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.h +1 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.cc +198 -95
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.h +50 -49
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macro-assembler.h +9 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macros.py +30 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.cc +464 -152
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.h +41 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/math.js +9 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/memory.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.js +46 -9
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips-inl.h +215 -0
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.cc +1208 -0
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.h +665 -0
- data/ext/v8/upstream/2.1.10/src/mips/builtins-mips.cc +202 -0
- data/ext/v8/upstream/2.1.10/src/mips/codegen-mips-inl.h +70 -0
- data/ext/v8/upstream/2.1.10/src/mips/codegen-mips.cc +1428 -0
- data/ext/v8/upstream/{2.0.6/src/arm/codegen-arm.h → 2.1.10/src/mips/codegen-mips.h} +103 -205
- data/ext/v8/upstream/2.1.10/src/mips/constants-mips.cc +323 -0
- data/ext/v8/upstream/2.1.10/src/mips/constants-mips.h +525 -0
- data/ext/v8/upstream/2.1.10/src/mips/cpu-mips.cc +69 -0
- data/ext/v8/upstream/2.1.10/src/mips/debug-mips.cc +128 -0
- data/ext/v8/upstream/2.1.10/src/mips/disasm-mips.cc +784 -0
- data/ext/v8/upstream/2.1.10/src/mips/fast-codegen-mips.cc +74 -0
- data/ext/v8/upstream/2.1.10/src/mips/frames-mips.cc +99 -0
- data/ext/v8/upstream/2.1.10/src/mips/frames-mips.h +164 -0
- data/ext/v8/upstream/2.1.10/src/mips/full-codegen-mips.cc +273 -0
- data/ext/v8/upstream/2.1.10/src/mips/ic-mips.cc +217 -0
- data/ext/v8/upstream/2.1.10/src/mips/jump-target-mips.cc +172 -0
- data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.cc +1323 -0
- data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.h +461 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips-inl.h +137 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.cc +60 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.h +46 -0
- data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.cc +1648 -0
- data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.h +311 -0
- data/ext/v8/upstream/2.1.10/src/mips/stub-cache-mips.cc +400 -0
- data/ext/v8/upstream/2.1.10/src/mips/virtual-frame-mips.cc +316 -0
- data/ext/v8/upstream/{2.0.6/src/arm/virtual-frame-arm.h → 2.1.10/src/mips/virtual-frame-mips.h} +87 -71
- data/ext/v8/upstream/{2.0.6/src/mirror-delay.js → 2.1.10/src/mirror-debugger.js} +51 -45
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mksnapshot.cc +97 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/natives.h +6 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-debug.cc +47 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-inl.h +154 -38
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.cc +528 -280
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.h +302 -95
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.cc +25 -33
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.h +9 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.cc +444 -72
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.h +4 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-freebsd.cc +32 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-linux.cc +59 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-macos.cc +30 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-nullos.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-openbsd.cc +21 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-posix.cc +0 -18
- data/ext/v8/upstream/2.1.10/src/platform-solaris.cc +607 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-win32.cc +16 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform.h +25 -8
- data/ext/v8/upstream/2.1.10/src/powers-ten.h +2461 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.cc +49 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.h +3 -1
- data/ext/v8/upstream/2.1.10/src/profile-generator-inl.h +124 -0
- data/ext/v8/upstream/2.1.10/src/profile-generator.cc +583 -0
- data/ext/v8/upstream/2.1.10/src/profile-generator.h +364 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.cc +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.h +12 -24
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp-inl.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.cc +33 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.h +12 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/regexp-delay.js → 2.1.10/src/regexp.js} +180 -58
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator-inl.h +68 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.cc +5 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.h +42 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.cc +110 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.cc +2733 -623
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.h +43 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.js +46 -35
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.cc +278 -36
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.h +97 -26
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.cc +3 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.h +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.cc +11 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.h +0 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.cc +298 -175
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.h +184 -40
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/simulator.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot-common.cc +16 -31
- data/ext/v8/upstream/2.1.10/src/snapshot-empty.cc +50 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot.h +13 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces-inl.h +35 -27
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.cc +256 -42
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.h +136 -42
- data/ext/v8/upstream/{2.0.6/src/zone-inl.h → 2.1.10/src/splay-tree-inl.h} +102 -89
- data/ext/v8/upstream/2.1.10/src/splay-tree.h +203 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string.js +260 -149
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.cc +195 -69
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.h +127 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/COPYING +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/dtoa.c +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.cc +26 -31
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.h +3 -4
- data/ext/v8/upstream/2.1.10/src/type-info.cc +53 -0
- data/ext/v8/upstream/2.1.10/src/type-info.h +244 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/uri.js +6 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.cc +0 -37
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.h +121 -50
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.h +130 -98
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.cc +42 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.h +4 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8natives.js +202 -37
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.cc +11 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.h +15 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.cc +7 -51
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.h +5 -35
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.cc +3 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.h +0 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-heavy-inl.h +152 -0
- data/ext/v8/upstream/{2.0.6/src/virtual-frame.cc → 2.1.10/src/virtual-frame-heavy.cc} +107 -176
- data/ext/v8/upstream/2.1.10/src/virtual-frame-inl.h +39 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-light-inl.h +69 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-light.cc +49 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame.cc +49 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/virtual-frame.h +2 -0
- data/ext/v8/upstream/{2.0.6/src/log-inl.h → 2.1.10/src/vm-state-inl.h} +28 -20
- data/ext/v8/upstream/{2.0.6/src/snapshot-empty.cc → 2.1.10/src/vm-state.cc} +5 -6
- data/ext/v8/upstream/2.1.10/src/vm-state.h +75 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64-inl.h +11 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.cc +285 -93
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.h +81 -78
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/builtins-x64.cc +130 -87
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64.cc +4520 -1317
- data/ext/v8/upstream/{2.0.6/src/ia32/codegen-ia32.h → 2.1.10/src/x64/codegen-x64.h} +362 -141
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/cpu-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/debug-x64.cc +20 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/disasm-x64.cc +121 -44
- data/ext/v8/upstream/2.1.10/src/x64/fast-codegen-x64.cc +246 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/x64/fast-codegen-x64.cc → 2.1.10/src/x64/full-codegen-x64.cc} +404 -231
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/ic-x64.cc +346 -117
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/jump-target-x64.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.cc +537 -181
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.h +140 -34
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.cc +74 -96
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.h +8 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64-inl.h +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.cc +3 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/stub-cache-x64.cc +785 -288
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.cc +128 -52
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.h +40 -19
- data/ext/v8/upstream/2.1.10/src/zone-inl.h +82 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.h +6 -90
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/codemap.js +12 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/csvparser.js +22 -37
- data/ext/v8/upstream/2.1.10/tools/generate-ten-powers.scm +286 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/gyp/v8.gyp +86 -24
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/js2c.py +22 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor +10 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/logreader.js +34 -16
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/annotate +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/common +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/dump +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/report +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/reset +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/run +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/shutdown +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/start +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile.js +70 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/stats-viewer.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/test.py +7 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor-driver.js +7 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.js +140 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.py +40 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/utils.py +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/arm.vsprops +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/common.vsprops +1 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_arm.vcproj +193 -199
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_x64.vcproj +16 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/ia32.vsprops +5 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/js2c.cmd +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.vcproj +11 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.vcproj +227 -223
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base.vcproj +137 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_arm.vcproj +116 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_x64.vcproj +125 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest.vcproj +12 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_arm.vcproj +12 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_x64.vcproj +11 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_arm.vcproj +145 -151
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_x64.vcproj +16 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -151
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_x64.vcproj +16 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.vcproj +11 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/x64.vsprops +5 -1
- data/ext/v8/upstream/2.1.10/tools/windows-tick-processor.bat +29 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/windows-tick-processor.py +0 -0
- data/ext/v8/upstream/Makefile +8 -2
- data/ext/v8/v8.cpp +21 -73
- data/ext/v8/v8_array.cpp +56 -0
- data/ext/v8/v8_array.h +8 -0
- data/ext/v8/v8_callbacks.cpp +121 -0
- data/ext/v8/v8_callbacks.h +8 -0
- data/ext/v8/v8_cxt.cpp +74 -77
- data/ext/v8/v8_cxt.h +2 -9
- data/ext/v8/v8_date.cpp +26 -0
- data/ext/v8/v8_date.h +6 -0
- data/ext/v8/v8_exception.cpp +55 -0
- data/ext/v8/v8_exception.h +6 -0
- data/ext/v8/v8_external.cpp +50 -0
- data/ext/v8/v8_external.h +8 -0
- data/ext/v8/v8_func.cpp +76 -18
- data/ext/v8/v8_func.h +5 -4
- data/ext/v8/v8_msg.cpp +55 -46
- data/ext/v8/v8_msg.h +3 -11
- data/ext/v8/v8_obj.cpp +67 -36
- data/ext/v8/v8_obj.h +6 -8
- data/ext/v8/v8_ref.cpp +25 -9
- data/ext/v8/v8_ref.h +3 -5
- data/ext/v8/v8_script.cpp +17 -10
- data/ext/v8/v8_script.h +3 -3
- data/ext/v8/v8_str.cpp +34 -6
- data/ext/v8/v8_str.h +4 -2
- data/ext/v8/v8_template.cpp +195 -33
- data/ext/v8/v8_template.h +4 -5
- data/ext/v8/v8_try_catch.cpp +99 -0
- data/ext/v8/v8_try_catch.h +5 -0
- data/ext/v8/v8_value.cpp +164 -0
- data/ext/v8/v8_value.h +10 -0
- data/lib/v8.rb +3 -1
- data/lib/v8/access.rb +60 -0
- data/lib/v8/array.rb +15 -0
- data/lib/v8/callbacks.rb +88 -0
- data/lib/v8/cli.rb +1 -1
- data/lib/v8/context.rb +55 -66
- data/lib/v8/function.rb +20 -2
- data/lib/v8/object.rb +14 -12
- data/lib/v8/ruby_error.rb +3 -0
- data/lib/v8/to.rb +59 -7
- data/spec/ext/cxt_spec.rb +2 -15
- data/spec/ext/func_spec.rb +17 -10
- data/spec/ext/try_catch_spec.rb +32 -0
- data/spec/foo.rb +17 -0
- data/spec/redjs/jsapi_spec.rb +173 -96
- data/spec/spec_helper.rb +7 -0
- data/spec/v8/to_spec.rb +0 -1
- data/therubyracer.gemspec +6 -6
- metadata +493 -386
- data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
- data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
- data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
- data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
- data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
- data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
- data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
- data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
- data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
- data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
- data/ext/v8/v8_standalone.cpp +0 -69
- data/ext/v8/v8_standalone.h +0 -31
- data/spec/ext/obj_spec.rb +0 -13
@@ -38,6 +38,9 @@ class Snapshot {
|
|
38
38
|
// could be found.
|
39
39
|
static bool Initialize(const char* snapshot_file = NULL);
|
40
40
|
|
41
|
+
// Create a new context using the internal partial snapshot.
|
42
|
+
static Handle<Context> NewContextFromSnapshot();
|
43
|
+
|
41
44
|
// Returns whether or not the snapshot is enabled.
|
42
45
|
static bool IsEnabled() { return size_ != 0; }
|
43
46
|
|
@@ -47,7 +50,16 @@ class Snapshot {
|
|
47
50
|
|
48
51
|
private:
|
49
52
|
static const byte data_[];
|
50
|
-
static
|
53
|
+
static const byte context_data_[];
|
54
|
+
static const int new_space_used_;
|
55
|
+
static const int pointer_space_used_;
|
56
|
+
static const int data_space_used_;
|
57
|
+
static const int code_space_used_;
|
58
|
+
static const int map_space_used_;
|
59
|
+
static const int cell_space_used_;
|
60
|
+
static const int large_space_used_;
|
61
|
+
static const int size_;
|
62
|
+
static const int context_size_;
|
51
63
|
|
52
64
|
static bool Deserialize(const byte* content, int len);
|
53
65
|
|
@@ -35,32 +35,6 @@ namespace v8 {
|
|
35
35
|
namespace internal {
|
36
36
|
|
37
37
|
|
38
|
-
// -----------------------------------------------------------------------------
|
39
|
-
// HeapObjectIterator
|
40
|
-
|
41
|
-
bool HeapObjectIterator::has_next() {
|
42
|
-
if (cur_addr_ < cur_limit_) {
|
43
|
-
return true; // common case
|
44
|
-
}
|
45
|
-
ASSERT(cur_addr_ == cur_limit_);
|
46
|
-
return HasNextInNextPage(); // slow path
|
47
|
-
}
|
48
|
-
|
49
|
-
|
50
|
-
HeapObject* HeapObjectIterator::next() {
|
51
|
-
ASSERT(has_next());
|
52
|
-
|
53
|
-
HeapObject* obj = HeapObject::FromAddress(cur_addr_);
|
54
|
-
int obj_size = (size_func_ == NULL) ? obj->Size() : size_func_(obj);
|
55
|
-
ASSERT_OBJECT_SIZE(obj_size);
|
56
|
-
|
57
|
-
cur_addr_ += obj_size;
|
58
|
-
ASSERT(cur_addr_ <= cur_limit_);
|
59
|
-
|
60
|
-
return obj;
|
61
|
-
}
|
62
|
-
|
63
|
-
|
64
38
|
// -----------------------------------------------------------------------------
|
65
39
|
// PageIterator
|
66
40
|
|
@@ -171,6 +145,40 @@ bool Page::IsRSetSet(Address address, int offset) {
|
|
171
145
|
}
|
172
146
|
|
173
147
|
|
148
|
+
bool Page::GetPageFlag(PageFlag flag) {
|
149
|
+
return (flags & flag) != 0;
|
150
|
+
}
|
151
|
+
|
152
|
+
|
153
|
+
void Page::SetPageFlag(PageFlag flag, bool value) {
|
154
|
+
if (value) {
|
155
|
+
flags |= flag;
|
156
|
+
} else {
|
157
|
+
flags &= ~flag;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
|
162
|
+
bool Page::WasInUseBeforeMC() {
|
163
|
+
return GetPageFlag(WAS_IN_USE_BEFORE_MC);
|
164
|
+
}
|
165
|
+
|
166
|
+
|
167
|
+
void Page::SetWasInUseBeforeMC(bool was_in_use) {
|
168
|
+
SetPageFlag(WAS_IN_USE_BEFORE_MC, was_in_use);
|
169
|
+
}
|
170
|
+
|
171
|
+
|
172
|
+
bool Page::IsLargeObjectPage() {
|
173
|
+
return !GetPageFlag(IS_NORMAL_PAGE);
|
174
|
+
}
|
175
|
+
|
176
|
+
|
177
|
+
void Page::SetIsLargeObjectPage(bool is_large_object_page) {
|
178
|
+
SetPageFlag(IS_NORMAL_PAGE, !is_large_object_page);
|
179
|
+
}
|
180
|
+
|
181
|
+
|
174
182
|
// -----------------------------------------------------------------------------
|
175
183
|
// MemoryAllocator
|
176
184
|
|
@@ -209,7 +217,7 @@ Page* MemoryAllocator::GetNextPage(Page* p) {
|
|
209
217
|
|
210
218
|
int MemoryAllocator::GetChunkId(Page* p) {
|
211
219
|
ASSERT(p->is_valid());
|
212
|
-
return p->opaque_header & Page::kPageAlignmentMask;
|
220
|
+
return static_cast<int>(p->opaque_header & Page::kPageAlignmentMask);
|
213
221
|
}
|
214
222
|
|
215
223
|
|
@@ -82,8 +82,8 @@ void HeapObjectIterator::Initialize(Address cur, Address end,
|
|
82
82
|
}
|
83
83
|
|
84
84
|
|
85
|
-
|
86
|
-
if (cur_addr_ == end_addr_) return
|
85
|
+
HeapObject* HeapObjectIterator::FromNextPage() {
|
86
|
+
if (cur_addr_ == end_addr_) return NULL;
|
87
87
|
|
88
88
|
Page* cur_page = Page::FromAllocationTop(cur_addr_);
|
89
89
|
cur_page = cur_page->next_page();
|
@@ -92,12 +92,12 @@ bool HeapObjectIterator::HasNextInNextPage() {
|
|
92
92
|
cur_addr_ = cur_page->ObjectAreaStart();
|
93
93
|
cur_limit_ = (cur_page == end_page_) ? end_addr_ : cur_page->AllocationTop();
|
94
94
|
|
95
|
-
if (cur_addr_ == end_addr_) return
|
95
|
+
if (cur_addr_ == end_addr_) return NULL;
|
96
96
|
ASSERT(cur_addr_ < cur_limit_);
|
97
97
|
#ifdef DEBUG
|
98
98
|
Verify();
|
99
99
|
#endif
|
100
|
-
return
|
100
|
+
return FromCurrentPage();
|
101
101
|
}
|
102
102
|
|
103
103
|
|
@@ -357,12 +357,18 @@ void* MemoryAllocator::AllocateRawMemory(const size_t requested,
|
|
357
357
|
}
|
358
358
|
int alloced = static_cast<int>(*allocated);
|
359
359
|
size_ += alloced;
|
360
|
+
#ifdef DEBUG
|
361
|
+
ZapBlock(reinterpret_cast<Address>(mem), alloced);
|
362
|
+
#endif
|
360
363
|
Counters::memory_allocated.Increment(alloced);
|
361
364
|
return mem;
|
362
365
|
}
|
363
366
|
|
364
367
|
|
365
368
|
void MemoryAllocator::FreeRawMemory(void* mem, size_t length) {
|
369
|
+
#ifdef DEBUG
|
370
|
+
ZapBlock(reinterpret_cast<Address>(mem), length);
|
371
|
+
#endif
|
366
372
|
if (CodeRange::contains(static_cast<Address>(mem))) {
|
367
373
|
CodeRange::FreeRawMemory(mem, length);
|
368
374
|
} else {
|
@@ -446,6 +452,9 @@ Page* MemoryAllocator::CommitPages(Address start, size_t size,
|
|
446
452
|
if (!initial_chunk_->Commit(start, size, owner->executable() == EXECUTABLE)) {
|
447
453
|
return Page::FromAddress(NULL);
|
448
454
|
}
|
455
|
+
#ifdef DEBUG
|
456
|
+
ZapBlock(start, size);
|
457
|
+
#endif
|
449
458
|
Counters::memory_allocated.Increment(static_cast<int>(size));
|
450
459
|
|
451
460
|
// So long as we correctly overestimated the number of chunks we should not
|
@@ -467,10 +476,14 @@ bool MemoryAllocator::CommitBlock(Address start,
|
|
467
476
|
ASSERT(InInitialChunk(start + size - 1));
|
468
477
|
|
469
478
|
if (!initial_chunk_->Commit(start, size, executable)) return false;
|
479
|
+
#ifdef DEBUG
|
480
|
+
ZapBlock(start, size);
|
481
|
+
#endif
|
470
482
|
Counters::memory_allocated.Increment(static_cast<int>(size));
|
471
483
|
return true;
|
472
484
|
}
|
473
485
|
|
486
|
+
|
474
487
|
bool MemoryAllocator::UncommitBlock(Address start, size_t size) {
|
475
488
|
ASSERT(start != NULL);
|
476
489
|
ASSERT(size > 0);
|
@@ -483,6 +496,14 @@ bool MemoryAllocator::UncommitBlock(Address start, size_t size) {
|
|
483
496
|
return true;
|
484
497
|
}
|
485
498
|
|
499
|
+
|
500
|
+
void MemoryAllocator::ZapBlock(Address start, size_t size) {
|
501
|
+
for (size_t s = 0; s + kPointerSize <= size; s += kPointerSize) {
|
502
|
+
Memory::Address_at(start + s) = kZapValue;
|
503
|
+
}
|
504
|
+
}
|
505
|
+
|
506
|
+
|
486
507
|
Page* MemoryAllocator::InitializePagesInChunk(int chunk_id, int pages_in_chunk,
|
487
508
|
PagedSpace* owner) {
|
488
509
|
ASSERT(IsValidChunk(chunk_id));
|
@@ -503,7 +524,7 @@ Page* MemoryAllocator::InitializePagesInChunk(int chunk_id, int pages_in_chunk,
|
|
503
524
|
for (int i = 0; i < pages_in_chunk; i++) {
|
504
525
|
Page* p = Page::FromAddress(page_addr);
|
505
526
|
p->opaque_header = OffsetFrom(page_addr + Page::kPageSize) | chunk_id;
|
506
|
-
p->
|
527
|
+
p->SetIsLargeObjectPage(false);
|
507
528
|
page_addr += Page::kPageSize;
|
508
529
|
}
|
509
530
|
|
@@ -547,6 +568,15 @@ Page* MemoryAllocator::FreePages(Page* p) {
|
|
547
568
|
}
|
548
569
|
|
549
570
|
|
571
|
+
void MemoryAllocator::FreeAllPages(PagedSpace* space) {
|
572
|
+
for (int i = 0, length = chunks_.length(); i < length; i++) {
|
573
|
+
if (chunks_[i].owner() == space) {
|
574
|
+
DeleteChunk(i);
|
575
|
+
}
|
576
|
+
}
|
577
|
+
}
|
578
|
+
|
579
|
+
|
550
580
|
void MemoryAllocator::DeleteChunk(int chunk_id) {
|
551
581
|
ASSERT(IsValidChunk(chunk_id));
|
552
582
|
|
@@ -601,6 +631,74 @@ void MemoryAllocator::ReportStatistics() {
|
|
601
631
|
#endif
|
602
632
|
|
603
633
|
|
634
|
+
void MemoryAllocator::RelinkPageListInChunkOrder(PagedSpace* space,
|
635
|
+
Page** first_page,
|
636
|
+
Page** last_page,
|
637
|
+
Page** last_page_in_use) {
|
638
|
+
Page* first = NULL;
|
639
|
+
Page* last = NULL;
|
640
|
+
|
641
|
+
for (int i = 0, length = chunks_.length(); i < length; i++) {
|
642
|
+
ChunkInfo& chunk = chunks_[i];
|
643
|
+
|
644
|
+
if (chunk.owner() == space) {
|
645
|
+
if (first == NULL) {
|
646
|
+
Address low = RoundUp(chunk.address(), Page::kPageSize);
|
647
|
+
first = Page::FromAddress(low);
|
648
|
+
}
|
649
|
+
last = RelinkPagesInChunk(i,
|
650
|
+
chunk.address(),
|
651
|
+
chunk.size(),
|
652
|
+
last,
|
653
|
+
last_page_in_use);
|
654
|
+
}
|
655
|
+
}
|
656
|
+
|
657
|
+
if (first_page != NULL) {
|
658
|
+
*first_page = first;
|
659
|
+
}
|
660
|
+
|
661
|
+
if (last_page != NULL) {
|
662
|
+
*last_page = last;
|
663
|
+
}
|
664
|
+
}
|
665
|
+
|
666
|
+
|
667
|
+
Page* MemoryAllocator::RelinkPagesInChunk(int chunk_id,
|
668
|
+
Address chunk_start,
|
669
|
+
size_t chunk_size,
|
670
|
+
Page* prev,
|
671
|
+
Page** last_page_in_use) {
|
672
|
+
Address page_addr = RoundUp(chunk_start, Page::kPageSize);
|
673
|
+
int pages_in_chunk = PagesInChunk(chunk_start, chunk_size);
|
674
|
+
|
675
|
+
if (prev->is_valid()) {
|
676
|
+
SetNextPage(prev, Page::FromAddress(page_addr));
|
677
|
+
}
|
678
|
+
|
679
|
+
for (int i = 0; i < pages_in_chunk; i++) {
|
680
|
+
Page* p = Page::FromAddress(page_addr);
|
681
|
+
p->opaque_header = OffsetFrom(page_addr + Page::kPageSize) | chunk_id;
|
682
|
+
page_addr += Page::kPageSize;
|
683
|
+
|
684
|
+
if (p->WasInUseBeforeMC()) {
|
685
|
+
*last_page_in_use = p;
|
686
|
+
}
|
687
|
+
}
|
688
|
+
|
689
|
+
// Set the next page of the last page to 0.
|
690
|
+
Page* last_page = Page::FromAddress(page_addr - Page::kPageSize);
|
691
|
+
last_page->opaque_header = OffsetFrom(0) | chunk_id;
|
692
|
+
|
693
|
+
if (last_page->WasInUseBeforeMC()) {
|
694
|
+
*last_page_in_use = last_page;
|
695
|
+
}
|
696
|
+
|
697
|
+
return last_page;
|
698
|
+
}
|
699
|
+
|
700
|
+
|
701
|
+
|
604
702
|
// -----------------------------------------------------------------------------
|
605
703
|
// PagedSpace implementation
|
606
704
|
|
@@ -656,6 +754,8 @@ bool PagedSpace::Setup(Address start, size_t size) {
|
|
656
754
|
// Use first_page_ for allocation.
|
657
755
|
SetAllocationInfo(&allocation_info_, first_page_);
|
658
756
|
|
757
|
+
page_list_is_chunk_ordered_ = true;
|
758
|
+
|
659
759
|
return true;
|
660
760
|
}
|
661
761
|
|
@@ -666,9 +766,8 @@ bool PagedSpace::HasBeenSetup() {
|
|
666
766
|
|
667
767
|
|
668
768
|
void PagedSpace::TearDown() {
|
669
|
-
|
670
|
-
|
671
|
-
|
769
|
+
MemoryAllocator::FreeAllPages(this);
|
770
|
+
first_page_ = NULL;
|
672
771
|
accounting_stats_.Clear();
|
673
772
|
}
|
674
773
|
|
@@ -853,6 +952,12 @@ int PagedSpace::CountTotalPages() {
|
|
853
952
|
|
854
953
|
|
855
954
|
void PagedSpace::Shrink() {
|
955
|
+
if (!page_list_is_chunk_ordered_) {
|
956
|
+
// We can't shrink space if pages is not chunk-ordered
|
957
|
+
// (see comment for class MemoryAllocator for definition).
|
958
|
+
return;
|
959
|
+
}
|
960
|
+
|
856
961
|
// Release half of free pages.
|
857
962
|
Page* top_page = AllocationTopPage();
|
858
963
|
ASSERT(top_page->is_valid());
|
@@ -934,7 +1039,7 @@ void PagedSpace::Verify(ObjectVisitor* visitor) {
|
|
934
1039
|
// The next page will be above the allocation top.
|
935
1040
|
above_allocation_top = true;
|
936
1041
|
} else {
|
937
|
-
ASSERT(top == current_page
|
1042
|
+
ASSERT(top == PageAllocationLimit(current_page));
|
938
1043
|
}
|
939
1044
|
|
940
1045
|
// It should be packed with objects from the bottom to the top.
|
@@ -1342,7 +1447,7 @@ static void ClearCodeKindStatistics() {
|
|
1342
1447
|
|
1343
1448
|
|
1344
1449
|
static void ReportCodeKindStatistics() {
|
1345
|
-
const char* table[Code::NUMBER_OF_KINDS];
|
1450
|
+
const char* table[Code::NUMBER_OF_KINDS] = { NULL };
|
1346
1451
|
|
1347
1452
|
#define CASE(name) \
|
1348
1453
|
case Code::name: table[Code::name] = #name; \
|
@@ -1358,6 +1463,7 @@ static void ReportCodeKindStatistics() {
|
|
1358
1463
|
CASE(STORE_IC);
|
1359
1464
|
CASE(KEYED_STORE_IC);
|
1360
1465
|
CASE(CALL_IC);
|
1466
|
+
CASE(BINARY_OP_IC);
|
1361
1467
|
}
|
1362
1468
|
}
|
1363
1469
|
|
@@ -1392,7 +1498,7 @@ static void ReportHistogram(bool print_spill) {
|
|
1392
1498
|
PrintF("\n Object Histogram:\n");
|
1393
1499
|
for (int i = 0; i <= LAST_TYPE; i++) {
|
1394
1500
|
if (heap_histograms[i].number() > 0) {
|
1395
|
-
PrintF(" %-
|
1501
|
+
PrintF(" %-34s%10d (%10d bytes)\n",
|
1396
1502
|
heap_histograms[i].name(),
|
1397
1503
|
heap_histograms[i].number(),
|
1398
1504
|
heap_histograms[i].bytes());
|
@@ -1409,7 +1515,7 @@ static void ReportHistogram(bool print_spill) {
|
|
1409
1515
|
STRING_TYPE_LIST(INCREMENT)
|
1410
1516
|
#undef INCREMENT
|
1411
1517
|
if (string_number > 0) {
|
1412
|
-
PrintF(" %-
|
1518
|
+
PrintF(" %-34s%10d (%10d bytes)\n\n", "STRING_TYPE", string_number,
|
1413
1519
|
string_bytes);
|
1414
1520
|
}
|
1415
1521
|
|
@@ -1437,7 +1543,8 @@ void NewSpace::ClearHistograms() {
|
|
1437
1543
|
void NewSpace::CollectStatistics() {
|
1438
1544
|
ClearHistograms();
|
1439
1545
|
SemiSpaceIterator it(this);
|
1440
|
-
|
1546
|
+
for (HeapObject* obj = it.next(); obj != NULL; obj = it.next())
|
1547
|
+
RecordAllocation(obj);
|
1441
1548
|
}
|
1442
1549
|
|
1443
1550
|
|
@@ -1477,7 +1584,7 @@ void NewSpace::ReportStatistics() {
|
|
1477
1584
|
PrintF("\n Object Histogram:\n");
|
1478
1585
|
for (int i = 0; i <= LAST_TYPE; i++) {
|
1479
1586
|
if (allocated_histogram_[i].number() > 0) {
|
1480
|
-
PrintF(" %-
|
1587
|
+
PrintF(" %-34s%10d (%10d bytes)\n",
|
1481
1588
|
allocated_histogram_[i].name(),
|
1482
1589
|
allocated_histogram_[i].number(),
|
1483
1590
|
allocated_histogram_[i].bytes());
|
@@ -1598,9 +1705,7 @@ void OldSpaceFreeList::RebuildSizeList() {
|
|
1598
1705
|
|
1599
1706
|
int OldSpaceFreeList::Free(Address start, int size_in_bytes) {
|
1600
1707
|
#ifdef DEBUG
|
1601
|
-
|
1602
|
-
Memory::Address_at(start + i) = kZapValue;
|
1603
|
-
}
|
1708
|
+
MemoryAllocator::ZapBlock(start, size_in_bytes);
|
1604
1709
|
#endif
|
1605
1710
|
FreeListNode* node = FreeListNode::FromAddress(start);
|
1606
1711
|
node->set_size(size_in_bytes);
|
@@ -1732,9 +1837,7 @@ void FixedSizeFreeList::Reset() {
|
|
1732
1837
|
|
1733
1838
|
void FixedSizeFreeList::Free(Address start) {
|
1734
1839
|
#ifdef DEBUG
|
1735
|
-
|
1736
|
-
Memory::Address_at(start + i) = kZapValue;
|
1737
|
-
}
|
1840
|
+
MemoryAllocator::ZapBlock(start, object_size_);
|
1738
1841
|
#endif
|
1739
1842
|
// We only use the freelists with mark-sweep.
|
1740
1843
|
ASSERT(!MarkCompactCollector::IsCompacting());
|
@@ -1763,6 +1866,9 @@ Object* FixedSizeFreeList::Allocate() {
|
|
1763
1866
|
// OldSpace implementation
|
1764
1867
|
|
1765
1868
|
void OldSpace::PrepareForMarkCompact(bool will_compact) {
|
1869
|
+
// Call prepare of the super class.
|
1870
|
+
PagedSpace::PrepareForMarkCompact(will_compact);
|
1871
|
+
|
1766
1872
|
if (will_compact) {
|
1767
1873
|
// Reset relocation info. During a compacting collection, everything in
|
1768
1874
|
// the space is considered 'available' and we will rediscover live data
|
@@ -1833,6 +1939,112 @@ bool NewSpace::ReserveSpace(int bytes) {
|
|
1833
1939
|
}
|
1834
1940
|
|
1835
1941
|
|
1942
|
+
void PagedSpace::FreePages(Page* prev, Page* last) {
|
1943
|
+
if (last == AllocationTopPage()) {
|
1944
|
+
// Pages are already at the end of used pages.
|
1945
|
+
return;
|
1946
|
+
}
|
1947
|
+
|
1948
|
+
Page* first = NULL;
|
1949
|
+
|
1950
|
+
// Remove pages from the list.
|
1951
|
+
if (prev == NULL) {
|
1952
|
+
first = first_page_;
|
1953
|
+
first_page_ = last->next_page();
|
1954
|
+
} else {
|
1955
|
+
first = prev->next_page();
|
1956
|
+
MemoryAllocator::SetNextPage(prev, last->next_page());
|
1957
|
+
}
|
1958
|
+
|
1959
|
+
// Attach it after the last page.
|
1960
|
+
MemoryAllocator::SetNextPage(last_page_, first);
|
1961
|
+
last_page_ = last;
|
1962
|
+
MemoryAllocator::SetNextPage(last, NULL);
|
1963
|
+
|
1964
|
+
// Clean them up.
|
1965
|
+
do {
|
1966
|
+
first->ClearRSet();
|
1967
|
+
first = first->next_page();
|
1968
|
+
} while (first != NULL);
|
1969
|
+
|
1970
|
+
// Order of pages in this space might no longer be consistent with
|
1971
|
+
// order of pages in chunks.
|
1972
|
+
page_list_is_chunk_ordered_ = false;
|
1973
|
+
}
|
1974
|
+
|
1975
|
+
|
1976
|
+
void PagedSpace::PrepareForMarkCompact(bool will_compact) {
|
1977
|
+
if (will_compact) {
|
1978
|
+
// MarkCompact collector relies on WAS_IN_USE_BEFORE_MC page flag
|
1979
|
+
// to skip unused pages. Update flag value for all pages in space.
|
1980
|
+
PageIterator all_pages_iterator(this, PageIterator::ALL_PAGES);
|
1981
|
+
Page* last_in_use = AllocationTopPage();
|
1982
|
+
bool in_use = true;
|
1983
|
+
|
1984
|
+
while (all_pages_iterator.has_next()) {
|
1985
|
+
Page* p = all_pages_iterator.next();
|
1986
|
+
p->SetWasInUseBeforeMC(in_use);
|
1987
|
+
if (p == last_in_use) {
|
1988
|
+
// We passed a page containing allocation top. All consequent
|
1989
|
+
// pages are not used.
|
1990
|
+
in_use = false;
|
1991
|
+
}
|
1992
|
+
}
|
1993
|
+
|
1994
|
+
if (!page_list_is_chunk_ordered_) {
|
1995
|
+
Page* new_last_in_use = Page::FromAddress(NULL);
|
1996
|
+
MemoryAllocator::RelinkPageListInChunkOrder(this,
|
1997
|
+
&first_page_,
|
1998
|
+
&last_page_,
|
1999
|
+
&new_last_in_use);
|
2000
|
+
ASSERT(new_last_in_use->is_valid());
|
2001
|
+
|
2002
|
+
if (new_last_in_use != last_in_use) {
|
2003
|
+
// Current allocation top points to a page which is now in the middle
|
2004
|
+
// of page list. We should move allocation top forward to the new last
|
2005
|
+
// used page so various object iterators will continue to work properly.
|
2006
|
+
|
2007
|
+
int size_in_bytes = static_cast<int>(PageAllocationLimit(last_in_use) -
|
2008
|
+
last_in_use->AllocationTop());
|
2009
|
+
|
2010
|
+
if (size_in_bytes > 0) {
|
2011
|
+
// There is still some space left on this page. Create a fake
|
2012
|
+
// object which will occupy all free space on this page.
|
2013
|
+
// Otherwise iterators would not be able to scan this page
|
2014
|
+
// correctly.
|
2015
|
+
|
2016
|
+
Heap::CreateFillerObjectAt(last_in_use->AllocationTop(),
|
2017
|
+
size_in_bytes);
|
2018
|
+
}
|
2019
|
+
|
2020
|
+
// New last in use page was in the middle of the list before
|
2021
|
+
// sorting so it full.
|
2022
|
+
SetTop(new_last_in_use->AllocationTop());
|
2023
|
+
|
2024
|
+
ASSERT(AllocationTopPage() == new_last_in_use);
|
2025
|
+
ASSERT(AllocationTopPage()->WasInUseBeforeMC());
|
2026
|
+
}
|
2027
|
+
|
2028
|
+
PageIterator pages_in_use_iterator(this, PageIterator::PAGES_IN_USE);
|
2029
|
+
while (pages_in_use_iterator.has_next()) {
|
2030
|
+
Page* p = pages_in_use_iterator.next();
|
2031
|
+
if (!p->WasInUseBeforeMC()) {
|
2032
|
+
// Empty page is in the middle of a sequence of used pages.
|
2033
|
+
// Create a fake object which will occupy all free space on this page.
|
2034
|
+
// Otherwise iterators would not be able to scan this page correctly.
|
2035
|
+
int size_in_bytes = static_cast<int>(PageAllocationLimit(p) -
|
2036
|
+
p->ObjectAreaStart());
|
2037
|
+
|
2038
|
+
Heap::CreateFillerObjectAt(p->ObjectAreaStart(), size_in_bytes);
|
2039
|
+
}
|
2040
|
+
}
|
2041
|
+
|
2042
|
+
page_list_is_chunk_ordered_ = true;
|
2043
|
+
}
|
2044
|
+
}
|
2045
|
+
}
|
2046
|
+
|
2047
|
+
|
1836
2048
|
bool PagedSpace::ReserveSpace(int bytes) {
|
1837
2049
|
Address limit = allocation_info_.limit;
|
1838
2050
|
Address top = allocation_info_.top;
|
@@ -2054,8 +2266,7 @@ static void CollectCommentStatistics(RelocIterator* it) {
|
|
2054
2266
|
// - by code comment
|
2055
2267
|
void PagedSpace::CollectCodeStatistics() {
|
2056
2268
|
HeapObjectIterator obj_it(this);
|
2057
|
-
|
2058
|
-
HeapObject* obj = obj_it.next();
|
2269
|
+
for (HeapObject* obj = obj_it.next(); obj != NULL; obj = obj_it.next()) {
|
2059
2270
|
if (obj->IsCode()) {
|
2060
2271
|
Code* code = Code::cast(obj);
|
2061
2272
|
code_kind_statistics[code->kind()] += code->Size();
|
@@ -2157,7 +2368,8 @@ void OldSpace::ReportStatistics() {
|
|
2157
2368
|
|
2158
2369
|
ClearHistograms();
|
2159
2370
|
HeapObjectIterator obj_it(this);
|
2160
|
-
|
2371
|
+
for (HeapObject* obj = obj_it.next(); obj != NULL; obj = obj_it.next())
|
2372
|
+
CollectHistogramInfo(obj);
|
2161
2373
|
ReportHistogram(true);
|
2162
2374
|
}
|
2163
2375
|
|
@@ -2244,6 +2456,9 @@ void OldSpace::PrintRSet() { DoPrintRSet("old"); }
|
|
2244
2456
|
// FixedSpace implementation
|
2245
2457
|
|
2246
2458
|
void FixedSpace::PrepareForMarkCompact(bool will_compact) {
|
2459
|
+
// Call prepare of the super class.
|
2460
|
+
PagedSpace::PrepareForMarkCompact(will_compact);
|
2461
|
+
|
2247
2462
|
if (will_compact) {
|
2248
2463
|
// Reset relocation info.
|
2249
2464
|
MCResetRelocationInfo();
|
@@ -2341,7 +2556,7 @@ HeapObject* FixedSpace::SlowAllocateRaw(int size_in_bytes) {
|
|
2341
2556
|
HeapObject* FixedSpace::AllocateInNextPage(Page* current_page,
|
2342
2557
|
int size_in_bytes) {
|
2343
2558
|
ASSERT(current_page->next_page()->is_valid());
|
2344
|
-
ASSERT(
|
2559
|
+
ASSERT(allocation_info_.top == PageAllocationLimit(current_page));
|
2345
2560
|
ASSERT_EQ(object_size_in_bytes_, size_in_bytes);
|
2346
2561
|
accounting_stats_.WasteBytes(page_extra_);
|
2347
2562
|
SetAllocationInfo(&allocation_info_, current_page->next_page());
|
@@ -2393,7 +2608,8 @@ void FixedSpace::ReportStatistics() {
|
|
2393
2608
|
|
2394
2609
|
ClearHistograms();
|
2395
2610
|
HeapObjectIterator obj_it(this);
|
2396
|
-
|
2611
|
+
for (HeapObject* obj = obj_it.next(); obj != NULL; obj = obj_it.next())
|
2612
|
+
CollectHistogramInfo(obj);
|
2397
2613
|
ReportHistogram(false);
|
2398
2614
|
}
|
2399
2615
|
|
@@ -2462,7 +2678,8 @@ LargeObjectIterator::LargeObjectIterator(LargeObjectSpace* space,
|
|
2462
2678
|
|
2463
2679
|
|
2464
2680
|
HeapObject* LargeObjectIterator::next() {
|
2465
|
-
|
2681
|
+
if (current_ == NULL) return NULL;
|
2682
|
+
|
2466
2683
|
HeapObject* object = current_->GetObject();
|
2467
2684
|
current_ = current_->next();
|
2468
2685
|
return object;
|
@@ -2584,7 +2801,7 @@ Object* LargeObjectSpace::AllocateRawInternal(int requested_size,
|
|
2584
2801
|
// large object page. If the chunk_size happened to be written there, its
|
2585
2802
|
// low order bit should already be clear.
|
2586
2803
|
ASSERT((chunk_size & 0x1) == 0);
|
2587
|
-
page->
|
2804
|
+
page->SetIsLargeObjectPage(true);
|
2588
2805
|
page->ClearRSet();
|
2589
2806
|
int extra_bytes = requested_size - object_size;
|
2590
2807
|
if (extra_bytes > 0) {
|
@@ -2639,8 +2856,7 @@ void LargeObjectSpace::ClearRSet() {
|
|
2639
2856
|
ASSERT(Page::is_rset_in_use());
|
2640
2857
|
|
2641
2858
|
LargeObjectIterator it(this);
|
2642
|
-
|
2643
|
-
HeapObject* object = it.next();
|
2859
|
+
for (HeapObject* object = it.next(); object != NULL; object = it.next()) {
|
2644
2860
|
// We only have code, sequential strings, or fixed arrays in large
|
2645
2861
|
// object space, and only fixed arrays need remembered set support.
|
2646
2862
|
if (object->IsFixedArray()) {
|
@@ -2668,11 +2884,10 @@ void LargeObjectSpace::IterateRSet(ObjectSlotCallback copy_object_func) {
|
|
2668
2884
|
30);
|
2669
2885
|
|
2670
2886
|
LargeObjectIterator it(this);
|
2671
|
-
|
2887
|
+
for (HeapObject* object = it.next(); object != NULL; object = it.next()) {
|
2672
2888
|
// We only have code, sequential strings, or fixed arrays in large
|
2673
2889
|
// object space, and only fixed arrays can possibly contain pointers to
|
2674
2890
|
// the young generation.
|
2675
|
-
HeapObject* object = it.next();
|
2676
2891
|
if (object->IsFixedArray()) {
|
2677
2892
|
// Iterate the normal page remembered set range.
|
2678
2893
|
Page* page = Page::FromAddress(object->address());
|
@@ -2718,9 +2933,7 @@ void LargeObjectSpace::FreeUnmarkedObjects() {
|
|
2718
2933
|
}
|
2719
2934
|
|
2720
2935
|
// Free the chunk.
|
2721
|
-
|
2722
|
-
LOG(CodeDeleteEvent(object->address()));
|
2723
|
-
}
|
2936
|
+
MarkCompactCollector::ReportDeleteIfNeeded(object);
|
2724
2937
|
size_ -= static_cast<int>(chunk_size);
|
2725
2938
|
page_count_--;
|
2726
2939
|
MemoryAllocator::FreeRawMemory(chunk_address, chunk_size);
|
@@ -2732,6 +2945,9 @@ void LargeObjectSpace::FreeUnmarkedObjects() {
|
|
2732
2945
|
|
2733
2946
|
bool LargeObjectSpace::Contains(HeapObject* object) {
|
2734
2947
|
Address address = object->address();
|
2948
|
+
if (Heap::new_space()->Contains(address)) {
|
2949
|
+
return false;
|
2950
|
+
}
|
2735
2951
|
Page* page = Page::FromAddress(address);
|
2736
2952
|
|
2737
2953
|
SLOW_ASSERT(!page->IsLargeObjectPage()
|
@@ -2800,8 +3016,8 @@ void LargeObjectSpace::Verify() {
|
|
2800
3016
|
|
2801
3017
|
void LargeObjectSpace::Print() {
|
2802
3018
|
LargeObjectIterator it(this);
|
2803
|
-
|
2804
|
-
|
3019
|
+
for (HeapObject* obj = it.next(); obj != NULL; obj = it.next()) {
|
3020
|
+
obj->Print();
|
2805
3021
|
}
|
2806
3022
|
}
|
2807
3023
|
|
@@ -2811,9 +3027,9 @@ void LargeObjectSpace::ReportStatistics() {
|
|
2811
3027
|
int num_objects = 0;
|
2812
3028
|
ClearHistograms();
|
2813
3029
|
LargeObjectIterator it(this);
|
2814
|
-
|
3030
|
+
for (HeapObject* obj = it.next(); obj != NULL; obj = it.next()) {
|
2815
3031
|
num_objects++;
|
2816
|
-
CollectHistogramInfo(
|
3032
|
+
CollectHistogramInfo(obj);
|
2817
3033
|
}
|
2818
3034
|
|
2819
3035
|
PrintF(" number of objects %d\n", num_objects);
|
@@ -2823,8 +3039,7 @@ void LargeObjectSpace::ReportStatistics() {
|
|
2823
3039
|
|
2824
3040
|
void LargeObjectSpace::CollectCodeStatistics() {
|
2825
3041
|
LargeObjectIterator obj_it(this);
|
2826
|
-
|
2827
|
-
HeapObject* obj = obj_it.next();
|
3042
|
+
for (HeapObject* obj = obj_it.next(); obj != NULL; obj = obj_it.next()) {
|
2828
3043
|
if (obj->IsCode()) {
|
2829
3044
|
Code* code = Code::cast(obj);
|
2830
3045
|
code_kind_statistics[code->kind()] += code->Size();
|
@@ -2835,8 +3050,7 @@ void LargeObjectSpace::CollectCodeStatistics() {
|
|
2835
3050
|
|
2836
3051
|
void LargeObjectSpace::PrintRSet() {
|
2837
3052
|
LargeObjectIterator it(this);
|
2838
|
-
|
2839
|
-
HeapObject* object = it.next();
|
3053
|
+
for (HeapObject* object = it.next(); object != NULL; object = it.next()) {
|
2840
3054
|
if (object->IsFixedArray()) {
|
2841
3055
|
Page* page = Page::FromAddress(object->address());
|
2842
3056
|
|