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
@@ -0,0 +1,244 @@
|
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
3
|
+
// modification, are permitted provided that the following conditions are
|
4
|
+
// met:
|
5
|
+
//
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
9
|
+
// copyright notice, this list of conditions and the following
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
11
|
+
// with the distribution.
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
13
|
+
// contributors may be used to endorse or promote products derived
|
14
|
+
// from this software without specific prior written permission.
|
15
|
+
//
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
#ifndef V8_TYPE_INFO_H_
|
29
|
+
#define V8_TYPE_INFO_H_
|
30
|
+
|
31
|
+
#include "globals.h"
|
32
|
+
|
33
|
+
namespace v8 {
|
34
|
+
namespace internal {
|
35
|
+
|
36
|
+
// Unknown
|
37
|
+
// |
|
38
|
+
// PrimitiveType
|
39
|
+
// | \--------|
|
40
|
+
// Number String
|
41
|
+
// / | |
|
42
|
+
// Double Integer32 |
|
43
|
+
// | | /
|
44
|
+
// | Smi /
|
45
|
+
// | / /
|
46
|
+
// Uninitialized.
|
47
|
+
|
48
|
+
class TypeInfo {
|
49
|
+
public:
|
50
|
+
TypeInfo() { }
|
51
|
+
|
52
|
+
static inline TypeInfo Unknown();
|
53
|
+
// We know it's a primitive type.
|
54
|
+
static inline TypeInfo Primitive();
|
55
|
+
// We know it's a number of some sort.
|
56
|
+
static inline TypeInfo Number();
|
57
|
+
// We know it's signed or unsigned 32 bit integer.
|
58
|
+
static inline TypeInfo Integer32();
|
59
|
+
// We know it's a Smi.
|
60
|
+
static inline TypeInfo Smi();
|
61
|
+
// We know it's a heap number.
|
62
|
+
static inline TypeInfo Double();
|
63
|
+
// We know it's a string.
|
64
|
+
static inline TypeInfo String();
|
65
|
+
// We haven't started collecting info yet.
|
66
|
+
static inline TypeInfo Uninitialized();
|
67
|
+
|
68
|
+
// Return compact representation. Very sensitive to enum values below!
|
69
|
+
// Compacting drops information about primtive types and strings types.
|
70
|
+
// We use the compact representation when we only care about number types.
|
71
|
+
int ThreeBitRepresentation() {
|
72
|
+
ASSERT(type_ != kUninitializedType);
|
73
|
+
int answer = type_ & 0xf;
|
74
|
+
answer = answer > 6 ? answer - 2 : answer;
|
75
|
+
ASSERT(answer >= 0);
|
76
|
+
ASSERT(answer <= 7);
|
77
|
+
return answer;
|
78
|
+
}
|
79
|
+
|
80
|
+
// Decode compact representation. Very sensitive to enum values below!
|
81
|
+
static TypeInfo ExpandedRepresentation(int three_bit_representation) {
|
82
|
+
Type t = static_cast<Type>(three_bit_representation >= 6 ?
|
83
|
+
three_bit_representation + 2 :
|
84
|
+
three_bit_representation);
|
85
|
+
t = (t == kUnknownType) ? t : static_cast<Type>(t | kPrimitiveType);
|
86
|
+
ASSERT(t == kUnknownType ||
|
87
|
+
t == kNumberType ||
|
88
|
+
t == kInteger32Type ||
|
89
|
+
t == kSmiType ||
|
90
|
+
t == kDoubleType);
|
91
|
+
return TypeInfo(t);
|
92
|
+
}
|
93
|
+
|
94
|
+
int ToInt() {
|
95
|
+
return type_;
|
96
|
+
}
|
97
|
+
|
98
|
+
static TypeInfo FromInt(int bit_representation) {
|
99
|
+
Type t = static_cast<Type>(bit_representation);
|
100
|
+
ASSERT(t == kUnknownType ||
|
101
|
+
t == kPrimitiveType ||
|
102
|
+
t == kNumberType ||
|
103
|
+
t == kInteger32Type ||
|
104
|
+
t == kSmiType ||
|
105
|
+
t == kDoubleType ||
|
106
|
+
t == kStringType);
|
107
|
+
return TypeInfo(t);
|
108
|
+
}
|
109
|
+
|
110
|
+
// Return the weakest (least precise) common type.
|
111
|
+
static TypeInfo Combine(TypeInfo a, TypeInfo b) {
|
112
|
+
return TypeInfo(static_cast<Type>(a.type_ & b.type_));
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
// Integer32 is an integer that can be represented as either a signed
|
117
|
+
// 32-bit integer or as an unsigned 32-bit integer. It has to be
|
118
|
+
// in the range [-2^31, 2^32 - 1]. We also have to check for negative 0
|
119
|
+
// as it is not an Integer32.
|
120
|
+
static inline bool IsInt32Double(double value) {
|
121
|
+
const DoubleRepresentation minus_zero(-0.0);
|
122
|
+
DoubleRepresentation rep(value);
|
123
|
+
if (rep.bits == minus_zero.bits) return false;
|
124
|
+
if (value >= kMinInt && value <= kMaxUInt32) {
|
125
|
+
if (value <= kMaxInt && value == static_cast<int32_t>(value)) {
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
if (value == static_cast<uint32_t>(value)) return true;
|
129
|
+
}
|
130
|
+
return false;
|
131
|
+
}
|
132
|
+
|
133
|
+
static TypeInfo TypeFromValue(Handle<Object> value);
|
134
|
+
|
135
|
+
inline bool IsUnknown() {
|
136
|
+
return type_ == kUnknownType;
|
137
|
+
}
|
138
|
+
|
139
|
+
inline bool IsNumber() {
|
140
|
+
ASSERT(type_ != kUninitializedType);
|
141
|
+
return ((type_ & kNumberType) == kNumberType);
|
142
|
+
}
|
143
|
+
|
144
|
+
inline bool IsSmi() {
|
145
|
+
ASSERT(type_ != kUninitializedType);
|
146
|
+
return ((type_ & kSmiType) == kSmiType);
|
147
|
+
}
|
148
|
+
|
149
|
+
inline bool IsInteger32() {
|
150
|
+
ASSERT(type_ != kUninitializedType);
|
151
|
+
return ((type_ & kInteger32Type) == kInteger32Type);
|
152
|
+
}
|
153
|
+
|
154
|
+
inline bool IsDouble() {
|
155
|
+
ASSERT(type_ != kUninitializedType);
|
156
|
+
return ((type_ & kDoubleType) == kDoubleType);
|
157
|
+
}
|
158
|
+
|
159
|
+
inline bool IsString() {
|
160
|
+
ASSERT(type_ != kUninitializedType);
|
161
|
+
return ((type_ & kStringType) == kStringType);
|
162
|
+
}
|
163
|
+
|
164
|
+
inline bool IsUninitialized() {
|
165
|
+
return type_ == kUninitializedType;
|
166
|
+
}
|
167
|
+
|
168
|
+
const char* ToString() {
|
169
|
+
switch (type_) {
|
170
|
+
case kUnknownType: return "UnknownType";
|
171
|
+
case kPrimitiveType: return "PrimitiveType";
|
172
|
+
case kNumberType: return "NumberType";
|
173
|
+
case kInteger32Type: return "Integer32Type";
|
174
|
+
case kSmiType: return "SmiType";
|
175
|
+
case kDoubleType: return "DoubleType";
|
176
|
+
case kStringType: return "StringType";
|
177
|
+
case kUninitializedType:
|
178
|
+
UNREACHABLE();
|
179
|
+
return "UninitializedType";
|
180
|
+
}
|
181
|
+
UNREACHABLE();
|
182
|
+
return "Unreachable code";
|
183
|
+
}
|
184
|
+
|
185
|
+
private:
|
186
|
+
// We use 6 bits to represent the types.
|
187
|
+
enum Type {
|
188
|
+
kUnknownType = 0, // 000000
|
189
|
+
kPrimitiveType = 0x10, // 010000
|
190
|
+
kNumberType = 0x11, // 010001
|
191
|
+
kInteger32Type = 0x13, // 010011
|
192
|
+
kSmiType = 0x17, // 010111
|
193
|
+
kDoubleType = 0x19, // 011001
|
194
|
+
kStringType = 0x30, // 110000
|
195
|
+
kUninitializedType = 0x3f // 111111
|
196
|
+
};
|
197
|
+
explicit inline TypeInfo(Type t) : type_(t) { }
|
198
|
+
|
199
|
+
Type type_;
|
200
|
+
};
|
201
|
+
|
202
|
+
|
203
|
+
TypeInfo TypeInfo::Unknown() {
|
204
|
+
return TypeInfo(kUnknownType);
|
205
|
+
}
|
206
|
+
|
207
|
+
|
208
|
+
TypeInfo TypeInfo::Primitive() {
|
209
|
+
return TypeInfo(kPrimitiveType);
|
210
|
+
}
|
211
|
+
|
212
|
+
|
213
|
+
TypeInfo TypeInfo::Number() {
|
214
|
+
return TypeInfo(kNumberType);
|
215
|
+
}
|
216
|
+
|
217
|
+
|
218
|
+
TypeInfo TypeInfo::Integer32() {
|
219
|
+
return TypeInfo(kInteger32Type);
|
220
|
+
}
|
221
|
+
|
222
|
+
|
223
|
+
TypeInfo TypeInfo::Smi() {
|
224
|
+
return TypeInfo(kSmiType);
|
225
|
+
}
|
226
|
+
|
227
|
+
|
228
|
+
TypeInfo TypeInfo::Double() {
|
229
|
+
return TypeInfo(kDoubleType);
|
230
|
+
}
|
231
|
+
|
232
|
+
|
233
|
+
TypeInfo TypeInfo::String() {
|
234
|
+
return TypeInfo(kStringType);
|
235
|
+
}
|
236
|
+
|
237
|
+
|
238
|
+
TypeInfo TypeInfo::Uninitialized() {
|
239
|
+
return TypeInfo(kUninitializedType);
|
240
|
+
}
|
241
|
+
|
242
|
+
} } // namespace v8::internal
|
243
|
+
|
244
|
+
#endif // V8_TYPE_INFO_H_
|
File without changes
|
File without changes
|
File without changes
|
@@ -244,7 +244,7 @@ function URIDecode(uri) {
|
|
244
244
|
if (cc == 61) return true;
|
245
245
|
// ?@
|
246
246
|
if (63 <= cc && cc <= 64) return true;
|
247
|
-
|
247
|
+
|
248
248
|
return false;
|
249
249
|
};
|
250
250
|
var string = ToString(uri);
|
@@ -268,7 +268,7 @@ function isAlphaNumeric(cc) {
|
|
268
268
|
if (65 <= cc && cc <= 90) return true;
|
269
269
|
// 0 - 9
|
270
270
|
if (48 <= cc && cc <= 57) return true;
|
271
|
-
|
271
|
+
|
272
272
|
return false;
|
273
273
|
}
|
274
274
|
|
@@ -293,7 +293,7 @@ function URIEncode(uri) {
|
|
293
293
|
if (cc == 95) return true;
|
294
294
|
// ~
|
295
295
|
if (cc == 126) return true;
|
296
|
-
|
296
|
+
|
297
297
|
return false;
|
298
298
|
};
|
299
299
|
|
@@ -316,7 +316,7 @@ function URIEncodeComponent(component) {
|
|
316
316
|
if (cc == 95) return true;
|
317
317
|
// ~
|
318
318
|
if (cc == 126) return true;
|
319
|
-
|
319
|
+
|
320
320
|
return false;
|
321
321
|
};
|
322
322
|
|
@@ -327,14 +327,14 @@ function URIEncodeComponent(component) {
|
|
327
327
|
|
328
328
|
function HexValueOf(c) {
|
329
329
|
var code = c.charCodeAt(0);
|
330
|
-
|
330
|
+
|
331
331
|
// 0-9
|
332
332
|
if (code >= 48 && code <= 57) return code - 48;
|
333
333
|
// A-F
|
334
334
|
if (code >= 65 && code <= 70) return code - 55;
|
335
335
|
// a-f
|
336
336
|
if (code >= 97 && code <= 102) return code - 87;
|
337
|
-
|
337
|
+
|
338
338
|
return -1;
|
339
339
|
}
|
340
340
|
|
@@ -51,43 +51,6 @@ uint32_t RoundUpToPowerOf2(uint32_t x) {
|
|
51
51
|
}
|
52
52
|
|
53
53
|
|
54
|
-
byte* EncodeInt(byte* p, int x) {
|
55
|
-
while (x < -64 || x >= 64) {
|
56
|
-
*p++ = static_cast<byte>(x & 127);
|
57
|
-
x = ArithmeticShiftRight(x, 7);
|
58
|
-
}
|
59
|
-
// -64 <= x && x < 64
|
60
|
-
*p++ = static_cast<byte>(x + 192);
|
61
|
-
return p;
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
byte* DecodeInt(byte* p, int* x) {
|
66
|
-
int r = 0;
|
67
|
-
unsigned int s = 0;
|
68
|
-
byte b = *p++;
|
69
|
-
while (b < 128) {
|
70
|
-
r |= static_cast<int>(b) << s;
|
71
|
-
s += 7;
|
72
|
-
b = *p++;
|
73
|
-
}
|
74
|
-
// b >= 128
|
75
|
-
*x = r | ((static_cast<int>(b) - 192) << s);
|
76
|
-
return p;
|
77
|
-
}
|
78
|
-
|
79
|
-
|
80
|
-
byte* EncodeUnsignedIntBackward(byte* p, unsigned int x) {
|
81
|
-
while (x >= 128) {
|
82
|
-
*--p = static_cast<byte>(x & 127);
|
83
|
-
x = x >> 7;
|
84
|
-
}
|
85
|
-
// x < 128
|
86
|
-
*--p = static_cast<byte>(x + 128);
|
87
|
-
return p;
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
54
|
// Thomas Wang, Integer Hash Functions.
|
92
55
|
// http://www.concentric.net/~Ttwang/tech/inthash.htm
|
93
56
|
uint32_t ComputeIntegerHash(uint32_t key) {
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#define V8_UTILS_H_
|
30
30
|
|
31
31
|
#include <stdlib.h>
|
32
|
+
#include <string.h>
|
32
33
|
|
33
34
|
namespace v8 {
|
34
35
|
namespace internal {
|
@@ -157,7 +158,9 @@ class BitField {
|
|
157
158
|
|
158
159
|
// Returns a uint32_t mask of bit field.
|
159
160
|
static uint32_t mask() {
|
160
|
-
|
161
|
+
// To use all bits of a uint32 in a bitfield without compiler warnings we
|
162
|
+
// have to compute 2^32 without using a shift count of 32.
|
163
|
+
return ((1U << shift) << size) - (1U << shift);
|
161
164
|
}
|
162
165
|
|
163
166
|
// Returns a uint32_t with the bit field value encoded.
|
@@ -168,53 +171,11 @@ class BitField {
|
|
168
171
|
|
169
172
|
// Extracts the bit field from the value.
|
170
173
|
static T decode(uint32_t value) {
|
171
|
-
return static_cast<T>((value
|
174
|
+
return static_cast<T>((value & mask()) >> shift);
|
172
175
|
}
|
173
176
|
};
|
174
177
|
|
175
178
|
|
176
|
-
// ----------------------------------------------------------------------------
|
177
|
-
// Support for compressed, machine-independent encoding
|
178
|
-
// and decoding of integer values of arbitrary size.
|
179
|
-
|
180
|
-
// Encoding and decoding from/to a buffer at position p;
|
181
|
-
// the result is the position after the encoded integer.
|
182
|
-
// Small signed integers in the range -64 <= x && x < 64
|
183
|
-
// are encoded in 1 byte; larger values are encoded in 2
|
184
|
-
// or more bytes. At most sizeof(int) + 1 bytes are used
|
185
|
-
// in the worst case.
|
186
|
-
byte* EncodeInt(byte* p, int x);
|
187
|
-
byte* DecodeInt(byte* p, int* x);
|
188
|
-
|
189
|
-
|
190
|
-
// Encoding and decoding from/to a buffer at position p - 1
|
191
|
-
// moving backward; the result is the position of the last
|
192
|
-
// byte written. These routines are useful to read/write
|
193
|
-
// into a buffer starting at the end of the buffer.
|
194
|
-
byte* EncodeUnsignedIntBackward(byte* p, unsigned int x);
|
195
|
-
|
196
|
-
// The decoding function is inlined since its performance is
|
197
|
-
// important to mark-sweep garbage collection.
|
198
|
-
inline byte* DecodeUnsignedIntBackward(byte* p, unsigned int* x) {
|
199
|
-
byte b = *--p;
|
200
|
-
if (b >= 128) {
|
201
|
-
*x = static_cast<unsigned int>(b) - 128;
|
202
|
-
return p;
|
203
|
-
}
|
204
|
-
unsigned int r = static_cast<unsigned int>(b);
|
205
|
-
unsigned int s = 7;
|
206
|
-
b = *--p;
|
207
|
-
while (b < 128) {
|
208
|
-
r |= static_cast<unsigned int>(b) << s;
|
209
|
-
s += 7;
|
210
|
-
b = *--p;
|
211
|
-
}
|
212
|
-
// b >= 128
|
213
|
-
*x = r | ((static_cast<unsigned int>(b) - 128) << s);
|
214
|
-
return p;
|
215
|
-
}
|
216
|
-
|
217
|
-
|
218
179
|
// ----------------------------------------------------------------------------
|
219
180
|
// Hash function.
|
220
181
|
|
@@ -380,7 +341,6 @@ class Vector {
|
|
380
341
|
// Releases the array underlying this vector. Once disposed the
|
381
342
|
// vector is empty.
|
382
343
|
void Dispose() {
|
383
|
-
if (is_empty()) return;
|
384
344
|
DeleteArray(start_);
|
385
345
|
start_ = NULL;
|
386
346
|
length_ = 0;
|
@@ -436,7 +396,7 @@ class EmbeddedVector : public Vector<T> {
|
|
436
396
|
if (this == &rhs) return *this;
|
437
397
|
Vector<T>::operator=(rhs);
|
438
398
|
memcpy(buffer_, rhs.buffer_, sizeof(T) * kSize);
|
439
|
-
set_start(buffer_);
|
399
|
+
this->set_start(buffer_);
|
440
400
|
return *this;
|
441
401
|
}
|
442
402
|
|
@@ -568,11 +528,11 @@ static inline void CopyChars(sinkchar* dest, const sourcechar* src, int chars) {
|
|
568
528
|
sinkchar* limit = dest + chars;
|
569
529
|
#ifdef V8_HOST_CAN_READ_UNALIGNED
|
570
530
|
if (sizeof(*dest) == sizeof(*src)) {
|
571
|
-
// Number of characters in a
|
572
|
-
static const int kStepSize = sizeof(
|
531
|
+
// Number of characters in a uintptr_t.
|
532
|
+
static const int kStepSize = sizeof(uintptr_t) / sizeof(*dest); // NOLINT
|
573
533
|
while (dest <= limit - kStepSize) {
|
574
|
-
*reinterpret_cast<
|
575
|
-
*reinterpret_cast<const
|
534
|
+
*reinterpret_cast<uintptr_t*>(dest) =
|
535
|
+
*reinterpret_cast<const uintptr_t*>(src);
|
576
536
|
dest += kStepSize;
|
577
537
|
src += kStepSize;
|
578
538
|
}
|
@@ -584,9 +544,120 @@ static inline void CopyChars(sinkchar* dest, const sourcechar* src, int chars) {
|
|
584
544
|
}
|
585
545
|
|
586
546
|
|
547
|
+
// Compare ASCII/16bit chars to ASCII/16bit chars.
|
548
|
+
template <typename lchar, typename rchar>
|
549
|
+
static inline int CompareChars(const lchar* lhs, const rchar* rhs, int chars) {
|
550
|
+
const lchar* limit = lhs + chars;
|
551
|
+
#ifdef V8_HOST_CAN_READ_UNALIGNED
|
552
|
+
if (sizeof(*lhs) == sizeof(*rhs)) {
|
553
|
+
// Number of characters in a uintptr_t.
|
554
|
+
static const int kStepSize = sizeof(uintptr_t) / sizeof(*lhs); // NOLINT
|
555
|
+
while (lhs <= limit - kStepSize) {
|
556
|
+
if (*reinterpret_cast<const uintptr_t*>(lhs) !=
|
557
|
+
*reinterpret_cast<const uintptr_t*>(rhs)) {
|
558
|
+
break;
|
559
|
+
}
|
560
|
+
lhs += kStepSize;
|
561
|
+
rhs += kStepSize;
|
562
|
+
}
|
563
|
+
}
|
564
|
+
#endif
|
565
|
+
while (lhs < limit) {
|
566
|
+
int r = static_cast<int>(*lhs) - static_cast<int>(*rhs);
|
567
|
+
if (r != 0) return r;
|
568
|
+
++lhs;
|
569
|
+
++rhs;
|
570
|
+
}
|
571
|
+
return 0;
|
572
|
+
}
|
573
|
+
|
574
|
+
|
575
|
+
template <typename T>
|
576
|
+
static inline void MemsetPointer(T** dest, T* value, int counter) {
|
577
|
+
#if defined(V8_HOST_ARCH_IA32)
|
578
|
+
#define STOS "stosl"
|
579
|
+
#elif defined(V8_HOST_ARCH_X64)
|
580
|
+
#define STOS "stosq"
|
581
|
+
#endif
|
582
|
+
|
583
|
+
#if defined(__GNUC__) && defined(STOS)
|
584
|
+
asm volatile(
|
585
|
+
"cld;"
|
586
|
+
"rep ; " STOS
|
587
|
+
: "+&c" (counter), "+&D" (dest)
|
588
|
+
: "a" (value)
|
589
|
+
: "memory", "cc");
|
590
|
+
#else
|
591
|
+
for (int i = 0; i < counter; i++) {
|
592
|
+
dest[i] = value;
|
593
|
+
}
|
594
|
+
#endif
|
595
|
+
|
596
|
+
#undef STOS
|
597
|
+
}
|
598
|
+
|
599
|
+
|
600
|
+
// Copies data from |src| to |dst|. The data spans MUST not overlap.
|
601
|
+
inline void CopyWords(Object** dst, Object** src, int num_words) {
|
602
|
+
ASSERT(Min(dst, src) + num_words <= Max(dst, src));
|
603
|
+
ASSERT(num_words > 0);
|
604
|
+
|
605
|
+
// Use block copying memcpy if the segment we're copying is
|
606
|
+
// enough to justify the extra call/setup overhead.
|
607
|
+
static const int kBlockCopyLimit = 16;
|
608
|
+
|
609
|
+
if (num_words >= kBlockCopyLimit) {
|
610
|
+
memcpy(dst, src, num_words * kPointerSize);
|
611
|
+
} else {
|
612
|
+
int remaining = num_words;
|
613
|
+
do {
|
614
|
+
remaining--;
|
615
|
+
*dst++ = *src++;
|
616
|
+
} while (remaining > 0);
|
617
|
+
}
|
618
|
+
}
|
619
|
+
|
620
|
+
|
587
621
|
// Calculate 10^exponent.
|
588
622
|
int TenToThe(int exponent);
|
589
623
|
|
624
|
+
|
625
|
+
// The type-based aliasing rule allows the compiler to assume that pointers of
|
626
|
+
// different types (for some definition of different) never alias each other.
|
627
|
+
// Thus the following code does not work:
|
628
|
+
//
|
629
|
+
// float f = foo();
|
630
|
+
// int fbits = *(int*)(&f);
|
631
|
+
//
|
632
|
+
// The compiler 'knows' that the int pointer can't refer to f since the types
|
633
|
+
// don't match, so the compiler may cache f in a register, leaving random data
|
634
|
+
// in fbits. Using C++ style casts makes no difference, however a pointer to
|
635
|
+
// char data is assumed to alias any other pointer. This is the 'memcpy
|
636
|
+
// exception'.
|
637
|
+
//
|
638
|
+
// Bit_cast uses the memcpy exception to move the bits from a variable of one
|
639
|
+
// type of a variable of another type. Of course the end result is likely to
|
640
|
+
// be implementation dependent. Most compilers (gcc-4.2 and MSVC 2005)
|
641
|
+
// will completely optimize BitCast away.
|
642
|
+
//
|
643
|
+
// There is an additional use for BitCast.
|
644
|
+
// Recent gccs will warn when they see casts that may result in breakage due to
|
645
|
+
// the type-based aliasing rule. If you have checked that there is no breakage
|
646
|
+
// you can use BitCast to cast one pointer type to another. This confuses gcc
|
647
|
+
// enough that it can no longer see that you have cast one pointer type to
|
648
|
+
// another thus avoiding the warning.
|
649
|
+
template <class Dest, class Source>
|
650
|
+
inline Dest BitCast(const Source& source) {
|
651
|
+
// Compile time assertion: sizeof(Dest) == sizeof(Source)
|
652
|
+
// A compile error here means your Dest and Source have different sizes.
|
653
|
+
typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1];
|
654
|
+
|
655
|
+
Dest dest;
|
656
|
+
memcpy(&dest, &source, sizeof(dest));
|
657
|
+
return dest;
|
658
|
+
}
|
659
|
+
|
590
660
|
} } // namespace v8::internal
|
591
661
|
|
662
|
+
|
592
663
|
#endif // V8_UTILS_H_
|