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
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "ast.h"
|
32
32
|
#include "code-stubs.h"
|
33
33
|
#include "runtime.h"
|
34
|
+
#include "type-info.h"
|
34
35
|
|
35
36
|
// Include the declaration of the architecture defined class CodeGenerator.
|
36
37
|
// The contract to the shared code is that the the CodeGenerator is a subclass
|
@@ -55,9 +56,9 @@
|
|
55
56
|
// CodeGenerator
|
56
57
|
// ~CodeGenerator
|
57
58
|
// ProcessDeferred
|
58
|
-
//
|
59
|
+
// Generate
|
59
60
|
// ComputeLazyCompile
|
60
|
-
//
|
61
|
+
// BuildFunctionInfo
|
61
62
|
// ComputeCallInitialize
|
62
63
|
// ComputeCallInitializeInLoop
|
63
64
|
// ProcessDeclarations
|
@@ -86,6 +87,8 @@ enum UncatchableExceptionType { OUT_OF_MEMORY, TERMINATION };
|
|
86
87
|
#include "x64/codegen-x64.h"
|
87
88
|
#elif V8_TARGET_ARCH_ARM
|
88
89
|
#include "arm/codegen-arm.h"
|
90
|
+
#elif V8_TARGET_ARCH_MIPS
|
91
|
+
#include "mips/codegen-mips.h"
|
89
92
|
#else
|
90
93
|
#error Unsupported target architecture.
|
91
94
|
#endif
|
@@ -96,6 +99,63 @@ namespace v8 {
|
|
96
99
|
namespace internal {
|
97
100
|
|
98
101
|
|
102
|
+
#define INLINE_RUNTIME_FUNCTION_LIST(F) \
|
103
|
+
F(IsSmi, 1, 1) \
|
104
|
+
F(IsNonNegativeSmi, 1, 1) \
|
105
|
+
F(IsArray, 1, 1) \
|
106
|
+
F(IsRegExp, 1, 1) \
|
107
|
+
F(CallFunction, -1 /* receiver + n args + function */, 1) \
|
108
|
+
F(IsConstructCall, 0, 1) \
|
109
|
+
F(ArgumentsLength, 0, 1) \
|
110
|
+
F(Arguments, 1, 1) \
|
111
|
+
F(ClassOf, 1, 1) \
|
112
|
+
F(ValueOf, 1, 1) \
|
113
|
+
F(SetValueOf, 2, 1) \
|
114
|
+
F(FastCharCodeAt, 2, 1) \
|
115
|
+
F(CharFromCode, 1, 1) \
|
116
|
+
F(ObjectEquals, 2, 1) \
|
117
|
+
F(Log, 3, 1) \
|
118
|
+
F(RandomHeapNumber, 0, 1) \
|
119
|
+
F(IsObject, 1, 1) \
|
120
|
+
F(IsFunction, 1, 1) \
|
121
|
+
F(IsUndetectableObject, 1, 1) \
|
122
|
+
F(StringAdd, 2, 1) \
|
123
|
+
F(SubString, 3, 1) \
|
124
|
+
F(StringCompare, 2, 1) \
|
125
|
+
F(RegExpExec, 4, 1) \
|
126
|
+
F(RegExpConstructResult, 3, 1) \
|
127
|
+
F(GetFromCache, 2, 1) \
|
128
|
+
F(NumberToString, 1, 1) \
|
129
|
+
F(SwapElements, 3, 1) \
|
130
|
+
F(MathPow, 2, 1) \
|
131
|
+
F(MathSin, 1, 1) \
|
132
|
+
F(MathCos, 1, 1) \
|
133
|
+
F(MathSqrt, 1, 1)
|
134
|
+
|
135
|
+
|
136
|
+
// Support for "structured" code comments.
|
137
|
+
#ifdef DEBUG
|
138
|
+
|
139
|
+
class Comment BASE_EMBEDDED {
|
140
|
+
public:
|
141
|
+
Comment(MacroAssembler* masm, const char* msg);
|
142
|
+
~Comment();
|
143
|
+
|
144
|
+
private:
|
145
|
+
MacroAssembler* masm_;
|
146
|
+
const char* msg_;
|
147
|
+
};
|
148
|
+
|
149
|
+
#else
|
150
|
+
|
151
|
+
class Comment BASE_EMBEDDED {
|
152
|
+
public:
|
153
|
+
Comment(MacroAssembler*, const char*) {}
|
154
|
+
};
|
155
|
+
|
156
|
+
#endif // DEBUG
|
157
|
+
|
158
|
+
|
99
159
|
// Code generation can be nested. Code generation scopes form a stack
|
100
160
|
// of active code generators.
|
101
161
|
class CodeGeneratorScope BASE_EMBEDDED {
|
@@ -173,7 +233,12 @@ class DeferredCode: public ZoneObject {
|
|
173
233
|
Label entry_label_;
|
174
234
|
Label exit_label_;
|
175
235
|
|
176
|
-
|
236
|
+
// C++ doesn't allow zero length arrays, so we make the array length 1 even
|
237
|
+
// if we don't need it.
|
238
|
+
static const int kRegistersArrayLength =
|
239
|
+
(RegisterAllocator::kNumRegisters == 0) ?
|
240
|
+
1 : RegisterAllocator::kNumRegisters;
|
241
|
+
int registers_[kRegistersArrayLength];
|
177
242
|
|
178
243
|
#ifdef DEBUG
|
179
244
|
const char* comment_;
|
@@ -181,43 +246,6 @@ class DeferredCode: public ZoneObject {
|
|
181
246
|
DISALLOW_COPY_AND_ASSIGN(DeferredCode);
|
182
247
|
};
|
183
248
|
|
184
|
-
|
185
|
-
// RuntimeStub models code stubs calling entry points in the Runtime class.
|
186
|
-
class RuntimeStub : public CodeStub {
|
187
|
-
public:
|
188
|
-
explicit RuntimeStub(Runtime::FunctionId id, int num_arguments)
|
189
|
-
: id_(id), num_arguments_(num_arguments) { }
|
190
|
-
|
191
|
-
void Generate(MacroAssembler* masm);
|
192
|
-
|
193
|
-
// Disassembler support. It is useful to be able to print the name
|
194
|
-
// of the runtime function called through this stub.
|
195
|
-
static const char* GetNameFromMinorKey(int minor_key) {
|
196
|
-
return Runtime::FunctionForId(IdField::decode(minor_key))->stub_name;
|
197
|
-
}
|
198
|
-
|
199
|
-
private:
|
200
|
-
Runtime::FunctionId id_;
|
201
|
-
int num_arguments_;
|
202
|
-
|
203
|
-
class ArgumentField: public BitField<int, 0, 16> {};
|
204
|
-
class IdField: public BitField<Runtime::FunctionId, 16, kMinorBits - 16> {};
|
205
|
-
|
206
|
-
Major MajorKey() { return Runtime; }
|
207
|
-
int MinorKey() {
|
208
|
-
return IdField::encode(id_) | ArgumentField::encode(num_arguments_);
|
209
|
-
}
|
210
|
-
|
211
|
-
const char* GetName();
|
212
|
-
|
213
|
-
#ifdef DEBUG
|
214
|
-
void Print() {
|
215
|
-
PrintF("RuntimeStub (id %s)\n", Runtime::FunctionForId(id_)->name);
|
216
|
-
}
|
217
|
-
#endif
|
218
|
-
};
|
219
|
-
|
220
|
-
|
221
249
|
class StackCheckStub : public CodeStub {
|
222
250
|
public:
|
223
251
|
StackCheckStub() { }
|
@@ -327,8 +355,13 @@ class CompareStub: public CodeStub {
|
|
327
355
|
public:
|
328
356
|
CompareStub(Condition cc,
|
329
357
|
bool strict,
|
330
|
-
NaNInformation nan_info = kBothCouldBeNaN
|
331
|
-
|
358
|
+
NaNInformation nan_info = kBothCouldBeNaN,
|
359
|
+
bool include_number_compare = true) :
|
360
|
+
cc_(cc),
|
361
|
+
strict_(strict),
|
362
|
+
never_nan_nan_(nan_info == kCantBothBeNaN),
|
363
|
+
include_number_compare_(include_number_compare),
|
364
|
+
name_(NULL) { }
|
332
365
|
|
333
366
|
void Generate(MacroAssembler* masm);
|
334
367
|
|
@@ -341,6 +374,16 @@ class CompareStub: public CodeStub {
|
|
341
374
|
// generating the minor key for other comparisons to avoid creating more
|
342
375
|
// stubs.
|
343
376
|
bool never_nan_nan_;
|
377
|
+
// Do generate the number comparison code in the stub. Stubs without number
|
378
|
+
// comparison code is used when the number comparison has been inlined, and
|
379
|
+
// the stub will be called if one of the operands is not a number.
|
380
|
+
bool include_number_compare_;
|
381
|
+
|
382
|
+
// Encoding of the minor key CCCCCCCCCCCCCCNS.
|
383
|
+
class StrictField: public BitField<bool, 0, 1> {};
|
384
|
+
class NeverNanNanField: public BitField<bool, 1, 1> {};
|
385
|
+
class IncludeNumberCompareField: public BitField<bool, 2, 1> {};
|
386
|
+
class ConditionField: public BitField<int, 3, 13> {};
|
344
387
|
|
345
388
|
Major MajorKey() { return Compare; }
|
346
389
|
|
@@ -354,12 +397,16 @@ class CompareStub: public CodeStub {
|
|
354
397
|
|
355
398
|
// Unfortunately you have to run without snapshots to see most of these
|
356
399
|
// names in the profile since most compare stubs end up in the snapshot.
|
400
|
+
char* name_;
|
357
401
|
const char* GetName();
|
358
402
|
#ifdef DEBUG
|
359
403
|
void Print() {
|
360
|
-
PrintF("CompareStub (cc %d), (strict %s)
|
404
|
+
PrintF("CompareStub (cc %d), (strict %s), "
|
405
|
+
"(never_nan_nan %s), (number_compare %s)\n",
|
361
406
|
static_cast<int>(cc_),
|
362
|
-
strict_ ? "true" : "false"
|
407
|
+
strict_ ? "true" : "false",
|
408
|
+
never_nan_nan_ ? "true" : "false",
|
409
|
+
include_number_compare_ ? "included" : "not included");
|
363
410
|
}
|
364
411
|
#endif
|
365
412
|
};
|
@@ -367,25 +414,31 @@ class CompareStub: public CodeStub {
|
|
367
414
|
|
368
415
|
class CEntryStub : public CodeStub {
|
369
416
|
public:
|
370
|
-
explicit CEntryStub(int result_size
|
417
|
+
explicit CEntryStub(int result_size,
|
418
|
+
ExitFrame::Mode mode = ExitFrame::MODE_NORMAL)
|
419
|
+
: result_size_(result_size), mode_(mode) { }
|
371
420
|
|
372
|
-
void Generate(MacroAssembler* masm)
|
421
|
+
void Generate(MacroAssembler* masm);
|
373
422
|
|
374
|
-
|
375
|
-
void GenerateBody(MacroAssembler* masm, bool is_debug_break);
|
423
|
+
private:
|
376
424
|
void GenerateCore(MacroAssembler* masm,
|
377
425
|
Label* throw_normal_exception,
|
378
426
|
Label* throw_termination_exception,
|
379
427
|
Label* throw_out_of_memory_exception,
|
380
|
-
ExitFrame::Mode mode,
|
381
428
|
bool do_gc,
|
382
|
-
bool always_allocate_scope
|
429
|
+
bool always_allocate_scope,
|
430
|
+
int alignment_skew = 0);
|
383
431
|
void GenerateThrowTOS(MacroAssembler* masm);
|
384
432
|
void GenerateThrowUncatchable(MacroAssembler* masm,
|
385
433
|
UncatchableExceptionType type);
|
386
|
-
|
434
|
+
|
387
435
|
// Number of pointers/values returned.
|
388
|
-
int result_size_;
|
436
|
+
const int result_size_;
|
437
|
+
const ExitFrame::Mode mode_;
|
438
|
+
|
439
|
+
// Minor key encoding
|
440
|
+
class ExitFrameModeBits: public BitField<ExitFrame::Mode, 0, 1> {};
|
441
|
+
class IndirectResultBits: public BitField<bool, 1, 1> {};
|
389
442
|
|
390
443
|
Major MajorKey() { return CEntry; }
|
391
444
|
// Minor key must differ if different result_size_ values means different
|
@@ -407,7 +460,7 @@ class ApiGetterEntryStub : public CodeStub {
|
|
407
460
|
virtual bool GetCustomCache(Code** code_out);
|
408
461
|
virtual void SetCustomCache(Code* value);
|
409
462
|
|
410
|
-
static const int kStackSpace =
|
463
|
+
static const int kStackSpace = 5;
|
411
464
|
static const int kArgc = 4;
|
412
465
|
private:
|
413
466
|
Handle<AccessorInfo> info() { return info_; }
|
@@ -422,19 +475,6 @@ class ApiGetterEntryStub : public CodeStub {
|
|
422
475
|
};
|
423
476
|
|
424
477
|
|
425
|
-
class CEntryDebugBreakStub : public CEntryStub {
|
426
|
-
public:
|
427
|
-
CEntryDebugBreakStub() : CEntryStub(1) { }
|
428
|
-
|
429
|
-
void Generate(MacroAssembler* masm) { GenerateBody(masm, true); }
|
430
|
-
|
431
|
-
private:
|
432
|
-
int MinorKey() { return 1; }
|
433
|
-
|
434
|
-
const char* GetName() { return "CEntryDebugBreakStub"; }
|
435
|
-
};
|
436
|
-
|
437
|
-
|
438
478
|
class JSEntryStub : public CodeStub {
|
439
479
|
public:
|
440
480
|
JSEntryStub() { }
|
@@ -468,7 +508,6 @@ class JSConstructEntryStub : public JSEntryStub {
|
|
468
508
|
class ArgumentsAccessStub: public CodeStub {
|
469
509
|
public:
|
470
510
|
enum Type {
|
471
|
-
READ_LENGTH,
|
472
511
|
READ_ELEMENT,
|
473
512
|
NEW_OBJECT
|
474
513
|
};
|
@@ -482,7 +521,6 @@ class ArgumentsAccessStub: public CodeStub {
|
|
482
521
|
int MinorKey() { return type_; }
|
483
522
|
|
484
523
|
void Generate(MacroAssembler* masm);
|
485
|
-
void GenerateReadLength(MacroAssembler* masm);
|
486
524
|
void GenerateReadElement(MacroAssembler* masm);
|
487
525
|
void GenerateNewObject(MacroAssembler* masm);
|
488
526
|
|
@@ -516,6 +554,64 @@ class RegExpExecStub: public CodeStub {
|
|
516
554
|
};
|
517
555
|
|
518
556
|
|
557
|
+
class CallFunctionStub: public CodeStub {
|
558
|
+
public:
|
559
|
+
CallFunctionStub(int argc, InLoopFlag in_loop, CallFunctionFlags flags)
|
560
|
+
: argc_(argc), in_loop_(in_loop), flags_(flags) { }
|
561
|
+
|
562
|
+
void Generate(MacroAssembler* masm);
|
563
|
+
|
564
|
+
private:
|
565
|
+
int argc_;
|
566
|
+
InLoopFlag in_loop_;
|
567
|
+
CallFunctionFlags flags_;
|
568
|
+
|
569
|
+
#ifdef DEBUG
|
570
|
+
void Print() {
|
571
|
+
PrintF("CallFunctionStub (args %d, in_loop %d, flags %d)\n",
|
572
|
+
argc_,
|
573
|
+
static_cast<int>(in_loop_),
|
574
|
+
static_cast<int>(flags_));
|
575
|
+
}
|
576
|
+
#endif
|
577
|
+
|
578
|
+
// Minor key encoding in 32 bits with Bitfield <Type, shift, size>.
|
579
|
+
class InLoopBits: public BitField<InLoopFlag, 0, 1> {};
|
580
|
+
class FlagBits: public BitField<CallFunctionFlags, 1, 1> {};
|
581
|
+
class ArgcBits: public BitField<int, 2, 32 - 2> {};
|
582
|
+
|
583
|
+
Major MajorKey() { return CallFunction; }
|
584
|
+
int MinorKey() {
|
585
|
+
// Encode the parameters in a unique 32 bit value.
|
586
|
+
return InLoopBits::encode(in_loop_)
|
587
|
+
| FlagBits::encode(flags_)
|
588
|
+
| ArgcBits::encode(argc_);
|
589
|
+
}
|
590
|
+
|
591
|
+
InLoopFlag InLoop() { return in_loop_; }
|
592
|
+
bool ReceiverMightBeValue() {
|
593
|
+
return (flags_ & RECEIVER_MIGHT_BE_VALUE) != 0;
|
594
|
+
}
|
595
|
+
|
596
|
+
public:
|
597
|
+
static int ExtractArgcFromMinorKey(int minor_key) {
|
598
|
+
return ArgcBits::decode(minor_key);
|
599
|
+
}
|
600
|
+
};
|
601
|
+
|
602
|
+
|
603
|
+
class ToBooleanStub: public CodeStub {
|
604
|
+
public:
|
605
|
+
ToBooleanStub() { }
|
606
|
+
|
607
|
+
void Generate(MacroAssembler* masm);
|
608
|
+
|
609
|
+
private:
|
610
|
+
Major MajorKey() { return ToBoolean; }
|
611
|
+
int MinorKey() { return 0; }
|
612
|
+
};
|
613
|
+
|
614
|
+
|
519
615
|
} // namespace internal
|
520
616
|
} // namespace v8
|
521
617
|
|
@@ -28,32 +28,28 @@
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
30
|
#include "compilation-cache.h"
|
31
|
+
#include "serialize.h"
|
31
32
|
|
32
33
|
namespace v8 {
|
33
34
|
namespace internal {
|
34
35
|
|
35
|
-
|
36
36
|
// The number of sub caches covering the different types to cache.
|
37
37
|
static const int kSubCacheCount = 4;
|
38
38
|
|
39
39
|
// The number of generations for each sub cache.
|
40
|
-
#if defined(ANDROID)
|
41
|
-
static const int kScriptGenerations = 1;
|
42
|
-
static const int kEvalGlobalGenerations = 1;
|
43
|
-
static const int kEvalContextualGenerations = 1;
|
44
|
-
static const int kRegExpGenerations = 1;
|
45
|
-
#else
|
46
40
|
// The number of ScriptGenerations is carefully chosen based on histograms.
|
47
41
|
// See issue 458: http://code.google.com/p/v8/issues/detail?id=458
|
48
42
|
static const int kScriptGenerations = 5;
|
49
43
|
static const int kEvalGlobalGenerations = 2;
|
50
44
|
static const int kEvalContextualGenerations = 2;
|
51
45
|
static const int kRegExpGenerations = 2;
|
52
|
-
#endif
|
53
46
|
|
54
47
|
// Initial size of each compilation cache table allocated.
|
55
48
|
static const int kInitialCacheSize = 64;
|
56
49
|
|
50
|
+
// Index for the first generation in the cache.
|
51
|
+
static const int kFirstGeneration = 0;
|
52
|
+
|
57
53
|
// The compilation cache consists of several generational sub-caches which uses
|
58
54
|
// this class as a base class. A sub-cache contains a compilation cache tables
|
59
55
|
// for each generation of the sub-cache. Since the same source code string has
|
@@ -70,6 +66,15 @@ class CompilationSubCache {
|
|
70
66
|
// Get the compilation cache tables for a specific generation.
|
71
67
|
Handle<CompilationCacheTable> GetTable(int generation);
|
72
68
|
|
69
|
+
// Accessors for first generation.
|
70
|
+
Handle<CompilationCacheTable> GetFirstTable() {
|
71
|
+
return GetTable(kFirstGeneration);
|
72
|
+
}
|
73
|
+
void SetFirstTable(Handle<CompilationCacheTable> value) {
|
74
|
+
ASSERT(kFirstGeneration < generations_);
|
75
|
+
tables_[kFirstGeneration] = *value;
|
76
|
+
}
|
77
|
+
|
73
78
|
// Age the sub-cache by evicting the oldest generation and creating a new
|
74
79
|
// young generation.
|
75
80
|
void Age();
|
@@ -97,14 +102,18 @@ class CompilationCacheScript : public CompilationSubCache {
|
|
97
102
|
explicit CompilationCacheScript(int generations)
|
98
103
|
: CompilationSubCache(generations) { }
|
99
104
|
|
100
|
-
Handle<
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
void Put(Handle<String> source, Handle<
|
105
|
+
Handle<SharedFunctionInfo> Lookup(Handle<String> source,
|
106
|
+
Handle<Object> name,
|
107
|
+
int line_offset,
|
108
|
+
int column_offset);
|
109
|
+
void Put(Handle<String> source, Handle<SharedFunctionInfo> function_info);
|
105
110
|
|
106
111
|
private:
|
107
|
-
|
112
|
+
// Note: Returns a new hash table if operation results in expansion.
|
113
|
+
Handle<CompilationCacheTable> TablePut(
|
114
|
+
Handle<String> source, Handle<SharedFunctionInfo> function_info);
|
115
|
+
|
116
|
+
bool HasOrigin(Handle<SharedFunctionInfo> function_info,
|
108
117
|
Handle<Object> name,
|
109
118
|
int line_offset,
|
110
119
|
int column_offset);
|
@@ -119,11 +128,19 @@ class CompilationCacheEval: public CompilationSubCache {
|
|
119
128
|
explicit CompilationCacheEval(int generations)
|
120
129
|
: CompilationSubCache(generations) { }
|
121
130
|
|
122
|
-
Handle<
|
131
|
+
Handle<SharedFunctionInfo> Lookup(Handle<String> source,
|
132
|
+
Handle<Context> context);
|
123
133
|
|
124
134
|
void Put(Handle<String> source,
|
125
135
|
Handle<Context> context,
|
126
|
-
Handle<
|
136
|
+
Handle<SharedFunctionInfo> function_info);
|
137
|
+
|
138
|
+
private:
|
139
|
+
// Note: Returns a new hash table if operation results in expansion.
|
140
|
+
Handle<CompilationCacheTable> TablePut(
|
141
|
+
Handle<String> source,
|
142
|
+
Handle<Context> context,
|
143
|
+
Handle<SharedFunctionInfo> function_info);
|
127
144
|
|
128
145
|
DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheEval);
|
129
146
|
};
|
@@ -140,6 +157,11 @@ class CompilationCacheRegExp: public CompilationSubCache {
|
|
140
157
|
void Put(Handle<String> source,
|
141
158
|
JSRegExp::Flags flags,
|
142
159
|
Handle<FixedArray> data);
|
160
|
+
private:
|
161
|
+
// Note: Returns a new hash table if operation results in expansion.
|
162
|
+
Handle<CompilationCacheTable> TablePut(Handle<String> source,
|
163
|
+
JSRegExp::Flags flags,
|
164
|
+
Handle<FixedArray> data);
|
143
165
|
|
144
166
|
DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheRegExp);
|
145
167
|
};
|
@@ -199,21 +221,20 @@ void CompilationSubCache::Iterate(ObjectVisitor* v) {
|
|
199
221
|
|
200
222
|
|
201
223
|
void CompilationSubCache::Clear() {
|
202
|
-
|
203
|
-
tables_[i] = Heap::undefined_value();
|
204
|
-
}
|
224
|
+
MemsetPointer(tables_, Heap::undefined_value(), generations_);
|
205
225
|
}
|
206
226
|
|
207
227
|
|
208
228
|
// We only re-use a cached function for some script source code if the
|
209
229
|
// script originates from the same place. This is to avoid issues
|
210
230
|
// when reporting errors, etc.
|
211
|
-
bool CompilationCacheScript::HasOrigin(
|
212
|
-
|
213
|
-
|
214
|
-
|
231
|
+
bool CompilationCacheScript::HasOrigin(
|
232
|
+
Handle<SharedFunctionInfo> function_info,
|
233
|
+
Handle<Object> name,
|
234
|
+
int line_offset,
|
235
|
+
int column_offset) {
|
215
236
|
Handle<Script> script =
|
216
|
-
Handle<Script>(Script::cast(
|
237
|
+
Handle<Script>(Script::cast(function_info->script()));
|
217
238
|
// If the script name isn't set, the boilerplate script should have
|
218
239
|
// an undefined name to have the same origin.
|
219
240
|
if (name.is_null()) {
|
@@ -233,10 +254,10 @@ bool CompilationCacheScript::HasOrigin(Handle<JSFunction> boilerplate,
|
|
233
254
|
// be cached in the same script generation. Currently the first use
|
234
255
|
// will be cached, but subsequent code from different source / line
|
235
256
|
// won't.
|
236
|
-
Handle<
|
237
|
-
|
238
|
-
|
239
|
-
|
257
|
+
Handle<SharedFunctionInfo> CompilationCacheScript::Lookup(Handle<String> source,
|
258
|
+
Handle<Object> name,
|
259
|
+
int line_offset,
|
260
|
+
int column_offset) {
|
240
261
|
Object* result = NULL;
|
241
262
|
int generation;
|
242
263
|
|
@@ -246,12 +267,13 @@ Handle<JSFunction> CompilationCacheScript::Lookup(Handle<String> source,
|
|
246
267
|
for (generation = 0; generation < generations(); generation++) {
|
247
268
|
Handle<CompilationCacheTable> table = GetTable(generation);
|
248
269
|
Handle<Object> probe(table->Lookup(*source));
|
249
|
-
if (probe->
|
250
|
-
Handle<
|
251
|
-
|
270
|
+
if (probe->IsSharedFunctionInfo()) {
|
271
|
+
Handle<SharedFunctionInfo> function_info =
|
272
|
+
Handle<SharedFunctionInfo>::cast(probe);
|
273
|
+
// Break when we've found a suitable shared function info that
|
252
274
|
// matches the origin.
|
253
|
-
if (HasOrigin(
|
254
|
-
result = *
|
275
|
+
if (HasOrigin(function_info, name, line_offset, column_offset)) {
|
276
|
+
result = *function_info;
|
255
277
|
break;
|
256
278
|
}
|
257
279
|
}
|
@@ -273,31 +295,37 @@ Handle<JSFunction> CompilationCacheScript::Lookup(Handle<String> source,
|
|
273
295
|
// to see if we actually found a cached script. If so, we return a
|
274
296
|
// handle created in the caller's handle scope.
|
275
297
|
if (result != NULL) {
|
276
|
-
Handle<
|
277
|
-
ASSERT(HasOrigin(
|
298
|
+
Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(result));
|
299
|
+
ASSERT(HasOrigin(shared, name, line_offset, column_offset));
|
278
300
|
// If the script was found in a later generation, we promote it to
|
279
301
|
// the first generation to let it survive longer in the cache.
|
280
|
-
if (generation != 0) Put(source,
|
302
|
+
if (generation != 0) Put(source, shared);
|
281
303
|
Counters::compilation_cache_hits.Increment();
|
282
|
-
return
|
304
|
+
return shared;
|
283
305
|
} else {
|
284
306
|
Counters::compilation_cache_misses.Increment();
|
285
|
-
return Handle<
|
307
|
+
return Handle<SharedFunctionInfo>::null();
|
286
308
|
}
|
287
309
|
}
|
288
310
|
|
289
311
|
|
312
|
+
Handle<CompilationCacheTable> CompilationCacheScript::TablePut(
|
313
|
+
Handle<String> source,
|
314
|
+
Handle<SharedFunctionInfo> function_info) {
|
315
|
+
CALL_HEAP_FUNCTION(GetFirstTable()->Put(*source, *function_info),
|
316
|
+
CompilationCacheTable);
|
317
|
+
}
|
318
|
+
|
319
|
+
|
290
320
|
void CompilationCacheScript::Put(Handle<String> source,
|
291
|
-
Handle<
|
321
|
+
Handle<SharedFunctionInfo> function_info) {
|
292
322
|
HandleScope scope;
|
293
|
-
|
294
|
-
Handle<CompilationCacheTable> table = GetTable(0);
|
295
|
-
CALL_HEAP_FUNCTION_VOID(table->Put(*source, *boilerplate));
|
323
|
+
SetFirstTable(TablePut(source, function_info));
|
296
324
|
}
|
297
325
|
|
298
326
|
|
299
|
-
Handle<
|
300
|
-
|
327
|
+
Handle<SharedFunctionInfo> CompilationCacheEval::Lookup(
|
328
|
+
Handle<String> source, Handle<Context> context) {
|
301
329
|
// Make sure not to leak the table into the surrounding handle
|
302
330
|
// scope. Otherwise, we risk keeping old tables around even after
|
303
331
|
// having cleared the cache.
|
@@ -307,32 +335,42 @@ Handle<JSFunction> CompilationCacheEval::Lookup(Handle<String> source,
|
|
307
335
|
for (generation = 0; generation < generations(); generation++) {
|
308
336
|
Handle<CompilationCacheTable> table = GetTable(generation);
|
309
337
|
result = table->LookupEval(*source, *context);
|
310
|
-
if (result->
|
338
|
+
if (result->IsSharedFunctionInfo()) {
|
311
339
|
break;
|
312
340
|
}
|
313
341
|
}
|
314
342
|
}
|
315
|
-
if (result->
|
316
|
-
Handle<
|
343
|
+
if (result->IsSharedFunctionInfo()) {
|
344
|
+
Handle<SharedFunctionInfo>
|
345
|
+
function_info(SharedFunctionInfo::cast(result));
|
317
346
|
if (generation != 0) {
|
318
|
-
Put(source, context,
|
347
|
+
Put(source, context, function_info);
|
319
348
|
}
|
320
349
|
Counters::compilation_cache_hits.Increment();
|
321
|
-
return
|
350
|
+
return function_info;
|
322
351
|
} else {
|
323
352
|
Counters::compilation_cache_misses.Increment();
|
324
|
-
return Handle<
|
353
|
+
return Handle<SharedFunctionInfo>::null();
|
325
354
|
}
|
326
355
|
}
|
327
356
|
|
328
357
|
|
358
|
+
Handle<CompilationCacheTable> CompilationCacheEval::TablePut(
|
359
|
+
Handle<String> source,
|
360
|
+
Handle<Context> context,
|
361
|
+
Handle<SharedFunctionInfo> function_info) {
|
362
|
+
CALL_HEAP_FUNCTION(GetFirstTable()->PutEval(*source,
|
363
|
+
*context,
|
364
|
+
*function_info),
|
365
|
+
CompilationCacheTable);
|
366
|
+
}
|
367
|
+
|
368
|
+
|
329
369
|
void CompilationCacheEval::Put(Handle<String> source,
|
330
370
|
Handle<Context> context,
|
331
|
-
Handle<
|
371
|
+
Handle<SharedFunctionInfo> function_info) {
|
332
372
|
HandleScope scope;
|
333
|
-
|
334
|
-
Handle<CompilationCacheTable> table = GetTable(0);
|
335
|
-
CALL_HEAP_FUNCTION_VOID(table->PutEval(*source, *context, *boilerplate));
|
373
|
+
SetFirstTable(TablePut(source, context, function_info));
|
336
374
|
}
|
337
375
|
|
338
376
|
|
@@ -366,35 +404,43 @@ Handle<FixedArray> CompilationCacheRegExp::Lookup(Handle<String> source,
|
|
366
404
|
}
|
367
405
|
|
368
406
|
|
407
|
+
Handle<CompilationCacheTable> CompilationCacheRegExp::TablePut(
|
408
|
+
Handle<String> source,
|
409
|
+
JSRegExp::Flags flags,
|
410
|
+
Handle<FixedArray> data) {
|
411
|
+
CALL_HEAP_FUNCTION(GetFirstTable()->PutRegExp(*source, flags, *data),
|
412
|
+
CompilationCacheTable);
|
413
|
+
}
|
414
|
+
|
415
|
+
|
369
416
|
void CompilationCacheRegExp::Put(Handle<String> source,
|
370
417
|
JSRegExp::Flags flags,
|
371
418
|
Handle<FixedArray> data) {
|
372
419
|
HandleScope scope;
|
373
|
-
|
374
|
-
CALL_HEAP_FUNCTION_VOID(table->PutRegExp(*source, flags, *data));
|
420
|
+
SetFirstTable(TablePut(source, flags, data));
|
375
421
|
}
|
376
422
|
|
377
423
|
|
378
|
-
Handle<
|
379
|
-
|
380
|
-
|
381
|
-
|
424
|
+
Handle<SharedFunctionInfo> CompilationCache::LookupScript(Handle<String> source,
|
425
|
+
Handle<Object> name,
|
426
|
+
int line_offset,
|
427
|
+
int column_offset) {
|
382
428
|
if (!IsEnabled()) {
|
383
|
-
return Handle<
|
429
|
+
return Handle<SharedFunctionInfo>::null();
|
384
430
|
}
|
385
431
|
|
386
432
|
return script.Lookup(source, name, line_offset, column_offset);
|
387
433
|
}
|
388
434
|
|
389
435
|
|
390
|
-
Handle<
|
391
|
-
|
392
|
-
|
436
|
+
Handle<SharedFunctionInfo> CompilationCache::LookupEval(Handle<String> source,
|
437
|
+
Handle<Context> context,
|
438
|
+
bool is_global) {
|
393
439
|
if (!IsEnabled()) {
|
394
|
-
return Handle<
|
440
|
+
return Handle<SharedFunctionInfo>::null();
|
395
441
|
}
|
396
442
|
|
397
|
-
Handle<
|
443
|
+
Handle<SharedFunctionInfo> result;
|
398
444
|
if (is_global) {
|
399
445
|
result = eval_global.Lookup(source, context);
|
400
446
|
} else {
|
@@ -415,30 +461,28 @@ Handle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source,
|
|
415
461
|
|
416
462
|
|
417
463
|
void CompilationCache::PutScript(Handle<String> source,
|
418
|
-
Handle<
|
464
|
+
Handle<SharedFunctionInfo> function_info) {
|
419
465
|
if (!IsEnabled()) {
|
420
466
|
return;
|
421
467
|
}
|
422
468
|
|
423
|
-
|
424
|
-
script.Put(source, boilerplate);
|
469
|
+
script.Put(source, function_info);
|
425
470
|
}
|
426
471
|
|
427
472
|
|
428
473
|
void CompilationCache::PutEval(Handle<String> source,
|
429
474
|
Handle<Context> context,
|
430
475
|
bool is_global,
|
431
|
-
Handle<
|
476
|
+
Handle<SharedFunctionInfo> function_info) {
|
432
477
|
if (!IsEnabled()) {
|
433
478
|
return;
|
434
479
|
}
|
435
480
|
|
436
481
|
HandleScope scope;
|
437
|
-
ASSERT(boilerplate->IsBoilerplate());
|
438
482
|
if (is_global) {
|
439
|
-
eval_global.Put(source, context,
|
483
|
+
eval_global.Put(source, context, function_info);
|
440
484
|
} else {
|
441
|
-
eval_contextual.Put(source, context,
|
485
|
+
eval_contextual.Put(source, context, function_info);
|
442
486
|
}
|
443
487
|
}
|
444
488
|
|