Lines Matching refs:JIT
45 * jit/JIT.cpp:
46 (JSC::JIT::privateCompileMainPass):
47 * jit/JIT.h:
49 (JSC::JIT::compileOpCall):
50 (JSC::JIT::compileOpCallSlowCase):
52 (JSC::JIT::compileOpCall):
53 (JSC::JIT::compileOpCallSlowCase):
55 (JSC::JIT::privateCompileCTIMachineTrampolines):
56 (JSC::JIT::privateCompileCTINativeCall):
57 (JSC::JIT::emit_op_neq_null):
58 (JSC::JIT::emit_op_convert_this):
59 (JSC::JIT::emit_op_get_callee):
60 (JSC::JIT::emit_op_create_this):
62 (JSC::JIT::privateCompileCTIMachineTrampolines):
63 (JSC::JIT::privateCompileCTINativeCall):
64 (JSC::JIT::emit_op_get_callee):
65 (JSC::JIT::emit_op_create_this):
208 * jit/JIT.cpp:
427 (JSC::JIT::compileOpCall):
571 (JSC::JIT::emit_op_get_scoped_var):
572 (JSC::JIT::emit_op_put_scoped_var):
573 (JSC::JIT::emit_op_resolve_skip):
574 (JSC::JIT::emit_op_resolve_global_dynamic):
575 (JSC::JIT::emitSlow_op_resolve_global_dynamic):
577 (JSC::JIT::emit_op_get_scoped_var):
578 (JSC::JIT::emit_op_put_scoped_var):
579 (JSC::JIT::emit_op_resolve_skip):
615 Bug 39408 - Unify JIT/interpreter return behaviour.
617 Presently the JIT and the interpreter have differing implementations in how
621 The JIT plants code after the call to store the result, so the value will be
632 (functionReturnValue), in the case of the JIT this is the normal return value
636 In addition to unifying JIT & interpreter behaviour this change allows us to
667 * jit/JIT.cpp:
668 (JSC::JIT::privateCompileMainPass):
669 * jit/JIT.h:
671 (JSC::JIT::compileOpCallSetupArgs):
672 (JSC::JIT::compileOpConstructSetupArgs):
673 (JSC::JIT::emit_op_call_put_result):
674 (JSC::JIT::compileOpCallVarargs):
675 (JSC::JIT::compileOpCallVarargsSlowCase):
676 (JSC::JIT::compileOpCall):
677 (JSC::JIT::compileOpCallSlowCase):
678 (JSC::JIT::compileOpCallVarargsSetupArgs):
704 * jit/JIT.cpp:
705 (JSC::JIT::privateCompileMainPass):
706 * jit/JIT.h:
708 (JSC::JIT::emit_op_ret_object_or_this):
710 (JSC::JIT::emit_op_ret_object_or_this):
733 * jit/JIT.cpp:
734 (JSC::JIT::privateCompileMainPass):
735 (JSC::JIT::privateCompileSlowCases):
736 * jit/JIT.h:
738 (JSC::JIT::emit_op_constructor_ret):
740 (JSC::JIT::emit_op_constructor_ret):
861 (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
886 how the returnPC is stored in JIT vs Interpreter.
892 Don't build the Interpreter into JIT builds.
918 * jit/JIT.cpp:
919 (JSC::JIT::JIT):
920 (JSC::JIT::privateCompileMainPass):
921 (JSC::JIT::privateCompileLinkPass):
922 (JSC::JIT::privateCompileSlowCases):
923 (JSC::JIT::privateCompile):
924 * jit/JIT.h:
929 (JSC::JIT::compileOpCallVarargsSlowCase):
930 (JSC::JIT::compileOpCall):
932 (JSC::JIT::emitNakedCall):
933 (JSC::JIT::addSlowCase):
934 (JSC::JIT::addJump):
935 (JSC::JIT::emitJumpSlowToHot):
936 (JSC::JIT::isLabeled):
937 (JSC::JIT::map):
938 (JSC::JIT::unmap):
939 (JSC::JIT::isMapped):
940 (JSC::JIT::getMappedPayload):
941 (JSC::JIT::getMappedTag):
942 (JSC::JIT::emitGetVirtualRegister):
944 (JSC::JIT::emit_op_switch_imm):
945 (JSC::JIT::emit_op_switch_char):
946 (JSC::JIT::emit_op_switch_string):
947 (JSC::JIT::emit_op_new_error):
949 (JSC::JIT::emit_op_mov):
950 (JSC::JIT::emit_op_get_global_var):
951 (JSC::JIT::emit_op_put_global_var):
952 (JSC::JIT::emit_op_get_scoped_var):
953 (JSC::JIT::emit_op_put_scoped_var):
954 (JSC::JIT::emit_op_to_primitive):
955 (JSC::JIT::emit_op_resolve_global):
956 (JSC::JIT::emit_op_to_jsnumber):
957 (JSC::JIT::emit_op_catch):
958 (JSC::JIT::emit_op_switch_imm):
959 (JSC::JIT::emit_op_switch_char):
960 (JSC::JIT::emit_op_switch_string):
961 (JSC::JIT::emit_op_new_error):
962 (JSC::JIT::emit_op_convert_this):
964 (JSC::JIT::emit_op_method_check):
965 (JSC::JIT::emitSlow_op_method_check):
967 (JSC::JIT::emit_op_method_check):
968 (JSC::JIT::emitSlow_op_method_check):
969 (JSC::JIT::emit_op_get_by_val):
970 (JSC::JIT::emit_op_get_by_id):
971 (JSC::JIT::emit_op_get_by_pname):
1003 * jit/JIT.h:
1004 (JSC::JIT::compileCTINativeCall):
1006 (JSC::JIT::privateCompileCTINativeCall):
1008 (JSC::JIT::privateCompileCTINativeCall):
1010 (JSC::JIT::emitSlow_op_get_by_val):
1012 (JSC::JIT::emitSlow_op_get_by_val):
1120 (JSC::JIT::compileOpCallInitializeCallFrame):
1121 (JSC::JIT::compileOpCall):
1123 (JSC::JIT::emit_op_tear_off_activation):
1124 (JSC::JIT::emit_op_tear_off_arguments):
1125 (JSC::JIT::emit_op_create_arguments):
1126 (JSC::JIT::emit_op_init_arguments):
1128 (JSC::JIT::emit_op_tear_off_activation):
1129 (JSC::JIT::emit_op_tear_off_arguments):
1130 (JSC::JIT::emit_op_create_arguments):
1131 (JSC::JIT::emit_op_init_arguments): The actual optimization: Removed
1231 * jit/JIT.h:
1233 (JSC::JIT::compileOpCallInitializeCallFrame):
1234 (JSC::JIT::compileOpCall):
1236 (JSC::JIT::privateCompileCTIMachineTrampolines):
1239 (JSC::JIT::stringGetByValStubGenerator):
1240 (JSC::JIT::emitSlow_op_get_by_val):
1242 (JSC::JIT::stringGetByValStubGenerator):
1243 (JSC::JIT::emitSlow_op_get_by_val):
1319 (JSC::JIT::emitSlow_op_jnless):
1320 (JSC::JIT::emitSlow_op_jless):
1350 Update MIPS JIT for unsigned right shift, Math.sqrt, load16
1431 (JSC::JIT::stringGetByValStubGenerator):
1484 Provide support for separate bytecode/JIT code translations for call/construct usage
1503 * jit/JIT.cpp:
1504 (JSC::JIT::unlinkCallOrConstruct):
1505 (JSC::JIT::linkConstruct):
1506 * jit/JIT.h:
1508 (JSC::JIT::compileOpCall):
1509 (JSC::JIT::compileOpCallSlowCase):
1511 (JSC::JIT::privateCompileCTIMachineTrampolines):
1513 (JSC::JIT::privateCompileCTIMachineTrampolines):
1515 (JSC::JIT::emitSlow_op_get_by_val):
1517 (JSC::JIT::emitSlow_op_get_by_val):
1588 (JSC::JIT::emit_op_jlesseq):
1589 (JSC::JIT::emitBinaryDoubleOp):
1598 Remove outdated UNUSED_PARAMs when using JIT but with
1660 * jit/JIT.cpp:
1661 (JSC::JIT::privateCompile):
1905 [Qt] Disable JIT support for mingw-w64
1908 Disale JIT for mingw-w64 as it is reportedly
1966 * jit/JIT.cpp:
1967 (JSC::JIT::privateCompileMainPass):
1968 * jit/JIT.h:
1970 (JSC::JIT::emit_op_new_regexp):
2007 Setting YARR based on JIT seeting is now in Platform.h
2025 * jit/JIT.h:
2029 (JSC::JIT::stringGetByValStubGenerator):
2030 (JSC::JIT::emitSlow_op_get_by_val):
2034 (JSC::JIT::stringGetByValStubGenerator):
2035 (JSC::JIT::emitSlow_op_get_by_val):
2053 code that wasn't really tuned for the JIT.
2078 Turn on YARR and YARR JIT by default of JIT is enabled.
2097 (JSC::JIT::privateCompileCTIMachineTrampolines):
2098 (JSC::JIT::emit_op_mov):
2099 (JSC::JIT::emit_op_end):
2100 (JSC::JIT::emit_op_jmp):
2101 (JSC::JIT::emit_op_loop_if_lesseq):
2102 (JSC::JIT::emitSlow_op_loop_if_lesseq):
2103 (JSC::JIT::emit_op_new_object):
2104 (JSC::JIT::emit_op_instanceof):
2105 (JSC::JIT::emitSlow_op_instanceof):
2106 (JSC::JIT::emit_op_new_func):
2107 (JSC::JIT::emit_op_get_global_var):
2108 (JSC::JIT::emit_op_put_global_var):
2109 (JSC::JIT::emit_op_get_scoped_var):
2110 (JSC::JIT::emit_op_put_scoped_var):
2111 (JSC::JIT::emit_op_tear_off_activation):
2112 (JSC::JIT::emit_op_tear_off_arguments):
2113 (JSC::JIT::emit_op_new_array):
2114 (JSC::JIT::emit_op_resolve):
2115 (JSC::JIT::emit_op_to_primitive):
2116 (JSC::JIT::emitSlow_op_to_primitive):
2117 (JSC::JIT::emit_op_strcat):
2118 (JSC::JIT::emit_op_resolve_base):
2119 (JSC::JIT::emit_op_resolve_skip):
2120 (JSC::JIT::emit_op_resolve_global):
2121 (JSC::JIT::emitSlow_op_resolve_global):
2122 (JSC::JIT::emit_op_not):
2123 (JSC::JIT::emitSlow_op_not):
2124 (JSC::JIT::emit_op_jfalse):
2125 (JSC::JIT::emitSlow_op_jfalse):
2126 (JSC::JIT::emit_op_jtrue):
2127 (JSC::JIT::emitSlow_op_jtrue):
2128 (JSC::JIT::emit_op_jeq_null):
2129 (JSC::JIT::emit_op_jneq_null):
2130 (JSC::JIT::emit_op_jneq_ptr):
2131 (JSC::JIT::emit_op_jsr):
2132 (JSC::JIT::emit_op_sret):
2133 (JSC::JIT::emit_op_eq):
2134 (JSC::JIT::emitSlow_op_eq):
2135 (JSC::JIT::emit_op_neq):
2136 (JSC::JIT::emitSlow_op_neq):
2137 (JSC::JIT::compileOpStrictEq):
2138 (JSC::JIT::emit_op_stricteq):
2139 (JSC::JIT::emitSlow_op_stricteq):
2140 (JSC::JIT::emit_op_nstricteq):
2141 (JSC::JIT::emitSlow_op_nstricteq):
2142 (JSC::JIT::emit_op_eq_null):
2143 (JSC::JIT::emit_op_neq_null):
2144 (JSC::JIT::emit_op_resolve_with_base):
2145 (JSC::JIT::emit_op_new_func_exp):
2146 (JSC::JIT::emit_op_throw):
2147 (JSC::JIT::emit_op_get_pnames):
2148 (JSC::JIT::emit_op_next_pname):
2149 (JSC::JIT::emit_op_push_scope):
2150 (JSC::JIT::emit_op_pop_scope):
2151 (JSC::JIT::emit_op_to_jsnumber):
2152 (JSC::JIT::emitSlow_op_to_jsnumber):
2153 (JSC::JIT::emit_op_push_new_scope):
2154 (JSC::JIT::emit_op_catch):
2155 (JSC::JIT::emit_op_jmp_scopes):
2156 (JSC::JIT::emit_op_switch_imm):
2157 (JSC::JIT::emit_op_switch_char):
2158 (JSC::JIT::emit_op_switch_string):
2159 (JSC::JIT::emit_op_new_error):
2160 (JSC::JIT::emit_op_debug):
2161 (JSC::JIT::emit_op_enter):
2162 (JSC::JIT::emit_op_enter_with_activation):
2163 (JSC::JIT::emit_op_create_arguments):
2164 (JSC::JIT::emit_op_init_arguments):
2165 (JSC::JIT::emit_op_convert_this):
2166 (JSC::JIT::emitSlow_op_convert_this):
2167 (JSC::JIT::emit_op_profile_will_call):
2168 (JSC::JIT::emit_op_profile_did_call):
2191 Fix spanning branch instruction on Cortex-A8 with Thumb-2 JIT
2240 (JSC::JIT::emit_op_resolve_global):
2298 (JSC::JIT::emit_op_resolve_global):
2305 code that wasn't really tuned for the JIT.
2360 * jit/JIT.cpp:
2361 (JSC::JIT::privateCompileMainPass):
2362 (JSC::JIT::privateCompileSlowCases):
2363 * jit/JIT.h:
2365 (JSC::JIT::emit_op_resolve_global):
2366 (JSC::JIT::emit_op_resolve_global_dynamic):
2367 (JSC::JIT::emitSlow_op_resolve_global):
2368 (JSC::JIT::emitSlow_op_resolve_global_dynamic):
2513 fast to execute since we cannot cache the result, and trivial to JIT generate,
2547 (JSC::JIT::emit_op_debug):
2574 Then add the 32_64 and normal codepaths to the JIT.
2585 * jit/JIT.cpp:
2586 (JSC::JIT::privateCompileMainPass):
2587 (JSC::JIT::privateCompileSlowCases):
2588 * jit/JIT.h:
2590 (JSC::JIT::emit_op_jnless):
2591 (JSC::JIT::emitSlow_op_jnless):
2592 (JSC::JIT::emit_op_jless):
2593 (JSC::JIT::emitSlow_op_jless):
2594 (JSC::JIT::emit_op_jlesseq):
2595 (JSC::JIT::emit_op_jnlesseq):
2596 (JSC::JIT::emitSlow_op_jlesseq):
2597 (JSC::JIT::emitSlow_op_jnlesseq):
2599 (JSC::JIT::emit_op_jnless):
2600 (JSC::JIT::emitSlow_op_jnless):
2601 (JSC::JIT::emit_op_jless):
2602 (JSC::JIT::emitSlow_op_jless):
2603 (JSC::JIT::emit_op_jlesseq):
2604 (JSC::JIT::emit_op_jnlesseq):
2605 (JSC::JIT::emitSlow_op_jlesseq):
2606 (JSC::JIT::emitSlow_op_jnlesseq):
2607 (JSC::JIT::emitBinaryDoubleOp):
2609 (JSC::JIT::emitLoadCharacterString):
2610 (JSC::JIT::isOperandConstantImmediateChar):
2924 [Qt] Enable JIT for QtWebKit on Symbian
2927 JIT on Symbian has been stable for quite some time, it
2955 * jit/JIT.cpp:
2956 (JSC::JIT::privateCompileMainPass):
2957 (JSC::JIT::privateCompileSlowCases):
2959 * jit/JIT.h:
2961 (JSC::JIT::emit_op_urshift):
2962 (JSC::JIT::emitSlow_op_urshift):
2966 (JSC::JIT::emit_op_rshift):
2967 (JSC::JIT::emitSlow_op_rshift):
2968 (JSC::JIT::emit_op_urshift):
2969 (JSC::JIT::emitSlow_op_urshift):
2990 (JSC::JIT::emit_op_rshift):
2991 (JSC::JIT::emitSlow_op_rshift):
3005 (JSC::JIT::emitSlow_op_jnless):
3006 (JSC::JIT::emitSlow_op_jless):
3007 (JSC::JIT::emitSlow_op_jnlesseq):
3008 (JSC::JIT::emit_op_mod):
3009 (JSC::JIT::compileBinaryArithOpSlowCase):
3010 (JSC::JIT::emit_op_div):
3011 (JSC::JIT::compileBinaryArithOp):
3013 (JSC::JIT::emit_op_negate):
3014 (JSC::JIT::emitSlow_op_negate):
3015 (JSC::JIT::emit_op_jnless):
3016 (JSC::JIT::emitSlow_op_jnless):
3017 (JSC::JIT::emit_op_jless):
3018 (JSC::JIT::emitSlow_op_jless):
3019 (JSC::JIT::emit_op_jnlesseq):
3020 (JSC::JIT::emitSlow_op_jnlesseq):
3021 (JSC::JIT::emit_op_lshift):
3022 (JSC::JIT::emitSlow_op_lshift):
3023 (JSC::JIT::emit_op_rshift):
3024 (JSC::JIT::emitSlow_op_rshift):
3025 (JSC::JIT::emit_op_bitand):
3026 (JSC::JIT::emitSlow_op_bitand):
3027 (JSC::JIT::emit_op_bitor):
3028 (JSC::JIT::emitSlow_op_bitor):
3029 (JSC::JIT::emit_op_bitxor):
3030 (JSC::JIT::emitSlow_op_bitxor):
3031 (JSC::JIT::emit_op_bitnot):
3032 (JSC::JIT::emitSlow_op_bitnot):
3033 (JSC::JIT::emit_op_post_inc):
3034 (JSC::JIT::emitSlow_op_post_inc):
3035 (JSC::JIT::emit_op_post_dec):
3036 (JSC::JIT::emitSlow_op_post_dec):
3037 (JSC::JIT::emit_op_pre_inc):
3038 (JSC::JIT::emitSlow_op_pre_inc):
3039 (JSC::JIT::emit_op_pre_dec):
3040 (JSC::JIT::emitSlow_op_pre_dec):
3041 (JSC::JIT::emit_op_add):
3042 (JSC::JIT::emitAdd32Constant):
3043 (JSC::JIT::emitSlow_op_add):
3044 (JSC::JIT::emit_op_sub):
3045 (JSC::JIT::emitSub32Constant):
3046 (JSC::JIT::emitSlow_op_sub):
3047 (JSC::JIT::emitBinaryDoubleOp):
3048 (JSC::JIT::emit_op_mul):
3049 (JSC::JIT::emitSlow_op_mul):
3050 (JSC::JIT::emit_op_div):
3051 (JSC::JIT::emitSlow_op_div):
3052 (JSC::JIT::emit_op_mod):
3053 (JSC::JIT::emitSlow_op_mod):
3165 * jit/JIT.h:
3494 Factor some basic JS interface logic out of JIT and into a superclass
3502 * jit/JIT.h:
3504 (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
4204 * jit/JIT.cpp:
4205 (JSC::JIT::privateCompileMainPass):
4206 * jit/JIT.h:
4686 Move the YARR JIT fallback detection from RegexJIT.cpp to
5202 MIPS JIT Supports
5205 The following changes enable MIPS JIT.
5216 * jit/JIT.h:
5218 (JSC::JIT::preserveReturnAddressAfterCall):
5219 (JSC::JIT::restoreReturnAddressBeforeReturn):
5504 (JSC::JIT::emit_op_negate):
5505 (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match
5558 (JSC::JIT::emit_op_negate): Use the branching version of the negate
5561 (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case.
6386 (JSC::JIT::emit_op_construct_verify):
6388 (JSC::JIT::emit_op_instanceof):
6389 (JSC::JIT::emit_op_jeq_null):
6390 (JSC::JIT::emit_op_jneq_null):
6391 (JSC::JIT::emit_op_get_pnames):
6392 (JSC::JIT::emit_op_convert_this):
6393 (JSC::JIT::emit_op_construct_verify):
6394 (JSC::JIT::emit_op_to_jsnumber):
6395 (JSC::JIT::emit_op_eq_null):
6396 (JSC::JIT::emit_op_neq_null):
6484 * jit/JIT.h:
6523 (JSC::JIT::privateCompileCTIMachineTrampolines):
6572 For the patching routines in the JIT we now need to pass a few
6591 * jit/JIT.cpp:
6592 (JSC::JIT::privateCompileMainPass):
6593 * jit/JIT.h:
6594 (JSC::JIT::compileGetByIdProto):
6595 (JSC::JIT::compileGetByIdSelfList):
6596 (JSC::JIT::compileGetByIdProtoList):
6597 (JSC::JIT::compileGetByIdChainList):
6598 (JSC::JIT::compileGetByIdChain):
6600 (JSC::JIT::privateCompileGetByIdProto):
6601 (JSC::JIT::privateCompileGetByIdSelfList):
6602 (JSC::JIT::privateCompileGetByIdProtoList):
6603 (JSC::JIT::privateCompileGetByIdChainList):
6604 (JSC::JIT::privateCompileGetByIdChain):
6606 (JSC::JIT::privateCompileGetByIdProto):
6607 (JSC::JIT::privateCompileGetByIdSelfList):
6608 (JSC::JIT::privateCompileGetByIdProtoList):
6609 (JSC::JIT::privateCompileGetByIdChainList):
6610 (JSC::JIT::privateCompileGetByIdChain):
6727 MIPS JIT Supports
7148 put (we would need the JIT to dynamically check the value being written matched).
7156 property, and erroneously the put is allowed to be cached by the JIT. Method checks may be
7157 generated caching calls of this structure. Subsequent puts performed from JIT code may
7408 (JSC::JIT::privateCompileGetByIdSelfList):
7410 (JSC::JIT::privateCompileGetByIdSelfList):
7427 * jit/JIT.h:
7428 (JSC::JIT::compileGetByIdProto):
7429 (JSC::JIT::compileGetByIdSelfList):
7430 (JSC::JIT::compileGetByIdProtoList):
7431 (JSC::JIT::compileGetByIdChainList):
7432 (JSC::JIT::compileGetByIdChain):
7434 (JSC::JIT::privateCompileGetByIdProto):
7435 (JSC::JIT::privateCompileGetByIdSelfList):
7436 (JSC::JIT::privateCompileGetByIdProtoList):
7437 (JSC::JIT::privateCompileGetByIdChainList):
7438 (JSC::JIT::privateCompileGetByIdChain):
7440 (JSC::JIT::privateCompileGetByIdProto):
7441 (JSC::JIT::privateCompileGetByIdSelfList):
7442 (JSC::JIT::privateCompileGetByIdProtoList):
7443 (JSC::JIT::privateCompileGetByIdChainList):
7444 (JSC::JIT::privateCompileGetByIdChain):
7523 Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT)
7666 (JSC::JIT::emit_op_put_by_index):
7667 (JSC::JIT::emit_op_put_getter):
7668 (JSC::JIT::emit_op_put_setter):
7669 (JSC::JIT::emit_op_del_by_id):
7670 (JSC::JIT::emit_op_method_check):
7671 (JSC::JIT::emitSlow_op_method_check):
7672 (JSC::JIT::emit_op_get_by_val):
7673 (JSC::JIT::emitSlow_op_get_by_val):
7674 (JSC::JIT::emit_op_put_by_val):
7675 (JSC::JIT::emitSlow_op_put_by_val):
7676 (JSC::JIT::emit_op_get_by_id):
7677 (JSC::JIT::emitSlow_op_get_by_id):
7678 (JSC::JIT::emit_op_put_by_id):
7679 (JSC::JIT::emitSlow_op_put_by_id):
7680 (JSC::JIT::compileGetByIdHotPath):
7681 (JSC::JIT::compileGetByIdSlowCase):
7682 (JSC::JIT::compilePutDirectOffset):
7683 (JSC::JIT::compileGetDirectOffset):
7684 (JSC::JIT::testPrototype):
7685 (JSC::JIT::privateCompilePutByIdTransition):
7686 (JSC::JIT::patchGetByIdSelf):
7687 (JSC::JIT::patchMethodCallProto):
7688 (JSC::JIT::patchPutByIdReplace):
7689 (JSC::JIT::privateCompilePatchGetArrayLength):
7690 (JSC::JIT::privateCompileGetByIdProto):
7691 (JSC::JIT::privateCompileGetByIdSelfList):
7692 (JSC::JIT::privateCompileGetByIdProtoList):
7693 (JSC::JIT::privateCompileGetByIdChainList):
7694 (JSC::JIT::privateCompileGetByIdChain):
7695 (JSC::JIT::emit_op_get_by_pname):
7696 (JSC::JIT::emitSlow_op_get_by_pname):
7727 I'm holding off of implementing this in the JIT until I do some
7728 cleanup to try and making coding in the JIT not be as horrible
7740 * jit/JIT.cpp:
7741 (JSC::JIT::privateCompileMainPass):
7955 (JSC::JIT::privateCompileCTIMachineTrampolines):
8223 Remove uses of PtrAndFlags from JIT data stuctures.
8234 * jit/JIT.cpp:
8235 (JSC::JIT::unlinkCall):
8237 (JSC::JIT::patchMethodCallProto):
8723 Add a soft modulo operation to ARM JIT using a trampoline function.
8729 * jit/JIT.h:
8731 (JSC::JIT::emit_op_mod):
8732 (JSC::JIT::emitSlow_op_mod):
8734 (JSC::JIT::softModulo):
9103 * jit/JIT.h:
9104 (JSC::JIT::compileCTIMachineTrampolines):
9106 (JSC::JIT::privateCompileCTIMachineTrampolines):
9229 [wx] Enable JIT compilation for wx.
9895 [Qt] Fix the build on platforms without JIT support.
9897 The JIT support should be determined at compile-time via wtf/Platform.h
10341 Unreviewed build fix for JIT with RVCT.
10561 * jit/JIT.cpp:
10562 (JSC::JIT::unlinkCall):
10564 (JSC::JIT::patchMethodCallProto):
10630 Remove uses of PtrAndFlags from JIT data stuctures.
10641 * jit/JIT.cpp:
10642 (JSC::JIT::unlinkCall):
10644 (JSC::JIT::patchMethodCallProto):
10978 [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100)
11275 Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT
11298 (JSC::JIT::compileGetDirectOffset):
11325 [Symbian] Port ARM traditional JIT Trampolines to RVCT
11452 [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes.
11667 (JSC::JIT::privateCompileCTIMachineTrampolines):
11971 * jit/JIT.cpp:
11972 * jit/JIT.h:
11975 (JSC::JIT::beginUninterruptedSequence):
11976 (JSC::JIT::restoreArgumentReferenceForTrampoline):
11977 (JSC::JIT::emitCount):
11979 (JSC::JIT::privateCompileCTIMachineTrampolines):
11981 (JSC::JIT::privateCompileGetByIdProto):
11982 (JSC::JIT::privateCompileGetByIdProtoList):
11983 (JSC::JIT::privateCompileGetByIdChainList):
11984 (JSC::JIT::privateCompileGetByIdChain):
12992 * jit/JIT.h:
12993 (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
12994 (JSC::JIT::emit_op_loop_if_true): ditto
12995 (JSC::JIT::emitSlow_op_loop_if_true): ditto
12996 (JSC::JIT::emit_op_loop_if_false): ditto
12997 (JSC::JIT::emitSlow_op_loop_if_false): ditto
12998 (JSC::JIT::emit_op_loop_if_less): ditto
12999 (JSC::JIT::emitSlow_op_loop_if_less): ditto
13271 (JSC::JIT::privateCompileCTIMachineTrampolines):
13327 (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
13629 op_loop_if_less JIT codegen is broken for 64-bit
13633 (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
13654 (JSC::JIT::emit_op_loop_if_false):
13663 (JSC::JIT::emit_op_loop_if_false):
13664 (JSC::JIT::emitSlow_op_loop_if_false):
13673 (JSC::JIT::emitSlow_op_jless):
13682 (JSC::JIT::emitSlow_op_loop_if_less):
13787 * jit/JIT.cpp:
13788 (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
13789 (JSC::JIT::privateCompileSlowCases): ditto
13790 * jit/JIT.h:
13792 (JSC::JIT::emit_op_jless):
13793 (JSC::JIT::emitSlow_op_jless): ditto
13794 (JSC::JIT::emitBinaryDoubleOp): ditto
13796 (JSC::JIT::emitSlow_op_loop_if_less): ditto
13797 (JSC::JIT::emit_op_loop_if_false): ditto
13798 (JSC::JIT::emitSlow_op_loop_if_false): ditto
13873 (JSC::JIT::privateCompileCTIMachineTrampolines):
14091 [Qt] Mac build has JIT disabled
14094 * wtf/Platform.h: Enable JIT for Qt Mac builds
14510 [Qt] Implement symbol hiding for JSC's JIT functions.
14517 implement AIX/POWER JIT.
14639 (JSC::JIT::compileOpCall):
14659 * jit/JIT.h:
14661 (JSC::JIT::compileOpCall):
14663 (JSC::JIT::emit_op_method_check):
14664 (JSC::JIT::compileGetByIdHotPath):
14665 (JSC::JIT::compileGetByIdSlowCase):
14666 (JSC::JIT::emit_op_put_by_id):
14696 * jit/JIT.cpp:
14697 * jit/JIT.h:
14699 (JSC::JIT::privateCompileCTIMachineTrampolines):
15234 (JSC::JIT::emit_op_rshift):
15236 (JSC::JIT::emitFastArithImmToInt):
15264 (JSC::JIT::emit_op_lshift):
15265 (JSC::JIT::emit_op_rshift):
15271 Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
15274 (JSC::JIT::emitPutJITStubArg):
15275 (JSC::JIT::emitPutJITStubArgConstant):
15276 (JSC::JIT::emitGetJITStubArg):
15277 (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
15288 Fix branchDouble behaviour on ARM THUMB2 JIT.
15290 The x86 branchDouble behaviour is reworked, and all JIT
15358 Fix branchDouble behaviour on ARM THUMB2 JIT.
15360 The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
15387 Add a missing assert to the ARMv7 JIT.
15439 Refactor x86-specific behaviour out of the JIT.
15456 (JSC::JIT::emitBinaryDoubleOp):
15457 (JSC::JIT::emit_op_div):
15458 (JSC::JIT::emitSlow_op_jnless):
15459 (JSC::JIT::emitSlow_op_jnlesseq):
15461 (JSC::JIT::emit_op_jfalse):
15659 JSC JIT on ARMv7 cannot link jumps >16Mb range
15687 * jit/JIT.h:
15713 * jit/JIT.cpp:
15714 (JSC::JIT::privateCompileMainPass):
15715 (JSC::JIT::privateCompileSlowCases):
15716 * jit/JIT.h:
15718 (JSC::JIT::compileGetDirectOffset):
15719 (JSC::JIT::emit_op_get_by_pname):
15720 (JSC::JIT::emitSlow_op_get_by_pname):
15773 When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
15805 * jit/JIT.h:
15830 Make the asserts protecting the offsets in the JIT more descriptive.
15832 * jit/JIT.h:
15834 (JSC::JIT::compileOpCall):
15836 (JSC::JIT::emit_op_method_check):
15837 (JSC::JIT::compileGetByIdHotPath):
15838 (JSC::JIT::compileGetByIdSlowCase):
15839 (JSC::JIT::emit_op_put_by_id):
15979 The thunkReturnAddress is on JITStackFrame on ARM JIT as well
15988 * jit/JIT.h: Remove unused ctiReturnRegister
15990 (JSC::JIT::restoreArgumentReference): Ditto.
15991 (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
16090 (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
16101 (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
16156 (JSC::JIT::emit_op_next_pname):
16176 * jit/JIT.h:
16178 (JSC::JIT::testPrototype):
16179 (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
16212 (JSC::JIT::emit_op_instanceof):
16213 (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks -
16340 * jit/JIT.cpp:
16341 (JSC::JIT::privateCompileMainPass):
16342 * jit/JIT.h:
16344 (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
16347 (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
16532 Tested with YARR JIT enabled for Symbian;
16533 This patch does not (yet) enable YARR JIT by default.
16743 Re-enable the JIT.
16775 JIT code generation and dumping, calculate jump offsets from the beginning
16781 SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
16814 * jit/JIT.cpp:
16815 (JSC::JIT::privateCompile):
16817 (JSC::JIT::emit_op_jnless):
16818 (JSC::JIT::emitSlow_op_jnless):
16819 (JSC::JIT::emit_op_jnlesseq):
16820 (JSC::JIT::emitSlow_op_jnlesseq):
16821 (JSC::JIT::emitBinaryDoubleOp):
16823 (JSC::JIT::emit_op_jmp):
16824 (JSC::JIT::emit_op_loop):
16825 (JSC::JIT::emit_op_loop_if_less):
16826 (JSC::JIT::emitSlow_op_loop_if_less):
16827 (JSC::JIT::emit_op_loop_if_lesseq):
16828 (JSC::JIT::emitSlow_op_loop_if_lesseq):
16829 (JSC::JIT::emit_op_loop_if_true):
16830 (JSC::JIT::emitSlow_op_loop_if_true):
16831 (JSC::JIT::emit_op_jfalse):
16832 (JSC::JIT::emitSlow_op_jfalse):
16833 (JSC::JIT::emit_op_jtrue):
16834 (JSC::JIT::emitSlow_op_jtrue):
16835 (JSC::JIT::emit_op_jeq_null):
16836 (JSC::JIT::emit_op_jneq_null):
16837 (JSC::JIT::emit_op_jneq_ptr):
16838 (JSC::JIT::emit_op_jsr):
16839 (JSC::JIT::emit_op_next_pname):
16840 (JSC::JIT::emit_op_jmp_scopes):
16887 Add ARM JIT support for Gtk port (disabled by default)
16981 Fix for JIT'ed op_call instructions (evals, constructs, etc.)
16987 (JSC::JIT::compileOpCall):
17049 When enabling or disabling the JIT through .qmake.cache, make sure
17144 (JSC::JIT::emitSlow_op_get_by_val):
17145 (JSC::JIT::emitSlow_op_put_by_val):
17147 (JSC::JIT::emit_op_get_by_val):
17148 (JSC::JIT::emitSlow_op_get_by_val):
17149 (JSC::JIT::emit_op_put_by_val):
17150 (JSC::JIT::emitSlow_op_put_by_val):
17201 (JSC::JIT::compileOpCall):
17203 (JSC::JIT::emit_op_to_jsnumber):
17204 (JSC::JIT::emit_op_create_arguments):
17206 (JSC::JIT::emitSlow_op_get_by_val):
17207 (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
17248 Allow enabling and disabling of the JIT through a qmake variable.
17342 (JSC::JIT::emit_op_add):
17346 (JSC::JIT::emitSlow_op_add):
17378 * jit/JIT.h:
17380 (JSC::JIT::compileBinaryArithOpSlowCase):
17381 (JSC::JIT::emitSlow_op_add):
17382 (JSC::JIT::emitSlow_op_mul):
17383 (JSC::JIT::emit_op_sub):
17384 (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
17414 * jit/JIT.h:
17460 (JSC::JIT::emit_op_add):
17461 (JSC::JIT::emitSlow_op_add):
17509 stops to crash line if JIT debugging is used.
17705 Hard dependency on SSE2 instruction set with JIT
17712 (JSC::JIT::emitSlow_op_add):
17714 (JSC::JIT::emit_op_jfalse):
17715 (JSC::JIT::emit_op_jtrue):
17902 * jit/JIT.cpp:
17903 (JSC::JIT::privateCompileMainPass):
17904 (JSC::JIT::privateCompileSlowCases):
17905 * jit/JIT.h:
17907 (JSC::JIT::compileBinaryArithOpSlowCase):
17908 (JSC::JIT::emit_op_div):
17909 (JSC::JIT::emitSlow_op_div):
17911 (JSC::JIT::isOperandConstantImmediateDouble):
17912 (JSC::JIT::addressFor):
17913 (JSC::JIT::emitLoadDouble):
17914 (JSC::JIT::emitLoadInt32ToDouble):
17915 (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
18260 Fix stack alignment with ARM THUMB2 JIT.
18512 * jit/JIT.h:
18514 (JSC::JIT::beginUninterruptedSequence):
18515 (JSC::JIT::preserveReturnAddressAfterCall):
18516 (JSC::JIT::restoreReturnAddressBeforeReturn):
18517 (JSC::JIT::restoreArgumentReference):
18518 (JSC::JIT::restoreArgumentReferenceForTrampoline):
19220 DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
19317 DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
19411 Should crash if JIT code buffer allocation fails.
20260 Fix the non-JIT build.
20511 * jit/JIT.h:
20513 (JSC::JIT::compileOpCallSetupArgs):
20514 (JSC::JIT::compileOpConstructSetupArgs):
20515 (JSC::JIT::compileOpCallVarargsSetupArgs):
20516 (JSC::JIT::compileOpCall):
20518 (JSC::JIT::emitPutJITStubArg):
20519 (JSC::JIT::emitPutJITStubArgConstant):
20520 (JSC::JIT::emitGetJITStubArg):
20521 (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
20523 (JSC::JIT::privateCompileCTIMachineTrampolines):
20525 (JSC::JIT::privateCompilePutByIdTransition):
20603 These only exist to allow JIT code to dereference properties off the
20639 * jit/JIT.cpp:
20640 (JSC::JIT::linkCall):
20645 (JSC::JIT::compileOpCallInitializeCallFrame):
20646 (JSC::JIT::compileOpCallSetupArgs):
20647 (JSC::JIT::compileOpCallVarargsSetupArgs):
20648 (JSC::JIT::compileOpConstructSetupArgs):
20649 (JSC::JIT::compileOpCallVarargs):
20650 (JSC::JIT::compileOpCall):
20651 (JSC::JIT::compileOpCallSlowCase):
20656 (JSC::JIT::privateCompileCTIMachineTrampolines):
20714 * jit/JIT.h:
20874 * jit/JIT.cpp:
20875 (JSC::JIT::privateCompile):
20876 * jit/JIT.h:
20877 (JSC::JIT::compile):
20879 (JSC::JIT::privateCompileCTIMachineTrampolines):
20880 (JSC::JIT::emit_op_new_func):
20881 (JSC::JIT::emit_op_new_func_exp):
21113 Fix the build with JIT disabled.
21115 * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
21117 NativeFunctionWrapper is when the JIT is disabled.
21322 Enable JIT on ARM for QT by default
21705 Add optimize call and property access support for ARM JIT.
21739 * jit/JIT.h:
21741 (JSC::JIT::compileOpCall):
21743 (JSC::JIT::beginUninterruptedSequence):
21744 (JSC::JIT::endUninterruptedSequence):
21746 (JSC::JIT::emit_op_method_check):
21747 (JSC::JIT::compileGetByIdHotPath):
21748 (JSC::JIT::compileGetByIdSlowCase):
21749 (JSC::JIT::emit_op_put_by_id):
21940 (JSC::JIT::emit_op_new_func_exp):
22288 Fix compilation with the interpreter instead of the JIT by including
22472 * jit/JIT.cpp:
22473 (JSC::JIT::privateCompileCTIMachineTrampolines):
22474 (JSC::JIT::unlinkCall):
22477 * jit/JIT.h:
22478 (JSC::JIT::compileCTIMachineTrampolines):
22482 (JSC::JIT::compileOpCallSlowCase):
22585 * jit/JIT.h:
22591 Add JIT support for generic ARM port without optimizations.
22594 All JIT optimizations are disabled.
22612 * jit/JIT.h:
22614 (JSC::JIT::restoreArgumentReference):
22877 * jit/JIT.h: adjust patch offsets because of slight code-size change
22936 * jit/JIT.cpp:
22937 (JSC::JIT::privateCompileCTIMachineTrampolines):
22938 (JSC::JIT::unlinkCall):
22941 * jit/JIT.h:
22942 (JSC::JIT::compileCTIMachineTrampolines):
22946 (JSC::JIT::compileOpCallSlowCase):
23030 * jit/JIT.cpp:
23031 (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell
23036 * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because
23037 it's needed by more than just the JIT, and it supplements a standard library
23041 (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed
23079 (JSC::JIT::emit_op_jnless):
23080 (JSC::JIT::emitSlow_op_jnless):
23081 (JSC::JIT::emit_op_jnlesseq):
23082 (JSC::JIT::emitSlow_op_jnlesseq):
23093 (JSC::JIT::emit_op_convert_this):
23098 (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so
23116 * jit/JIT.cpp:
23117 (JSC::JIT::JIT):
23118 * jit/JIT.h: Added data members and helper functions for recording
23125 (JSC::JIT::compileOpCallVarargs):
23126 (JSC::JIT::compileOpCallVarargsSlowCase):
23127 (JSC::JIT::emit_op_ret):
23128 (JSC::JIT::emit_op_construct_verify):
23129 (JSC::JIT::compileOpCall):
23130 (JSC::JIT::compileOpCallSlowCase): Chain function call results.
23133 (JSC::JIT::emitLoadTag):
23134 (JSC::JIT::emitLoadPayload):
23135 (JSC::JIT::emitLoad):
23136 (JSC::JIT::emitLoad2):
23137 (JSC::JIT::isLabeled):
23138 (JSC::JIT::map):
23139 (JSC::JIT::unmap):
23140 (JSC::JIT::isMapped):
23141 (JSC::JIT::getMappedPayload):
23142 (JSC::JIT::getMappedTag): Use helper functions when loading virtual
23147 (JSC::JIT::emit_op_mov):
23148 (JSC::JIT::emit_op_end):
23149 (JSC::JIT::emit_op_instanceof):
23150 (JSC::JIT::emit_op_get_global_var):
23151 (JSC::JIT::emit_op_put_global_var):
23152 (JSC::JIT::emit_op_get_scoped_var):
23153 (JSC::JIT::emit_op_put_scoped_var):
23154 (JSC::JIT::emit_op_to_primitive):
23155 (JSC::JIT::emit_op_resolve_global):
23156 (JSC::JIT::emit_op_jneq_ptr):
23157 (JSC::JIT::emit_op_next_pname):
23158 (JSC::JIT::emit_op_to_jsnumber):
23159 (JSC::JIT::emit_op_catch): Chain results from these opcodes.
23161 (JSC::JIT::emit_op_profile_will_call):
23162 (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to
23166 (JSC::JIT::emit_op_method_check):
23167 (JSC::JIT::emit_op_get_by_val):
23168 (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes.
23185 * jit/JIT.h:
23187 (JSC::JIT::emit_op_jnless):
23188 (JSC::JIT::emit_op_jnlesseq):
23189 (JSC::JIT::emitBinaryDoubleOp):
23198 (JSC::JIT::emit_op_div):
23209 (JSC::JIT::emitSlow_op_jnless):
23210 (JSC::JIT::emitSlow_op_jnlesseq):
23211 (JSC::JIT::emitBinaryDoubleOp):
23226 (JSC::JIT::emit_op_mod):
23227 (JSC::JIT::emitSlow_op_mod):
23237 (JSC::JIT::emit_op_mul):
23238 (JSC::JIT::emitSlow_op_mul):
23249 * jit/JIT.h:
23251 (JSC::JIT::emit_op_add):
23252 (JSC::JIT::emitAdd32Constant):
23253 (JSC::JIT::emitSlow_op_add):
23254 (JSC::JIT::emit_op_sub):
23255 (JSC::JIT::emitSub32Constant):
23256 (JSC::JIT::emitSlow_op_sub):
23266 (JSC::JIT::emitAdd32Constant):
23267 (JSC::JIT::emitBinaryDoubleOp):
23277 (JSC::JIT::emit_op_post_inc):
23278 (JSC::JIT::emitSlow_op_post_inc):
23279 (JSC::JIT::emit_op_post_dec):
23280 (JSC::JIT::emitSlow_op_post_dec):
23291 * jit/JIT.h:
23293 (JSC::JIT::emit_op_jnless):
23294 (JSC::JIT::emit_op_jnlesseq):
23295 (JSC::JIT::emit_op_lshift):
23296 (JSC::JIT::emit_op_rshift):
23297 (JSC::JIT::emit_op_bitand):
23298 (JSC::JIT::emit_op_bitor):
23299 (JSC::JIT::emit_op_bitxor):
23301 (JSC::JIT::isOperandConstantImmediateInt):
23302 (JSC::JIT::getOperandConstantImmediateInt):
23310 * jit/JIT.h:
23312 (JSC::JIT::emitAdd32Constant):
23313 (JSC::JIT::emitBinaryDoubleOp):
23314 (JSC::JIT::emit_op_div):
23316 (JSC::JIT::emitLoadDouble):
23317 (JSC::JIT::emitLoadInt32ToDouble):
23318 (JSC::JIT::emitStoreDouble):
23320 (JSC::JIT::emit_op_jfalse):
23321 (JSC::JIT::emit_op_jtrue):
23327 * jit/JIT.cpp:
23328 (JSC::JIT::privateCompileSlowCases):
23329 * jit/JIT.h:
23331 (JSC::JIT::emit_op_loop_if_less):
23332 (JSC::JIT::emit_op_loop_if_lesseq):
23333 (JSC::JIT::emit_op_resolve_global):
23334 (JSC::JIT::emitSlow_op_resolve_global):
23335 (JSC::JIT::emit_op_eq):
23336 (JSC::JIT::emitSlow_op_eq):
23337 (JSC::JIT::emit_op_neq):
23338 (JSC::JIT::emitSlow_op_neq):
23344 * jit/JIT.cpp:
23345 (JSC::JIT::privateCompileSlowCases):
23346 * jit/JIT.h:
23348 (JSC::JIT::emit_op_loop_if_less):
23349 (JSC::JIT::emit_op_loop_if_lesseq):
23350 (JSC::JIT::emit_op_resolve_global):
23351 (JSC::JIT::emit_op_eq):
23352 (JSC::JIT::emitSlow_op_eq):
23353 (JSC::JIT::emit_op_neq):
23354 (JSC::JIT::emitSlow_op_neq):
23363 * jit/JIT.cpp:
23364 (JSC::JIT::privateCompileSlowCases):
23365 * jit/JIT.h:
23367 (JSC::JIT::emit_op_loop_if_less):
23368 (JSC::JIT::emit_op_loop_if_lesseq):
23369 (JSC::JIT::emit_op_resolve_global):
23370 (JSC::JIT::emitSlow_op_resolve_global):
23371 (JSC::JIT::emit_op_eq):
23372 (JSC::JIT::emitSlow_op_eq):
23373 (JSC::JIT::emit_op_neq):
23374 (JSC::JIT::emitSlow_op_neq):
23383 * jit/JIT.h:
23385 (JSC::JIT::emit_op_negate):
23386 (JSC::JIT::emit_op_lshift):
23387 (JSC::JIT::emit_op_rshift):
23388 (JSC::JIT::emit_op_bitand):
23389 (JSC::JIT::emitBitAnd32Constant):
23390 (JSC::JIT::emit_op_bitor):
23391 (JSC::JIT::emitBitOr32Constant):
23392 (JSC::JIT::emit_op_bitxor):
23393 (JSC::JIT::emitBitXor32Constant):
23394 (JSC::JIT::emit_op_bitnot):
23395 (JSC::JIT::emit_op_post_inc):
23396 (JSC::JIT::emit_op_post_dec):
23397 (JSC::JIT::emit_op_pre_inc):
23398 (JSC::JIT::emit_op_pre_dec):
23399 (JSC::JIT::emit_op_add):
23400 (JSC::JIT::emitAdd32Constant):
23401 (JSC::JIT::emit_op_sub):
23402 (JSC::JIT::emitSub32ConstantLeft):
23403 (JSC::JIT::emitSub32ConstantRight):
23404 (JSC::JIT::emit_op_mul):
23405 (JSC::JIT::emitSlow_op_mul):
23406 (JSC::JIT::emit_op_div):
23407 (JSC::JIT::emit_op_mod):
23409 (JSC::JIT::emit_op_load_varargs):
23411 (JSC::JIT::emitStoreInt32):
23412 (JSC::JIT::emitStoreCell):
23413 (JSC::JIT::emitStoreBool):
23414 (JSC::JIT::emitStore):
23416 (JSC::JIT::emit_op_instanceof):
23417 (JSC::JIT::emit_op_not):
23418 (JSC::JIT::emit_op_eq):
23419 (JSC::JIT::emitSlow_op_eq):
23420 (JSC::JIT::emit_op_neq):
23421 (JSC::JIT::emitSlow_op_neq):
23422 (JSC::JIT::compileOpStrictEq):
23423 (JSC::JIT::emit_op_eq_null):
23424 (JSC::JIT::emit_op_neq_null):
23437 * jit/JIT.h:
23439 (JSC::JIT::emitLoad):
23440 (JSC::JIT::emitLoad2):
23442 (JSC::JIT::emit_op_get_by_val):
23443 (JSC::JIT::emitSlow_op_get_by_val):
23444 (JSC::JIT::emit_op_put_by_val):
23445 (JSC::JIT::emitSlow_op_put_by_val):
23446 (JSC::JIT::emit_op_put_by_id):
23447 (JSC::JIT::emitSlow_op_put_by_id):
23448 (JSC::JIT::patchPutByIdReplace):
23460 (JSC::JIT::emitAdd32Constant):
23461 (JSC::JIT::emitBinaryDoubleOp):
23462 (JSC::JIT::emit_op_div):
23474 (JSC::JIT::emit_op_jfalse):
23475 (JSC::JIT::emit_op_jtrue):
23486 * jit/JIT.cpp:
23487 (JSC::JIT::privateCompileCTIMachineTrampolines):
23488 * jit/JIT.h:
23490 (JSC::JIT::emit_op_method_check):
23491 (JSC::JIT::emit_op_get_by_id):
23492 (JSC::JIT::compileGetByIdHotPath):
23493 (JSC::JIT::compileGetByIdSlowCase):
23494 (JSC::JIT::patchGetByIdSelf):
23495 (JSC::JIT::privateCompilePatchGetArrayLength):
23496 (JSC::JIT::privateCompileGetByIdProto):
23497 (JSC::JIT::privateCompileGetByIdSelfList):
23498 (JSC::JIT::privateCompileGetByIdProtoList):
23499 (JSC::JIT::privateCompileGetByIdChainList):
23500 (JSC::JIT::privateCompileGetByIdChain):
23510 * jit/JIT.cpp:
23511 (JSC::JIT::privateCompileCTIMachineTrampolines):
23513 (JSC::JIT::compileOpCallInitializeCallFrame):
23514 (JSC::JIT::compileOpCallSetupArgs):
23515 (JSC::JIT::compileOpConstructSetupArgs):
23516 (JSC::JIT::compileOpCallVarargsSetupArgs):
23517 (JSC::JIT::compileOpCallVarargs):
23518 (JSC::JIT::compileOpCall):
23519 (JSC::JIT::compileOpCallSlowCase):
23532 (JSC::JIT::emit_op_mul):
23533 (JSC::JIT::emitSlow_op_mul):
23553 (JSC::JIT::emitSlow_op_bitnot):
23554 (JSC::JIT::emit_op_post_inc):
23563 (JSC::JIT::emit_op_bitnot):
23564 (JSC::JIT::emit_op_post_dec):
23565 (JSC::JIT::emit_op_pre_inc):
23566 (JSC::JIT::emitSlow_op_pre_inc):
23567 (JSC::JIT::emit_op_pre_dec):
23568 (JSC::JIT::emitSlow_op_pre_dec):
23577 (JSC::JIT::emit_op_negate):
23578 (JSC::JIT::emitSlow_op_negate):
23580 (JSC::JIT::emit_op_construct_verify):
23581 (JSC::JIT::emitSlow_op_construct_verify):
23590 (JSC::JIT::emit_op_loop_if_true):
23591 (JSC::JIT::emit_op_jfalse):
23592 (JSC::JIT::emit_op_jtrue):
23593 (JSC::JIT::emit_op_jeq_null):
23594 (JSC::JIT::emit_op_jneq_null):
23595 (JSC::JIT::emit_op_eq_null):
23596 (JSC::JIT::emit_op_neq_null):
23634 * jit/JIT.h:
23636 (JSC::JIT::emit_op_method_check):
23637 (JSC::JIT::emitSlow_op_method_check):
23638 (JSC::JIT::emit_op_get_by_id):
23639 (JSC::JIT::compileGetByIdHotPath):
23640 (JSC::JIT::emitSlow_op_get_by_id):
23641 (JSC::JIT::compileGetByIdSlowCase):
23653 (JSC::JIT::emit_op_to_jsnumber):
23654 (JSC::JIT::emitSlow_op_to_jsnumber):
23655 (JSC::JIT::emit_op_convert_this):
23656 (JSC::JIT::emitSlow_op_convert_this):
23675 * jit/JIT.cpp:
23676 (JSC::JIT::privateCompileMainPass):
23677 * jit/JIT.h:
23679 (JSC::JIT::emit_op_get_scoped_var):
23680 (JSC::JIT::emit_op_put_scoped_var):
23681 (JSC::JIT::emit_op_to_primitive):
23682 (JSC::JIT::emitSlow_op_to_primitive):
23698 (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload
23702 (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in
23705 (JSC::JIT::emit_op_get_global_var):
23706 (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent
23754 * jit/JIT.cpp:
23755 (JSC::JIT::JIT):
23756 (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result
23760 (JSC::JIT::privateCompileMainPass):
23761 (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister()
23764 * jit/JIT.h:
23766 (JSC::JIT::emit_op_jnless):
23767 (JSC::JIT::emit_op_jnlesseq):
23769 (JSC::JIT::emitGetFromCallFrameHeaderPtr):
23770 (JSC::JIT::emitGetFromCallFrameHeader32):
23772 (JSC::JIT::emit_op_jmp):
23773 (JSC::JIT::emit_op_jfalse):
23774 (JSC::JIT::emit_op_jtrue):
23775 (JSC::JIT::emit_op_jeq_null):
23776 (JSC::JIT::emit_op_jneq_null):
23777 (JSC::JIT::emit_op_jneq_ptr):
23778 (JSC::JIT::emit_op_jsr):
23779 (JSC::JIT::emit_op_sret):
23780 (JSC::JIT::emit_op_jmp_scopes): ditto
23785 you passed to a JIT stub, for use in emitTimeoutCheck.
23793 * jit/JIT.h:
23795 (JSC::JIT::emit_op_bitand):
23796 (JSC::JIT::emit_op_bitor):
23797 (JSC::JIT::emit_op_bitxor):
23798 (JSC::JIT::emit_op_add):
23799 (JSC::JIT::emit_op_sub):
23800 (JSC::JIT::emit_op_mul):
23810 * jit/JIT.h:
23812 (JSC::JIT::emit_op_negate):
23813 (JSC::JIT::emit_op_jnless):
23814 (JSC::JIT::emit_op_jnlesseq):
23815 (JSC::JIT::emit_op_lshift):
23816 (JSC::JIT::emit_op_rshift):
23817 (JSC::JIT::emit_op_bitand):
23818 (JSC::JIT::emitBitAnd32Constant):
23819 (JSC::JIT::emitBitAnd32InPlace):
23820 (JSC::JIT::emit_op_bitor):
23821 (JSC::JIT::emitBitOr32Constant):
23822 (JSC::JIT::emitBitOr32InPlace):
23823 (JSC::JIT::emit_op_bitxor):
23824 (JSC::JIT::emitBitXor32Constant):
23825 (JSC::JIT::emitBitXor32InPlace):
23826 (JSC::JIT::emit_op_bitnot):
23827 (JSC::JIT::emit_op_post_inc):
23828 (JSC::JIT::emit_op_post_dec):
23829 (JSC::JIT::emit_op_pre_inc):
23830 (JSC::JIT::emitSlow_op_pre_inc):
23831 (JSC::JIT::emit_op_pre_dec):
23832 (JSC::JIT::emitSlow_op_pre_dec):
23833 (JSC::JIT::emit_op_add):
23834 (JSC::JIT::emitAdd32Constant):
23835 (JSC::JIT::emitAdd32InPlace):
23836 (JSC::JIT::emitSlow_op_add):
23837 (JSC::JIT::emitSlowAdd32Constant):
23838 (JSC::JIT::emit_op_sub):
23839 (JSC::JIT::emitSlow_op_sub):
23840 (JSC::JIT::emitSub32ConstantLeft):
23841 (JSC::JIT::emitSub32ConstantRight):
23842 (JSC::JIT::emitSub32InPlaceLeft):
23843 (JSC::JIT::emitSub32InPlaceRight):
23844 (JSC::JIT::emitBinaryDoubleOp):
23845 (JSC::JIT::emit_op_mul):
23846 (JSC::JIT::emitMul32InPlace):
23847 (JSC::JIT::emit_op_div):
23848 (JSC::JIT::emit_op_mod):
23850 (JSC::JIT::compileOpCallVarargs):
23852 (JSC::JIT::emit_op_loop_if_less):
23853 (JSC::JIT::emit_op_loop_if_lesseq):
23854 (JSC::JIT::emit_op_instanceof):
23855 (JSC::JIT::emit_op_to_primitive):
23856 (JSC::JIT::emit_op_not):
23857 (JSC::JIT::emit_op_jneq_ptr):
23858 (JSC::JIT::emit_op_eq):
23859 (JSC::JIT::emit_op_neq):
23860 (JSC::JIT::emit_op_to_jsnumber):
23862 (JSC::JIT::emit_op_get_by_val):
23863 (JSC::JIT::emit_op_put_by_val):
23870 we don't have to work around them in JIT code generation.
23923 * jit/JIT.h:
23925 (JSC::JIT::compileOpCallVarargs):
23926 (JSC::JIT::compileOpCallVarargsSlowCase):
23927 (JSC::JIT::compileOpCall):
23928 (JSC::JIT::compileOpCallSlowCase):
23930 (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
23931 (JSC::JIT::linkSlowCaseIfNotJSCell):
23933 (JSC::JIT::emit_op_instanceof):
23934 (JSC::JIT::emitSlow_op_instanceof):
23936 (JSC::JIT::emit_op_get_by_val):
23937 (JSC::JIT::emitSlow_op_get_by_val):
23938 (JSC::JIT::emit_op_put_by_val):
23939 (JSC::JIT::emitSlow_op_put_by_val):
23940 (JSC::JIT::emit_op_get_by_id):
23941 (JSC::JIT::emitSlow_op_get_by_id):
23942 (JSC::JIT::emit_op_put_by_id):
23943 (JSC::JIT::emitSlow_op_put_by_id):
23962 (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try
23976 (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse
23994 (JSC::JIT::emit_op_mod):
23995 (JSC::JIT::emitSlow_op_mod):
24004 (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the
24031 (JSC::JIT::emit_op_negate):
24042 (JSC::JIT::emitSlow_op_eq):
24043 (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation,
24056 (JSC::JIT::emit_op_eq):
24057 (JSC::JIT::emitSlow_op_eq):
24058 (JSC::JIT::emit_op_neq):
24059 (JSC::JIT::emitSlow_op_neq):
24077 (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub.
24078 (JSC::JIT::emitSlow_op_sub): Ditto.
24091 * jit/JIT.h:
24093 (JSC::JIT::emit_op_mul):
24094 (JSC::JIT::emitSlow_op_mul):
24095 (JSC::JIT::emitMul32InPlace):
24103 * jit/JIT.h:
24105 (JSC::JIT::emit_op_add):
24106 (JSC::JIT::emitAdd32Constant):
24107 (JSC::JIT::emitSlow_op_add):
24108 (JSC::JIT::emitSlowAdd32Constant):
24110 (JSC::JIT::getConstantOperandImmediateDouble):
24111 (JSC::JIT::isOperandConstantImmediateDouble):
24127 * jit/JIT.h:
24129 (JSC::JIT::emit_op_jnless):
24130 (JSC::JIT::emitSlow_op_jnless):
24131 (JSC::JIT::emit_op_jnlesseq):
24132 (JSC::JIT::emitSlow_op_jnlesseq):
24133 (JSC::JIT::emit_op_add):
24134 (JSC::JIT::emit_op_sub):
24135 (JSC::JIT::emitBinaryDoubleOp):
24136 (JSC::JIT::emit_op_mul):
24137 (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump
24141 (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients
24156 * jit/JIT.cpp:
24157 (JSC::JIT::privateCompileMainPass):
24158 (JSC::JIT::privateCompileSlowCases):
24159 * jit/JIT.h:
24161 (JSC::JIT::emit_op_negate):
24162 (JSC::JIT::emitSlow_op_negate):
24171 * jit/JIT.h:
24180 (JSC::JIT::emit_op_sub):
24181 (JSC::JIT::emitSlow_op_sub):
24182 (JSC::JIT::emitSlowSub32InPlaceLeft):
24183 (JSC::JIT::emitBinaryDoubleOp):
24202 * jit/JIT.cpp:
24203 (JSC::JIT::privateCompileMainPass):
24204 (JSC::JIT::privateCompileSlowCases):
24205 * jit/JIT.h:
24207 (JSC::JIT::emitBinaryDoubleOp):
24208 (JSC::JIT::emit_op_div):
24209 (JSC::JIT::emitSlow_op_div):
24218 (JSC::JIT::emit_op_add):
24219 (JSC::JIT::emitSlow_op_add):
24220 (JSC::JIT::emitSlowAdd32InPlace):
24221 (JSC::JIT::emitBinaryDoubleOp):
24222 (JSC::JIT::emit_op_mul):
24223 (JSC::JIT::emitSlow_op_mul):
24232 * jit/JIT.h:
24234 (JSC::JIT::emitBinaryDoubleOp):
24235 (JSC::JIT::emit_op_mul):
24237 (JSC::JIT::compileOpCallInitializeCallFrame):
24250 (JSC::JIT::emit_op_mul):
24251 (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic.
24253 * jit/JIT.h:
24255 (JSC::JIT::addressFor): New function, useful for addressing a JSValue's
24264 * jit/JIT.cpp:
24265 (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards
24268 (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue.
24271 (JSC::JIT::compileOpCall): Update to account for the new JSValue representation
24272 (JSC::JIT::compileOpCallSlowCase): Ditto.
24285 * jit/JIT.cpp:
24286 (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline
24288 * jit/JIT.h: Add new constants for patch offsets.
24291 (JSC::JIT::emit_op_get_by_id):
24292 (JSC::JIT::emitSlow_op_get_by_id):
24293 (JSC::JIT::emit_op_put_by_id):
24294 (JSC::JIT::emitSlow_op_put_by_id):
24295 (JSC::JIT::compilePutDirectOffset):
24296 (JSC::JIT::compileGetDirectOffset):
24297 (JSC::JIT::privateCompilePutByIdTransition):
24298 (JSC::JIT::patchGetByIdSelf):
24299 (JSC::JIT::patchPutByIdReplace):
24300 (JSC::JIT::privateCompilePatchGetArrayLength):
24301 (JSC::JIT::privateCompileGetByIdProto):
24302 (JSC::JIT::privateCompileGetByIdSelfList):
24303 (JSC::JIT::privateCompileGetByIdProtoList):
24304 (JSC::JIT::privateCompileGetByIdChainList):
24305 (JSC::JIT::privateCompileGetByIdChain):
24337 (JSC::JIT::emit_op_put_by_val):
24338 (JSC::JIT::emitSlow_op_put_by_val):
24346 * jit/JIT.cpp:
24348 (JSC::JIT::emit_op_get_by_val):
24349 (JSC::JIT::emitSlow_op_get_by_val):
24361 (JSC::JIT::emit_op_mul):
24362 (JSC::JIT::emitSlow_op_mul):
24363 (JSC::JIT::emitMul32Constant):
24364 (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when
24374 (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1,
24384 (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype,
24394 (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits
24415 (JSC::JIT::emit_op_loop_if_true):
24425 (JSC::JIT::emit_op_neq):
24435 (JSC::JIT::emitSlow_op_mod):
24446 'arguments' virtual register, since this register is accessible from JIT
24470 (JSC::JIT::emit_op_jfalse):
24471 (JSC::JIT::emit_op_jtrue):
24481 (JSC::JIT::emit_op_loop_if_less):
24482 (JSC::JIT::emit_op_loop_if_lesseq):
24491 (JSC::JIT::emit_op_jnless):
24492 (JSC::JIT::emit_op_jnlesseq):
24503 (JSC::JIT::emit_op_enter):
24504 (JSC::JIT::emit_op_enter_with_activation):
24517 * jit/JIT.cpp:
24518 * jit/JIT.h:
24520 (JSC::JIT::emitLoadTag):
24521 (JSC::JIT::emitLoadPayload): Added helper functions for dealing with
24526 (JSC::JIT::compileOpStrictEq):
24527 (JSC::JIT::emitSlow_op_stricteq):
24528 (JSC::JIT::emitSlow_op_nstricteq): teh opcodez.
24542 * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax,
24557 (JSC::JIT::emitSlow_op_get_by_val):
24558 (JSC::JIT::emitSlow_op_put_by_val):
24568 (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
24569 (JSC::JIT::emitStore): Changed to use helper functions.
24572 (JSC::JIT::emit_op_instanceof):
24573 (JSC::JIT::emitSlow_op_instanceof): Ported from TOT.
24583 (JSC::JIT::emit_op_catch):
24592 (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction.
24593 (JSC::JIT::emit_op_catch): Filled out.
24602 (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its
24605 (JSC::JIT::emit_op_loop_if_true): Similar to the old version
24608 (JSC::JIT::emitSlow_op_loop_if_true):
24610 (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only
24612 (JSC::JIT::emitSlow_op_jfalse):
24614 (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except
24616 (JSC::JIT::emitSlow_op_jtrue):
24618 (JSC::JIT::emit_op_jeq_null): Very similar to the implementation
24621 (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq.
24630 (JSC::JIT::compileOpCallVarargsSetupArgs):
24631 (JSC::JIT::compileOpCallVarargs):
24632 (JSC::JIT::emit_op_call):
24633 (JSC::JIT::emit_op_call_eval):
24634 (JSC::JIT::emit_op_load_varargs):
24635 (JSC::JIT::emit_op_call_varargs):
24636 (JSC::JIT::emit_op_construct):
24638 (JSC::JIT::emit_op_jneq_ptr):
24647 (JSC::JIT::compileOpCallVarargsSetupArgs):
24648 (JSC::JIT::compileOpCall):
24659 (JSC::JIT::emit_op_not):
24660 (JSC::JIT::emitSlow_op_not):
24669 (JSC::JIT::emit_op_loop_if_less):
24670 (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed
24673 (JSC::JIT::emit_op_resolve_global):
24690 (JSC::JIT::emit_op_to_jsnumber):
24691 (JSC::JIT::emitSlow_op_to_jsnumber):
24700 (JSC::JIT::emit_op_convert_this):
24701 (JSC::JIT::emitSlow_op_convert_this):
24709 * jit/JIT.cpp:
24710 (JSC::JIT::privateCompileCTIMachineTrampolines):
24711 * jit/JIT.h:
24713 (JSC::JIT::compileOpCallSetupArgs):
24714 (JSC::JIT::compileOpCallVarargsSetupArgs):
24715 (JSC::JIT::compileOpConstructSetupArgs):
24716 (JSC::JIT::emit_op_ret):
24717 (JSC::JIT::emit_op_construct_verify):
24718 (JSC::JIT::emitSlow_op_construct_verify):
24719 (JSC::JIT::emitSlow_op_call):
24720 (JSC::JIT::emitSlow_op_call_eval):
24721 (JSC::JIT::emitSlow_op_call_varargs):
24722 (JSC::JIT::emitSlow_op_construct):
24723 (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out.
24726 (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
24727 (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions,
24731 (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will
24751 (JSC::JIT::emit_op_stricteq):
24752 (JSC::JIT::emitSlow_op_stricteq):
24753 (JSC::JIT::emit_op_nstricteq):
24754 (JSC::JIT::emitSlow_op_nstricteq):
24755 (JSC::JIT::emit_op_eq_null):
24756 (JSC::JIT::emit_op_neq_null):
24766 (JSC::JIT::emit_op_new_error):
24777 * jit/JIT.cpp:
24778 * jit/JIT.h:
24787 (JSC::JIT::emitSlow_op_construct_verify):
24788 (JSC::JIT::emit_op_to_primitive):
24789 (JSC::JIT::emitSlow_op_to_primitive):
24790 (JSC::JIT::emitSlow_op_loop_if_true):
24791 (JSC::JIT::emit_op_jtrue):
24792 (JSC::JIT::emit_op_next_pname):
24801 * jit/JIT.h:
24803 (JSC::JIT::tagFor):
24804 (JSC::JIT::payloadFor):
24805 (JSC::JIT::emitLoad):
24806 (JSC::JIT::emitStore):
24807 (JSC::JIT::emitLoadReturnValue):
24809 (JSC::JIT::emit_op_get_global_var):
24810 (JSC::JIT::emit_op_put_global_var):
24811 (JSC::JIT::emit_op_get_scoped_var):
24812 (JSC::JIT::emit_op_put_scoped_var):
24813 (JSC::JIT::emit_op_unexpected_load):
24821 * jit/JIT.h:
24823 (JSC::JIT::emitSlow_op_sub):
24824 (JSC::JIT::emitSlowSub32InPlaceLeft):
24833 * jit/JIT.h:
24835 (JSC::JIT::emit_op_get_by_id):
24836 (JSC::JIT::emitSlow_op_get_by_id):
24837 (JSC::JIT::emit_op_put_by_id):
24838 (JSC::JIT::emitSlow_op_put_by_id):
24860 (JSC::JIT::emitSlow_op_put_by_id):
24861 (JSC::JIT::emitSlow_op_get_by_id):
24862 (JSC::JIT::emit_op_get_by_val):
24863 (JSC::JIT::emitSlow_op_get_by_val):
24864 (JSC::JIT::emit_op_put_by_val):
24865 (JSC::JIT::emitSlow_op_put_by_val):
24866 (JSC::JIT::emit_op_put_by_index):
24867 (JSC::JIT::emit_op_put_getter):
24868 (JSC::JIT::emit_op_put_setter):
24869 (JSC::JIT::emit_op_del_by_id):
24870 (JSC::JIT::compileGetByIdHotPath):
24871 (JSC::JIT::compilePutByIdHotPath):
24891 * jit/JIT.h:
24893 (JSC::JIT::emitSlow_op_add):
24894 (JSC::JIT::emitSlowAdd32InPlace):
24903 (JSC::JIT::emitSlow_op_jnless):
24904 (JSC::JIT::emitSlow_op_jnlesseq):
24914 (JSC::JIT::emit_op_jnless):
24915 (JSC::JIT::emitSlow_op_jnless):
24916 (JSC::JIT::emit_op_jnlesseq):
24917 (JSC::JIT::emitSlow_op_jnlesseq):
24919 (JSC::JIT::emit_op_loop_if_less):
24920 (JSC::JIT::emitSlow_op_loop_if_less):
24921 (JSC::JIT::emit_op_loop_if_lesseq):
24922 (JSC::JIT::emitSlow_op_loop_if_lesseq):
24930 * jit/JIT.h:
24932 (JSC::JIT::recordJumpTarget):
24934 (JSC::JIT::emit_op_jmp):
24935 (JSC::JIT::emit_op_jsr):
24936 (JSC::JIT::emit_op_jmp_scopes):
24954 (JSC::JIT::emit_op_post_inc):
24955 (JSC::JIT::emitSlow_op_post_inc):
24956 (JSC::JIT::emit_op_post_dec):
24957 (JSC::JIT::emitSlow_op_post_dec):
24958 (JSC::JIT::emitSlow_op_pre_inc):
24959 (JSC::JIT::emitSlow_op_pre_dec):
24968 (JSC::JIT::emit_op_jmp):
24969 (JSC::JIT::emit_op_loop):
24970 (JSC::JIT::emit_op_eq):
24971 (JSC::JIT::emitSlow_op_eq):
24972 (JSC::JIT::emit_op_neq):
24973 (JSC::JIT::emitSlow_op_neq):
24974 (JSC::JIT::emit_op_enter):
24975 (JSC::JIT::emit_op_enter_with_activation):
24984 (JSC::JIT::emitSlow_op_lshift):
24985 (JSC::JIT::emitSlow_op_rshift):
24986 (JSC::JIT::emitSlow_op_bitand):
24987 (JSC::JIT::emitSlow_op_bitor):
24988 (JSC::JIT::emitSlow_op_bitxor):
24989 (JSC::JIT::emitSlow_op_bitnot):
24990 (JSC::JIT::emitSlow_op_sub):
24991 (JSC::JIT::emitSlow_op_mul):
24992 (JSC::JIT::emitSlow_op_mod):
24993 (JSC::JIT::emit_op_mod):
25006 (JSC::JIT::emit_op_bitnot):
25014 * jit/JIT.h:
25016 (JSC::JIT::emit_op_jnless):
25017 (JSC::JIT::emitSlow_op_jnless):
25018 (JSC::JIT::emit_op_jnlesseq):
25019 (JSC::JIT::emitSlow_op_jnlesseq):
25020 (JSC::JIT::emit_op_lshift):
25021 (JSC::JIT::emitSlow_op_lshift):
25022 (JSC::JIT::emit_op_rshift):
25023 (JSC::JIT::emitSlow_op_rshift):
25024 (JSC::JIT::emit_op_bitand):
25025 (JSC::JIT::emitBitAnd32Constant):
25026 (JSC::JIT::emitBitAnd32InPlace):
25027 (JSC::JIT::emit_op_bitor):
25028 (JSC::JIT::emitSlow_op_bitor):
25029 (JSC::JIT::emitBitOr32Constant):
25030 (JSC::JIT::emitBitOr32InPlace):
25031 (JSC::JIT::emit_op_bitxor):
25032 (JSC::JIT::emitSlow_op_bitxor):
25033 (JSC::JIT::emitBitXor32Constant):
25034 (JSC::JIT::emitBitXor32InPlace):
25035 (JSC::JIT::emit_op_bitnot):
25036 (JSC::JIT::emitSlow_op_bitnot):
25037 (JSC::JIT::emit_op_post_inc):
25038 (JSC::JIT::emitSlow_op_post_inc):
25039 (JSC::JIT::emit_op_post_dec):
25040 (JSC::JIT::emitSlow_op_post_dec):
25041 (JSC::JIT::emit_op_pre_inc):
25042 (JSC::JIT::emitSlow_op_pre_inc):
25043 (JSC::JIT::emit_op_pre_dec):
25044 (JSC::JIT::emitSlow_op_pre_dec):
25045 (JSC::JIT::emit_op_add):
25046 (JSC::JIT::emitAdd32Constant):
25047 (JSC::JIT::emitAdd32InPlace):
25048 (JSC::JIT::emitSlow_op_add):
25049 (JSC::JIT::emit_op_sub):
25050 (JSC::JIT::emitSlow_op_sub):
25051 (JSC::JIT::emitSub32ConstantLeft):
25052 (JSC::JIT::emitSub32ConstantRight):
25053 (JSC::JIT::emitSub32InPlaceLeft):
25054 (JSC::JIT::emitSub32InPlaceRight):
25055 (JSC::JIT::emit_op_mul):
25056 (JSC::JIT::emitSlow_op_mul):
25057 (JSC::JIT::emitMul32Constant):
25058 (JSC::JIT::emitMul32InPlace):
25059 (JSC::JIT::emit_op_mod):
25060 (JSC::JIT::emitSlow_op_mod):
25070 * jit/JIT.h:
25088 Turned on the JIT and got it building and running the most trivial of
25100 * jit/JIT.cpp:
25101 (JSC::JIT::compileOpStrictEq):
25102 * jit/JIT.h:
25104 (JSC::JIT::emit_op_lshift):
25105 (JSC::JIT::emitSlow_op_lshift):
25106 (JSC::JIT::emit_op_rshift):
25107 (JSC::JIT::emitSlow_op_rshift):
25108 (JSC::JIT::emit_op_jnless):
25109 (JSC::JIT::emitSlow_op_jnless):
25110 (JSC::JIT::emit_op_jnlesseq):
25111 (JSC::JIT::emitSlow_op_jnlesseq):
25112 (JSC::JIT::emit_op_bitand):
25113 (JSC::JIT::emitSlow_op_bitand):
25114 (JSC::JIT::emit_op_post_inc):
25115 (JSC::JIT::emitSlow_op_post_inc):
25116 (JSC::JIT::emit_op_post_dec):
25117 (JSC::JIT::emitSlow_op_post_dec):
25118 (JSC::JIT::emit_op_pre_inc):
25119 (JSC::JIT::emitSlow_op_pre_inc):
25120 (JSC::JIT::emit_op_pre_dec):
25121 (JSC::JIT::emitSlow_op_pre_dec):
25122 (JSC::JIT::emit_op_mod):
25123 (JSC::JIT::emitSlow_op_mod):
25124 (JSC::JIT::emit_op_add):
25125 (JSC::JIT::emit_op_mul):
25126 (JSC::JIT::emit_op_sub):
25127 (JSC::JIT::compileBinaryArithOpSlowCase):
25128 (JSC::JIT::emitSlow_op_add):
25129 (JSC::JIT::emitSlow_op_mul):
25131 (JSC::JIT::compileOpCallInitializeCallFrame):
25132 (JSC::JIT::compileOpConstructSetupArgs):
25133 (JSC::JIT::compileOpCallVarargs):
25134 (JSC::JIT::compileOpCall):
25135 (JSC::JIT::compileOpCallSlowCase):
25137 (JSC::JIT::getConstantOperandImmediateInt):
25138 (JSC::JIT::isOperandConstantImmediateInt):
25139 (JSC::JIT::emitInitRegister):
25140 (JSC::JIT::addSlowCase):
25141 (JSC::JIT::addJump):
25142 (JSC::JIT::emitJumpSlowToHot):
25143 (JSC::JIT::tagFor):
25144 (JSC::JIT::payloadFor):
25145 (JSC::JIT::emitLoad):
25146 (JSC::JIT::emitLoadReturnValue):
25147 (JSC::JIT::emitStore):
25148 (JSC::JIT::emitStoreReturnValue):
25150 (JSC::JIT::emit_op_mov):
25151 (JSC::JIT::emit_op_end):
25152 (JSC::JIT::emit_op_jmp):
25153 (JSC::JIT::emit_op_loop):
25154 (JSC::JIT::emit_op_loop_if_less):
25155 (JSC::JIT::emit_op_loop_if_lesseq):
25156 (JSC::JIT::emit_op_instanceof):
25157 (JSC::JIT::emit_op_get_global_var):
25158 (JSC::JIT::emit_op_put_global_var):
25159 (JSC::JIT::emit_op_get_scoped_var):
25160 (JSC::JIT::emit_op_put_scoped_var):
25161 (JSC::JIT::emit_op_tear_off_activation):
25162 (JSC::JIT::emit_op_ret):
25163 (JSC::JIT::emit_op_construct_verify):
25164 (JSC::JIT::emit_op_to_primitive):
25165 (JSC::JIT::emit_op_loop_if_true):
25166 (JSC::JIT::emit_op_resolve_global):
25167 (JSC::JIT::emit_op_not):
25168 (JSC::JIT::emit_op_jfalse):
25169 (JSC::JIT::emit_op_jeq_null):
25170 (JSC::JIT::emit_op_jneq_null):
25171 (JSC::JIT::emit_op_jneq_ptr):
25172 (JSC::JIT::emit_op_unexpected_load):
25173 (JSC::JIT::emit_op_eq):
25174 (JSC::JIT::emit_op_bitnot):
25175 (JSC::JIT::emit_op_jtrue):
25176 (JSC::JIT::emit_op_neq):
25177 (JSC::JIT::emit_op_bitxor):
25178 (JSC::JIT::emit_op_bitor):
25179 (JSC::JIT::emit_op_throw):
25180 (JSC::JIT::emit_op_next_pname):
25181 (JSC::JIT::emit_op_push_scope):
25182 (JSC::JIT::emit_op_to_jsnumber):
25183 (JSC::JIT::emit_op_push_new_scope):
25184 (JSC::JIT::emit_op_catch):
25185 (JSC::JIT::emit_op_switch_imm):
25186 (JSC::JIT::emit_op_switch_char):
25187 (JSC::JIT::emit_op_switch_string):
25188 (JSC::JIT::emit_op_new_error):
25189 (JSC::JIT::emit_op_eq_null):
25190 (JSC::JIT::emit_op_neq_null):
25191 (JSC::JIT::emit_op_convert_this):
25192 (JSC::JIT::emit_op_profile_will_call):
25193 (JSC::JIT::emit_op_profile_did_call):
25194 (JSC::JIT::emitSlow_op_construct_verify):
25195 (JSC::JIT::emitSlow_op_get_by_val):
25196 (JSC::JIT::emitSlow_op_loop_if_less):
25197 (JSC::JIT::emitSlow_op_loop_if_lesseq):
25198 (JSC::JIT::emitSlow_op_put_by_val):
25199 (JSC::JIT::emitSlow_op_not):
25200 (JSC::JIT::emitSlow_op_instanceof):
25202 (JSC::JIT::emit_op_get_by_val):
25203 (JSC::JIT::emit_op_put_by_val):
25204 (JSC::JIT::emit_op_put_by_index):
25205 (JSC::JIT::emit_op_put_getter):
25206 (JSC::JIT::emit_op_put_setter):
25207 (JSC::JIT::emit_op_del_by_id):
25208 (JSC::JIT::compileGetByIdHotPath):
25209 (JSC::JIT::compilePutByIdHotPath):
25314 with JIT disabled.
25458 * jit/JIT.h:
25504 [Qt] Determining whether to use JIT or interpreter
25528 Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall.
25530 * jit/JIT.cpp:
25531 (JSC::JIT::privateCompile):
25532 (JSC::JIT::privateCompileCTIMachineTrampolines):
25533 * jit/JIT.h:
25535 (JSC::JIT::preserveReturnAddressAfterCall):
25537 (JSC::JIT::privateCompilePutByIdTransition):
25617 * jit/JIT.cpp:
25623 * jit/JIT.cpp:
25710 * jit/JIT.cpp:
25713 (JSC::JIT::privateCompile):
25714 (JSC::JIT::unlinkCall):
25715 (JSC::JIT::linkCall):
25718 * jit/JIT.h:
25727 (JSC::JIT::privateCompilePutByIdTransition):
25728 (JSC::JIT::patchGetByIdSelf):
25729 (JSC::JIT::patchMethodCallProto):
25730 (JSC::JIT::patchPutByIdReplace):
25731 (JSC::JIT::privateCompilePatchGetArrayLength):
25732 (JSC::JIT::privateCompileGetByIdProto):
25733 (JSC::JIT::privateCompileGetByIdSelfList):
25734 (JSC::JIT::privateCompileGetByIdProtoList):
25735 (JSC::JIT::privateCompileGetByIdChainList):
25736 (JSC::JIT::privateCompileGetByIdChain):
25758 (JSC::JIT::patchMethodCallProto):
25876 * jit/JIT.cpp:
26393 * jit/JIT.cpp:
26394 * jit/JIT.h:
26441 * jit/JIT.cpp:
26442 (JSC::JIT::unlinkMethodCall):
26443 * jit/JIT.h:
27056 * jit/JIT.cpp:
27057 (JSC::JIT::privateCompileMainPass):
27059 (JSC::JIT::emitLoadDouble):
27060 (JSC::JIT::emitLoadInt32ToDouble):
27062 (JSC::JIT::emit_op_new_error):
27063 (JSC::JIT::emit_op_enter):
27064 (JSC::JIT::emit_op_enter_with_activation):
27283 * jit/JIT.h:
27284 (JSC::JIT::compileGetByIdProto):
27285 (JSC::JIT::compileGetByIdSelfList):
27286 (JSC::JIT::compileGetByIdProtoList):
27287 (JSC::JIT::compileGetByIdChainList):
27288 (JSC::JIT::compileGetByIdChain):
27289 (JSC::JIT::compilePutByIdTransition):
27290 (JSC::JIT::compileCTIMachineTrampolines):
27291 (JSC::JIT::compilePatchGetArrayLength):
27644 Bug 24986: ARM JIT port
27667 Bug 24986: ARM JIT port
27712 * jit/JIT.cpp:
27713 (JSC::JIT::privateCompile):
27714 (JSC::JIT::privateCompileCTIMachineTrampolines):
27715 (JSC::JIT::emitGetVariableObjectRegister):
27716 (JSC::JIT::emitPutVariableObjectRegister):
27717 * jit/JIT.h:
27719 (JSC::JIT::emit_op_rshift):
27720 (JSC::JIT::emitSlow_op_jnless):
27721 (JSC::JIT::emitSlow_op_jnlesseq):
27722 (JSC::JIT::compileBinaryArithOp):
27724 (JSC::JIT::compileOpCallInitializeCallFrame):
27725 (JSC::JIT::compileOpCall):
27727 (JSC::JIT::restoreArgumentReference):
27728 (JSC::JIT::checkStructure):
27730 (JSC::JIT::emit_op_instanceof):
27731 (JSC::JIT::emit_op_get_scoped_var):
27732 (JSC::JIT::emit_op_put_scoped_var):
27733 (JSC::JIT::emit_op_construct_verify):
27734 (JSC::JIT::emit_op_resolve_global):
27735 (JSC::JIT::emit_op_jeq_null):
27736 (JSC::JIT::emit_op_jneq_null):
27737 (JSC::JIT::emit_op_to_jsnumber):
27738 (JSC::JIT::emit_op_catch):
27739 (JSC::JIT::emit_op_eq_null):
27740 (JSC::JIT::emit_op_neq_null):
27741 (JSC::JIT::emit_op_convert_this):
27742 (JSC::JIT::emit_op_profile_will_call):
27743 (JSC::JIT::emit_op_profile_did_call):
27744 (JSC::JIT::emitSlow_op_get_by_val):
27746 (JSC::JIT::emit_op_get_by_val):
27747 (JSC::JIT::emit_op_put_by_val):
27748 (JSC::JIT::emit_op_method_check):
27749 (JSC::JIT::compileGetByIdHotPath):
27750 (JSC::JIT::emit_op_put_by_id):
27751 (JSC::JIT::compilePutDirectOffset):
27752 (JSC::JIT::compileGetDirectOffset):
27753 (JSC::JIT::privateCompilePutByIdTransition):
27754 (JSC::JIT::privateCompilePatchGetArrayLength):
27762 * jit/JIT.h:
27772 Bug 24986: ARM JIT port
27783 * jit/JIT.h:
27785 (JSC::JIT::restoreArgumentReferenceForTrampoline):
27797 Fix armv7 JIT build issues.
27805 * jit/JIT.cpp:
27806 * jit/JIT.h:
27808 (JSC::JIT::restoreArgumentReference):
27810 (JSC::JIT::emit_op_catch):
27869 Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT)
27935 * jit/JIT.cpp:
27936 (JSC::JIT::privateCompileCTIMachineTrampolines):
27937 (JSC::JIT::linkCall):
27988 to force a return from JIT execution. This saves memory, by avoiding the need
27992 (JSC::JIT::emit_op_throw):
28088 * jit/JIT.h:
28090 (JSC::JIT::compileGetDirectOffset):
28091 (JSC::JIT::privateCompileGetByIdProto):
28092 (JSC::JIT::privateCompileGetByIdProtoList):
28093 (JSC::JIT::privateCompileGetByIdChainList):
28094 (JSC::JIT::privateCompileGetByIdChain):
28103 (JSC::JIT::emit_op_throw):
28120 (JSC::JIT::emit_op_rshift):
28178 (JSC::JIT::emit_op_throw):
28186 * jit/JIT.cpp:
28187 (JSC::JIT::JIT):
28193 Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize
28197 * jit/JIT.cpp:
28198 (JSC::JIT::JIT):
28199 * jit/JIT.h:
28200 (JSC::JIT::compileGetByIdProto):
28201 (JSC::JIT::compileGetByIdSelfList):
28202 (JSC::JIT::compileGetByIdProtoList):
28203 (JSC::JIT::compileGetByIdChainList):
28204 (JSC::JIT::compileGetByIdChain):
28205 (JSC::JIT::compilePutByIdTransition):
28206 (JSC::JIT::compileCTIMachineTrampolines):
28207 (JSC::JIT::compilePatchGetArrayLength):