Changeset 37597 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Oct 14, 2008, 7:39:52 PM (17 years ago)
Author:
[email protected]
Message:

2008-10-14 Maciej Stachowiak <[email protected]>

Rubber stamped by Sam Weinig.



Turns out GCC 4.2 is still a (small) regression, we'll have to do
more work to turn it on.

  • Configurations/DebugRelease.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • VM/CTI.cpp:
  • VM/CTI.h:
  • VM/Machine.cpp: (JSC::Machine::cti_op_convert_this): (JSC::Machine::cti_op_end): (JSC::Machine::cti_op_add): (JSC::Machine::cti_op_pre_inc): (JSC::Machine::cti_timeout_check): (JSC::Machine::cti_register_file_check): (JSC::Machine::cti_op_loop_if_less): (JSC::Machine::cti_op_loop_if_lesseq): (JSC::Machine::cti_op_new_object): (JSC::Machine::cti_op_put_by_id): (JSC::Machine::cti_op_put_by_id_second): (JSC::Machine::cti_op_put_by_id_generic): (JSC::Machine::cti_op_put_by_id_fail): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_second): (JSC::Machine::cti_op_get_by_id_generic): (JSC::Machine::cti_op_get_by_id_fail): (JSC::Machine::cti_op_instanceof): (JSC::Machine::cti_op_del_by_id): (JSC::Machine::cti_op_mul): (JSC::Machine::cti_op_new_func): (JSC::Machine::cti_op_call_JSFunction): (JSC::Machine::cti_vm_compile): (JSC::Machine::cti_op_push_activation): (JSC::Machine::cti_op_call_NotJSFunction): (JSC::Machine::cti_op_create_arguments): (JSC::Machine::cti_op_tear_off_activation): (JSC::Machine::cti_op_tear_off_arguments): (JSC::Machine::cti_op_ret_profiler): (JSC::Machine::cti_op_ret_scopeChain): (JSC::Machine::cti_op_new_array): (JSC::Machine::cti_op_resolve): (JSC::Machine::cti_op_construct_JSConstruct): (JSC::Machine::cti_op_construct_NotJSConstruct): (JSC::Machine::cti_op_get_by_val): (JSC::Machine::cti_op_resolve_func): (JSC::Machine::cti_op_sub): (JSC::Machine::cti_op_put_by_val): (JSC::Machine::cti_op_put_by_val_array): (JSC::Machine::cti_op_lesseq): (JSC::Machine::cti_op_loop_if_true): (JSC::Machine::cti_op_negate): (JSC::Machine::cti_op_resolve_base): (JSC::Machine::cti_op_resolve_skip): (JSC::Machine::cti_op_resolve_global): (JSC::Machine::cti_op_div): (JSC::Machine::cti_op_pre_dec): (JSC::Machine::cti_op_jless): (JSC::Machine::cti_op_not): (JSC::Machine::cti_op_jtrue): (JSC::Machine::cti_op_post_inc): (JSC::Machine::cti_op_eq): (JSC::Machine::cti_op_lshift): (JSC::Machine::cti_op_bitand): (JSC::Machine::cti_op_rshift): (JSC::Machine::cti_op_bitnot): (JSC::Machine::cti_op_resolve_with_base): (JSC::Machine::cti_op_new_func_exp): (JSC::Machine::cti_op_mod): (JSC::Machine::cti_op_less): (JSC::Machine::cti_op_neq): (JSC::Machine::cti_op_post_dec): (JSC::Machine::cti_op_urshift): (JSC::Machine::cti_op_bitxor): (JSC::Machine::cti_op_new_regexp): (JSC::Machine::cti_op_bitor): (JSC::Machine::cti_op_call_eval): (JSC::Machine::cti_op_throw): (JSC::Machine::cti_op_get_pnames): (JSC::Machine::cti_op_next_pname): (JSC::Machine::cti_op_push_scope): (JSC::Machine::cti_op_pop_scope): (JSC::Machine::cti_op_typeof): (JSC::Machine::cti_op_is_undefined): (JSC::Machine::cti_op_is_boolean): (JSC::Machine::cti_op_is_number): (JSC::Machine::cti_op_is_string): (JSC::Machine::cti_op_is_object): (JSC::Machine::cti_op_is_function): (JSC::Machine::cti_op_stricteq): (JSC::Machine::cti_op_nstricteq): (JSC::Machine::cti_op_to_jsnumber): (JSC::Machine::cti_op_in): (JSC::Machine::cti_op_push_new_scope): (JSC::Machine::cti_op_jmp_scopes): (JSC::Machine::cti_op_put_by_index): (JSC::Machine::cti_op_switch_imm): (JSC::Machine::cti_op_switch_char): (JSC::Machine::cti_op_switch_string): (JSC::Machine::cti_op_del_by_val): (JSC::Machine::cti_op_put_getter): (JSC::Machine::cti_op_put_setter): (JSC::Machine::cti_op_new_error): (JSC::Machine::cti_op_debug): (JSC::Machine::cti_vm_throw):
  • VM/Machine.h:
  • masm/X86Assembler.h: (JSC::X86Assembler::emitRestoreArgumentReference): (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
  • wtf/Platform.h:
Location:
trunk/JavaScriptCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r37586 r37597  
     12008-10-14  Maciej Stachowiak  <[email protected]>
     2
     3        Rubber stamped by Sam Weinig.
     4       
     5        - revert r37572 and r37581 for now
     6       
     7        Turns out GCC 4.2 is still a (small) regression, we'll have to do
     8        more work to turn it on.
     9
     10        * Configurations/DebugRelease.xcconfig:
     11        * JavaScriptCore.xcodeproj/project.pbxproj:
     12        * VM/CTI.cpp:
     13        * VM/CTI.h:
     14        * VM/Machine.cpp:
     15        (JSC::Machine::cti_op_convert_this):
     16        (JSC::Machine::cti_op_end):
     17        (JSC::Machine::cti_op_add):
     18        (JSC::Machine::cti_op_pre_inc):
     19        (JSC::Machine::cti_timeout_check):
     20        (JSC::Machine::cti_register_file_check):
     21        (JSC::Machine::cti_op_loop_if_less):
     22        (JSC::Machine::cti_op_loop_if_lesseq):
     23        (JSC::Machine::cti_op_new_object):
     24        (JSC::Machine::cti_op_put_by_id):
     25        (JSC::Machine::cti_op_put_by_id_second):
     26        (JSC::Machine::cti_op_put_by_id_generic):
     27        (JSC::Machine::cti_op_put_by_id_fail):
     28        (JSC::Machine::cti_op_get_by_id):
     29        (JSC::Machine::cti_op_get_by_id_second):
     30        (JSC::Machine::cti_op_get_by_id_generic):
     31        (JSC::Machine::cti_op_get_by_id_fail):
     32        (JSC::Machine::cti_op_instanceof):
     33        (JSC::Machine::cti_op_del_by_id):
     34        (JSC::Machine::cti_op_mul):
     35        (JSC::Machine::cti_op_new_func):
     36        (JSC::Machine::cti_op_call_JSFunction):
     37        (JSC::Machine::cti_vm_compile):
     38        (JSC::Machine::cti_op_push_activation):
     39        (JSC::Machine::cti_op_call_NotJSFunction):
     40        (JSC::Machine::cti_op_create_arguments):
     41        (JSC::Machine::cti_op_tear_off_activation):
     42        (JSC::Machine::cti_op_tear_off_arguments):
     43        (JSC::Machine::cti_op_ret_profiler):
     44        (JSC::Machine::cti_op_ret_scopeChain):
     45        (JSC::Machine::cti_op_new_array):
     46        (JSC::Machine::cti_op_resolve):
     47        (JSC::Machine::cti_op_construct_JSConstruct):
     48        (JSC::Machine::cti_op_construct_NotJSConstruct):
     49        (JSC::Machine::cti_op_get_by_val):
     50        (JSC::Machine::cti_op_resolve_func):
     51        (JSC::Machine::cti_op_sub):
     52        (JSC::Machine::cti_op_put_by_val):
     53        (JSC::Machine::cti_op_put_by_val_array):
     54        (JSC::Machine::cti_op_lesseq):
     55        (JSC::Machine::cti_op_loop_if_true):
     56        (JSC::Machine::cti_op_negate):
     57        (JSC::Machine::cti_op_resolve_base):
     58        (JSC::Machine::cti_op_resolve_skip):
     59        (JSC::Machine::cti_op_resolve_global):
     60        (JSC::Machine::cti_op_div):
     61        (JSC::Machine::cti_op_pre_dec):
     62        (JSC::Machine::cti_op_jless):
     63        (JSC::Machine::cti_op_not):
     64        (JSC::Machine::cti_op_jtrue):
     65        (JSC::Machine::cti_op_post_inc):
     66        (JSC::Machine::cti_op_eq):
     67        (JSC::Machine::cti_op_lshift):
     68        (JSC::Machine::cti_op_bitand):
     69        (JSC::Machine::cti_op_rshift):
     70        (JSC::Machine::cti_op_bitnot):
     71        (JSC::Machine::cti_op_resolve_with_base):
     72        (JSC::Machine::cti_op_new_func_exp):
     73        (JSC::Machine::cti_op_mod):
     74        (JSC::Machine::cti_op_less):
     75        (JSC::Machine::cti_op_neq):
     76        (JSC::Machine::cti_op_post_dec):
     77        (JSC::Machine::cti_op_urshift):
     78        (JSC::Machine::cti_op_bitxor):
     79        (JSC::Machine::cti_op_new_regexp):
     80        (JSC::Machine::cti_op_bitor):
     81        (JSC::Machine::cti_op_call_eval):
     82        (JSC::Machine::cti_op_throw):
     83        (JSC::Machine::cti_op_get_pnames):
     84        (JSC::Machine::cti_op_next_pname):
     85        (JSC::Machine::cti_op_push_scope):
     86        (JSC::Machine::cti_op_pop_scope):
     87        (JSC::Machine::cti_op_typeof):
     88        (JSC::Machine::cti_op_is_undefined):
     89        (JSC::Machine::cti_op_is_boolean):
     90        (JSC::Machine::cti_op_is_number):
     91        (JSC::Machine::cti_op_is_string):
     92        (JSC::Machine::cti_op_is_object):
     93        (JSC::Machine::cti_op_is_function):
     94        (JSC::Machine::cti_op_stricteq):
     95        (JSC::Machine::cti_op_nstricteq):
     96        (JSC::Machine::cti_op_to_jsnumber):
     97        (JSC::Machine::cti_op_in):
     98        (JSC::Machine::cti_op_push_new_scope):
     99        (JSC::Machine::cti_op_jmp_scopes):
     100        (JSC::Machine::cti_op_put_by_index):
     101        (JSC::Machine::cti_op_switch_imm):
     102        (JSC::Machine::cti_op_switch_char):
     103        (JSC::Machine::cti_op_switch_string):
     104        (JSC::Machine::cti_op_del_by_val):
     105        (JSC::Machine::cti_op_put_getter):
     106        (JSC::Machine::cti_op_put_setter):
     107        (JSC::Machine::cti_op_new_error):
     108        (JSC::Machine::cti_op_debug):
     109        (JSC::Machine::cti_vm_throw):
     110        * VM/Machine.h:
     111        * masm/X86Assembler.h:
     112        (JSC::X86Assembler::emitRestoreArgumentReference):
     113        (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
     114        * wtf/Platform.h:
     115
    11162008-10-14  Alexey Proskuryakov  <[email protected]>
    2117
  • trunk/JavaScriptCore/Configurations/DebugRelease.xcconfig

    r37572 r37597  
    77
    88GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
    9 
    10 GCC_VERSION = $(GCC_VERSION_$(XCODE_VERSION_ACTUAL));
    11 GCC_VERSION_0310 = 4.2;
    12 GCC_VERSION_0311 = 4.2;
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r37572 r37597  
    301301                E1EF79AA0CE97BA60088D500 /* UTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EF79A80CE97BA60088D500 /* UTF8.cpp */; };
    302302/* End PBXBuildFile section */
     303
     304/* Begin PBXBuildRule section */
     305                1CFE4BEC0B0BA1EB00CC444D /* PBXBuildRule */ = {
     306                        isa = PBXBuildRule;
     307                        compilerSpec = com.apple.compilers.gcc.4_0;
     308                        fileType = sourcecode.c;
     309                        isEditable = 1;
     310                        outputFiles = (
     311                        );
     312                };
     313                1CFE4BF10B0BA22200CC444D /* PBXBuildRule */ = {
     314                        isa = PBXBuildRule;
     315                        compilerSpec = com.apple.compilers.gcc.4_0;
     316                        fileType = sourcecode.cpp;
     317                        isEditable = 1;
     318                        outputFiles = (
     319                        );
     320                };
     321                5DAD97A80B39B88E0014FEFF /* PBXBuildRule */ = {
     322                        isa = PBXBuildRule;
     323                        compilerSpec = com.apple.compilers.gcc.4_0;
     324                        fileType = sourcecode.c;
     325                        isEditable = 1;
     326                        outputFiles = (
     327                        );
     328                };
     329                5DAD97A80B39B88E0014FFFF /* PBXBuildRule */ = {
     330                        isa = PBXBuildRule;
     331                        compilerSpec = com.apple.compilers.gcc.4_0;
     332                        fileType = sourcecode.cpp;
     333                        isEditable = 1;
     334                        outputFiles = (
     335                        );
     336                };
     337                5DAD97A80B39B88F0014FEFF /* PBXBuildRule */ = {
     338                        isa = PBXBuildRule;
     339                        compilerSpec = com.apple.compilers.gcc.4_0;
     340                        fileType = sourcecode.c;
     341                        isEditable = 1;
     342                        outputFiles = (
     343                        );
     344                };
     345                5DAD97A80B39B88F0014FFFF /* PBXBuildRule */ = {
     346                        isa = PBXBuildRule;
     347                        compilerSpec = com.apple.compilers.gcc.4_0;
     348                        fileType = sourcecode.cpp;
     349                        isEditable = 1;
     350                        outputFiles = (
     351                        );
     352                };
     353                5DAD97A80B39B89F0014FEFF /* PBXBuildRule */ = {
     354                        isa = PBXBuildRule;
     355                        compilerSpec = com.apple.compilers.gcc.4_0;
     356                        fileType = sourcecode.c;
     357                        isEditable = 1;
     358                        outputFiles = (
     359                        );
     360                };
     361                5DAD97A80B39B89F0014FFFF /* PBXBuildRule */ = {
     362                        isa = PBXBuildRule;
     363                        compilerSpec = com.apple.compilers.gcc.4_0;
     364                        fileType = sourcecode.cpp;
     365                        isEditable = 1;
     366                        outputFiles = (
     367                        );
     368                };
     369/* End PBXBuildRule section */
    303370
    304371/* Begin PBXContainerItemProxy section */
     
    15501617                        );
    15511618                        buildRules = (
     1619                                5DAD97A80B39B88E0014FEFF /* PBXBuildRule */,
     1620                                5DAD97A80B39B88E0014FFFF /* PBXBuildRule */,
    15521621                        );
    15531622                        dependencies = (
     
    15681637                        );
    15691638                        buildRules = (
     1639                                5DAD97A80B39B88F0014FEFF /* PBXBuildRule */,
     1640                                5DAD97A80B39B88F0014FFFF /* PBXBuildRule */,
    15701641                        );
    15711642                        dependencies = (
     
    15901661                        );
    15911662                        buildRules = (
     1663                                1CFE4BF10B0BA22200CC444D /* PBXBuildRule */,
     1664                                1CFE4BEC0B0BA1EB00CC444D /* PBXBuildRule */,
    15921665                        );
    15931666                        dependencies = (
     
    16101683                        );
    16111684                        buildRules = (
     1685                                5DAD97A80B39B89F0014FEFF /* PBXBuildRule */,
     1686                                5DAD97A80B39B89F0014FFFF /* PBXBuildRule */,
    16121687                        );
    16131688                        dependencies = (
     
    20202095                        baseConfigurationReference = 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */;
    20212096                        buildSettings = {
     2097                                GCC_VERSION = 4.0;
    20222098                                STRIP_INSTALLED_PRODUCT = NO;
    20232099                        };
  • trunk/JavaScriptCore/VM/CTI.cpp

    r37581 r37597  
    109109".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
    110110SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
     111#if USE(CTI_ARGUMENT)
     112#if USE(FAST_CALL_CTI_ARGUMENT)
    111113    "movl %esp, %ecx" "\n"
     114#else
     115    "movl %esp, 0(%esp)" "\n"
     116#endif
    112117    "call " SYMBOL_STRING(_ZN3JSC7Machine12cti_vm_throwEPPv) "\n"
     118#else
     119    "call " SYMBOL_STRING(_ZN3JSC7Machine12cti_vm_throwEPv) "\n"
     120#endif
    113121    "addl $0x24, %esp" "\n"
    114122    "popl %edi" "\n"
  • trunk/JavaScriptCore/VM/CTI.h

    r37581 r37597  
    4545#define CTI_ARGS_profilerReference 0x10
    4646#define CTI_ARGS_globalData 0x11
    47 #define ARG_registerFile ((RegisterFile*)(args)[CTI_ARGS_registerFile])
    48 #define ARG_callFrame ((CallFrame*)(args)[CTI_ARGS_callFrame])
    49 #define ARG_exception ((JSValue**)(args)[CTI_ARGS_exception])
    50 #define ARG_profilerReference ((Profiler**)(args)[CTI_ARGS_profilerReference])
    51 #define ARG_globalData ((JSGlobalData*)(args)[CTI_ARGS_globalData])
    52 
    53 #define ARG_setCallFrame(newCallFrame) (*(CallFrame**)&(args)[CTI_ARGS_callFrame] = (newCallFrame))
    54 
    55 #define ARG_src1 ((JSValue*)((args)[1]))
    56 #define ARG_src2 ((JSValue*)((args)[2]))
    57 #define ARG_src3 ((JSValue*)((args)[3]))
    58 #define ARG_src4 ((JSValue*)((args)[4]))
    59 #define ARG_src5 ((JSValue*)((args)[5]))
    60 #define ARG_id1 ((Identifier*)((args)[1]))
    61 #define ARG_id2 ((Identifier*)((args)[2]))
    62 #define ARG_id3 ((Identifier*)((args)[3]))
    63 #define ARG_id4 ((Identifier*)((args)[4]))
    64 #define ARG_int1 ((int)((args)[1]))
    65 #define ARG_int2 ((int)((args)[2]))
    66 #define ARG_int3 ((int)((args)[3]))
    67 #define ARG_int4 ((int)((args)[4]))
    68 #define ARG_int5 ((int)((args)[5]))
    69 #define ARG_func1 ((FuncDeclNode*)((args)[1]))
    70 #define ARG_funcexp1 ((FuncExprNode*)((args)[1]))
    71 #define ARG_registers1 ((Register*)((args)[1]))
    72 #define ARG_regexp1 ((RegExp*)((args)[1]))
    73 #define ARG_pni1 ((JSPropertyNameIterator*)((args)[1]))
    74 #define ARG_instr1 ((Instruction*)((args)[1]))
    75 #define ARG_instr2 ((Instruction*)((args)[2]))
    76 #define ARG_instr3 ((Instruction*)((args)[3]))
    77 #define ARG_instr4 ((Instruction*)((args)[4]))
    78 #define ARG_instr5 ((Instruction*)((args)[5]))
    79 #define ARG_instr6 ((Instruction*)((args)[6]))
    80 
    81 #define CTI_RETURN_ADDRESS ((args)[-1])
     47#define ARG_registerFile ((RegisterFile*)(ARGS)[CTI_ARGS_registerFile])
     48#define ARG_callFrame ((CallFrame*)(ARGS)[CTI_ARGS_callFrame])
     49#define ARG_exception ((JSValue**)(ARGS)[CTI_ARGS_exception])
     50#define ARG_profilerReference ((Profiler**)(ARGS)[CTI_ARGS_profilerReference])
     51#define ARG_globalData ((JSGlobalData*)(ARGS)[CTI_ARGS_globalData])
     52
     53#define ARG_setCallFrame(newCallFrame) (*(CallFrame**)&(ARGS)[CTI_ARGS_callFrame] = (newCallFrame))
     54
     55#define ARG_src1 ((JSValue*)((ARGS)[1]))
     56#define ARG_src2 ((JSValue*)((ARGS)[2]))
     57#define ARG_src3 ((JSValue*)((ARGS)[3]))
     58#define ARG_src4 ((JSValue*)((ARGS)[4]))
     59#define ARG_src5 ((JSValue*)((ARGS)[5]))
     60#define ARG_id1 ((Identifier*)((ARGS)[1]))
     61#define ARG_id2 ((Identifier*)((ARGS)[2]))
     62#define ARG_id3 ((Identifier*)((ARGS)[3]))
     63#define ARG_id4 ((Identifier*)((ARGS)[4]))
     64#define ARG_int1 ((int)((ARGS)[1]))
     65#define ARG_int2 ((int)((ARGS)[2]))
     66#define ARG_int3 ((int)((ARGS)[3]))
     67#define ARG_int4 ((int)((ARGS)[4]))
     68#define ARG_int5 ((int)((ARGS)[5]))
     69#define ARG_func1 ((FuncDeclNode*)((ARGS)[1]))
     70#define ARG_funcexp1 ((FuncExprNode*)((ARGS)[1]))
     71#define ARG_registers1 ((Register*)((ARGS)[1]))
     72#define ARG_regexp1 ((RegExp*)((ARGS)[1]))
     73#define ARG_pni1 ((JSPropertyNameIterator*)((ARGS)[1]))
     74#define ARG_instr1 ((Instruction*)((ARGS)[1]))
     75#define ARG_instr2 ((Instruction*)((ARGS)[2]))
     76#define ARG_instr3 ((Instruction*)((ARGS)[3]))
     77#define ARG_instr4 ((Instruction*)((ARGS)[4]))
     78#define ARG_instr5 ((Instruction*)((ARGS)[5]))
     79#define ARG_instr6 ((Instruction*)((ARGS)[6]))
     80
     81#define CTI_RETURN_ADDRESS ((ARGS)[-1])
    8282
    8383namespace JSC {
     
    9696    struct OperandTypes;
    9797
    98     typedef JSValue* (SFX_CALL *CTIHelper_j)(void** args);
    99     typedef JSPropertyNameIterator* (SFX_CALL *CTIHelper_p)(void** args);
    100     typedef void (SFX_CALL *CTIHelper_v)(void** args);
    101     typedef void* (SFX_CALL *CTIHelper_s)(void** args);
    102     typedef int (SFX_CALL *CTIHelper_b)(void** args);
    103     typedef VoidPtrPair (SFX_CALL *CTIHelper_2)(void** args);
     98    typedef JSValue* (SFX_CALL *CTIHelper_j)(CTI_ARGS);
     99    typedef JSPropertyNameIterator* (SFX_CALL *CTIHelper_p)(CTI_ARGS);
     100    typedef void (SFX_CALL *CTIHelper_v)(CTI_ARGS);
     101    typedef void* (SFX_CALL *CTIHelper_s)(CTI_ARGS);
     102    typedef int (SFX_CALL *CTIHelper_b)(CTI_ARGS);
     103    typedef VoidPtrPair (SFX_CALL *CTIHelper_2)(CTI_ARGS);
    104104
    105105    struct CallRecord {
     
    239239        static const int repatchGetByIdDefaultOffset = 256;
    240240
     241#if USE(FAST_CALL_CTI_ARGUMENT)
    241242        static const int ctiArgumentInitSize = 2;
    242 
     243#elif USE(CTI_ARGUMENT)
     244        static const int ctiArgumentInitSize = 4;
     245#else
     246        static const int ctiArgumentInitSize = 0;
     247#endif
    243248        // These architecture specific value are used to enable repatching - see comment on op_put_by_id.
    244249        static const int repatchOffsetPutByIdStructureID = 19;
  • trunk/JavaScriptCore/VM/Machine.cpp

    r37581 r37597  
    42424242    } while (0)
    42434243
    4244 JSValue* Machine::cti_op_convert_this(void** args)
     4244JSValue* Machine::cti_op_convert_this(CTI_ARGS)
    42454245{
    42464246    JSValue* v1 = ARG_src1;
     
    42524252}
    42534253
    4254 void Machine::cti_op_end(void** args)
     4254void Machine::cti_op_end(CTI_ARGS)
    42554255{
    42564256    ScopeChainNode* scopeChain = ARG_callFrame->scopeChain();
     
    42594259}
    42604260
    4261 JSValue* Machine::cti_op_add(void** args)
     4261JSValue* Machine::cti_op_add(CTI_ARGS)
    42624262{
    42634263    JSValue* v1 = ARG_src1;
     
    43024302}
    43034303
    4304 JSValue* Machine::cti_op_pre_inc(void** args)
     4304JSValue* Machine::cti_op_pre_inc(CTI_ARGS)
    43054305{
    43064306    JSValue* v = ARG_src1;
     
    43124312}
    43134313
    4314 void Machine::cti_timeout_check(void** args)
     4314void Machine::cti_timeout_check(CTI_ARGS)
    43154315{
    43164316    if (ARG_globalData->machine->checkTimeout(ARG_callFrame->dynamicGlobalObject())) {
     
    43204320}
    43214321
    4322 void Machine::cti_register_file_check(void** args)
     4322void Machine::cti_register_file_check(CTI_ARGS)
    43234323{
    43244324    CallFrame* callFrame = ARG_callFrame;
     
    43364336}
    43374337
    4338 int Machine::cti_op_loop_if_less(void** args)
     4338int Machine::cti_op_loop_if_less(CTI_ARGS)
    43394339{
    43404340    JSValue* src1 = ARG_src1;
     
    43474347}
    43484348
    4349 int Machine::cti_op_loop_if_lesseq(void** args)
     4349int Machine::cti_op_loop_if_lesseq(CTI_ARGS)
    43504350{
    43514351    JSValue* src1 = ARG_src1;
     
    43584358}
    43594359
    4360 JSValue* Machine::cti_op_new_object(void** args)
     4360JSValue* Machine::cti_op_new_object(CTI_ARGS)
    43614361{
    43624362    return constructEmptyObject(ARG_callFrame);;
    43634363}
    43644364
    4365 void Machine::cti_op_put_by_id(void** args)
     4365void Machine::cti_op_put_by_id(CTI_ARGS)
    43664366{
    43674367    CallFrame* callFrame = ARG_callFrame;
     
    43764376}
    43774377
    4378 void Machine::cti_op_put_by_id_second(void** args)
     4378void Machine::cti_op_put_by_id_second(CTI_ARGS)
    43794379{
    43804380    PutPropertySlot slot;
     
    43844384}
    43854385
    4386 void Machine::cti_op_put_by_id_generic(void** args)
     4386void Machine::cti_op_put_by_id_generic(CTI_ARGS)
    43874387{
    43884388    PutPropertySlot slot;
     
    43914391}
    43924392
    4393 void Machine::cti_op_put_by_id_fail(void** args)
     4393void Machine::cti_op_put_by_id_fail(CTI_ARGS)
    43944394{
    43954395    CallFrame* callFrame = ARG_callFrame;
     
    44054405}
    44064406
    4407 JSValue* Machine::cti_op_get_by_id(void** args)
     4407JSValue* Machine::cti_op_get_by_id(CTI_ARGS)
    44084408{
    44094409    CallFrame* callFrame = ARG_callFrame;
     
    44204420}
    44214421
    4422 JSValue* Machine::cti_op_get_by_id_second(void** args)
     4422JSValue* Machine::cti_op_get_by_id_second(CTI_ARGS)
    44234423{
    44244424    CallFrame* callFrame = ARG_callFrame;
     
    44354435}
    44364436
    4437 JSValue* Machine::cti_op_get_by_id_generic(void** args)
     4437JSValue* Machine::cti_op_get_by_id_generic(CTI_ARGS)
    44384438{
    44394439    CallFrame* callFrame = ARG_callFrame;
     
    44484448}
    44494449
    4450 JSValue* Machine::cti_op_get_by_id_fail(void** args)
     4450JSValue* Machine::cti_op_get_by_id_fail(CTI_ARGS)
    44514451{
    44524452    CallFrame* callFrame = ARG_callFrame;
     
    44644464}
    44654465
    4466 JSValue* Machine::cti_op_instanceof(void** args)
     4466JSValue* Machine::cti_op_instanceof(CTI_ARGS)
    44674467{
    44684468    CallFrame* callFrame = ARG_callFrame;
     
    45054505}
    45064506
    4507 JSValue* Machine::cti_op_del_by_id(void** args)
     4507JSValue* Machine::cti_op_del_by_id(CTI_ARGS)
    45084508{
    45094509    CallFrame* callFrame = ARG_callFrame;
     
    45174517}
    45184518
    4519 JSValue* Machine::cti_op_mul(void** args)
     4519JSValue* Machine::cti_op_mul(CTI_ARGS)
    45204520{
    45214521    JSValue* src1 = ARG_src1;
     
    45334533}
    45344534
    4535 JSValue* Machine::cti_op_new_func(void** args)
     4535JSValue* Machine::cti_op_new_func(CTI_ARGS)
    45364536{
    45374537    return ARG_func1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
    45384538}
    45394539
    4540 VoidPtrPair Machine::cti_op_call_JSFunction(void** args)
     4540VoidPtrPair Machine::cti_op_call_JSFunction(CTI_ARGS)
    45414541{
    45424542#ifndef NDEBUG
     
    45874587}
    45884588
    4589 void* Machine::cti_vm_compile(void** args)
     4589void* Machine::cti_vm_compile(CTI_ARGS)
    45904590{
    45914591    CodeBlock* codeBlock = ARG_callFrame->codeBlock();
     
    45954595}
    45964596
    4597 JSValue* Machine::cti_op_push_activation(void** args)
     4597JSValue* Machine::cti_op_push_activation(CTI_ARGS)
    45984598{
    45994599    JSActivation* activation = new (ARG_globalData) JSActivation(ARG_callFrame, static_cast<FunctionBodyNode*>(ARG_callFrame->codeBlock()->ownerNode));
     
    46024602}
    46034603
    4604 JSValue* Machine::cti_op_call_NotJSFunction(void** args)
     4604JSValue* Machine::cti_op_call_NotJSFunction(CTI_ARGS)
    46054605{
    46064606    JSValue* funcVal = ARG_src1;
     
    46444644}
    46454645
    4646 void Machine::cti_op_create_arguments(void** args)
     4646void Machine::cti_op_create_arguments(CTI_ARGS)
    46474647{
    46484648    Arguments* arguments = new (ARG_globalData) Arguments(ARG_callFrame);
     
    46514651}
    46524652
    4653 void Machine::cti_op_tear_off_activation(void** args)
     4653void Machine::cti_op_tear_off_activation(CTI_ARGS)
    46544654{
    46554655    ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain);
     
    46584658}
    46594659
    4660 void Machine::cti_op_tear_off_arguments(void** args)
     4660void Machine::cti_op_tear_off_arguments(CTI_ARGS)
    46614661{
    46624662    ASSERT(ARG_callFrame->codeBlock()->usesArguments && !ARG_callFrame->codeBlock()->needsFullScopeChain);
     
    46644664}
    46654665
    4666 void Machine::cti_op_ret_profiler(void** args)
     4666void Machine::cti_op_ret_profiler(CTI_ARGS)
    46674667{
    46684668    ASSERT(*ARG_profilerReference);
     
    46704670}
    46714671
    4672 void Machine::cti_op_ret_scopeChain(void** args)
     4672void Machine::cti_op_ret_scopeChain(CTI_ARGS)
    46734673{
    46744674    ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain);
     
    46764676}
    46774677
    4678 JSValue* Machine::cti_op_new_array(void** args)
     4678JSValue* Machine::cti_op_new_array(CTI_ARGS)
    46794679{
    46804680    ArgList argList(ARG_registers1, ARG_int2);
     
    46824682}
    46834683
    4684 JSValue* Machine::cti_op_resolve(void** args)
     4684JSValue* Machine::cti_op_resolve(CTI_ARGS)
    46854685{
    46864686    CallFrame* callFrame = ARG_callFrame;
     
    47094709}
    47104710
    4711 VoidPtrPair Machine::cti_op_construct_JSConstruct(void** args)
     4711VoidPtrPair Machine::cti_op_construct_JSConstruct(CTI_ARGS)
    47124712{
    47134713    CallFrame* callFrame = ARG_callFrame;
     
    47724772}
    47734773
    4774 JSValue* Machine::cti_op_construct_NotJSConstruct(void** args)
     4774JSValue* Machine::cti_op_construct_NotJSConstruct(CTI_ARGS)
    47754775{
    47764776    CallFrame* callFrame = ARG_callFrame;
     
    48084808}
    48094809
    4810 JSValue* Machine::cti_op_get_by_val(void** args)
     4810JSValue* Machine::cti_op_get_by_val(CTI_ARGS)
    48114811{
    48124812    CallFrame* callFrame = ARG_callFrame;
     
    48404840}
    48414841
    4842 VoidPtrPair Machine::cti_op_resolve_func(void** args)
     4842VoidPtrPair Machine::cti_op_resolve_func(CTI_ARGS)
    48434843{
    48444844    CallFrame* callFrame = ARG_callFrame;
     
    48824882}
    48834883
    4884 JSValue* Machine::cti_op_sub(void** args)
     4884JSValue* Machine::cti_op_sub(CTI_ARGS)
    48854885{
    48864886    JSValue* src1 = ARG_src1;
     
    48984898}
    48994899
    4900 void Machine::cti_op_put_by_val(void** args)
     4900void Machine::cti_op_put_by_val(CTI_ARGS)
    49014901{
    49024902    CallFrame* callFrame = ARG_callFrame;
     
    49304930}
    49314931
    4932 void Machine::cti_op_put_by_val_array(void** args)
     4932void Machine::cti_op_put_by_val_array(CTI_ARGS)
    49334933{
    49344934    CallFrame* callFrame = ARG_callFrame;
     
    49544954}
    49554955
    4956 JSValue* Machine::cti_op_lesseq(void** args)
     4956JSValue* Machine::cti_op_lesseq(CTI_ARGS)
    49574957{
    49584958    CallFrame* callFrame = ARG_callFrame;
     
    49624962}
    49634963
    4964 int Machine::cti_op_loop_if_true(void** args)
     4964int Machine::cti_op_loop_if_true(CTI_ARGS)
    49654965{
    49664966    JSValue* src1 = ARG_src1;
     
    49734973}
    49744974
    4975 JSValue* Machine::cti_op_negate(void** args)
     4975JSValue* Machine::cti_op_negate(CTI_ARGS)
    49764976{
    49774977    JSValue* src = ARG_src1;
     
    49874987}
    49884988
    4989 JSValue* Machine::cti_op_resolve_base(void** args)
     4989JSValue* Machine::cti_op_resolve_base(CTI_ARGS)
    49904990{
    49914991    return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain());
    49924992}
    49934993
    4994 JSValue* Machine::cti_op_resolve_skip(void** args)
     4994JSValue* Machine::cti_op_resolve_skip(CTI_ARGS)
    49954995{
    49964996    CallFrame* callFrame = ARG_callFrame;
     
    50245024}
    50255025
    5026 JSValue* Machine::cti_op_resolve_global(void** args)
     5026JSValue* Machine::cti_op_resolve_global(CTI_ARGS)
    50275027{
    50285028    CallFrame* callFrame = ARG_callFrame;
     
    50525052}
    50535053
    5054 JSValue* Machine::cti_op_div(void** args)
     5054JSValue* Machine::cti_op_div(CTI_ARGS)
    50555055{
    50565056    JSValue* src1 = ARG_src1;
     
    50685068}
    50695069
    5070 JSValue* Machine::cti_op_pre_dec(void** args)
     5070JSValue* Machine::cti_op_pre_dec(CTI_ARGS)
    50715071{
    50725072    JSValue* v = ARG_src1;
     
    50785078}
    50795079
    5080 int Machine::cti_op_jless(void** args)
     5080int Machine::cti_op_jless(CTI_ARGS)
    50815081{
    50825082    JSValue* src1 = ARG_src1;
     
    50895089}
    50905090
    5091 JSValue* Machine::cti_op_not(void** args)
     5091JSValue* Machine::cti_op_not(CTI_ARGS)
    50925092{
    50935093    JSValue* src = ARG_src1;
     
    51005100}
    51015101
    5102 int SFX_CALL Machine::cti_op_jtrue(void** args)
     5102int SFX_CALL Machine::cti_op_jtrue(CTI_ARGS)
    51035103{
    51045104    JSValue* src1 = ARG_src1;
     
    51115111}
    51125112
    5113 VoidPtrPair Machine::cti_op_post_inc(void** args)
     5113VoidPtrPair Machine::cti_op_post_inc(CTI_ARGS)
    51145114{
    51155115    JSValue* v = ARG_src1;
     
    51245124}
    51255125
    5126 JSValue* Machine::cti_op_eq(void** args)
     5126JSValue* Machine::cti_op_eq(CTI_ARGS)
    51275127{
    51285128    JSValue* src1 = ARG_src1;
     
    51375137}
    51385138
    5139 JSValue* Machine::cti_op_lshift(void** args)
     5139JSValue* Machine::cti_op_lshift(CTI_ARGS)
    51405140{
    51415141    JSValue* val = ARG_src1;
     
    51555155}
    51565156
    5157 JSValue* Machine::cti_op_bitand(void** args)
     5157JSValue* Machine::cti_op_bitand(CTI_ARGS)
    51585158{
    51595159    JSValue* src1 = ARG_src1;
     
    51715171}
    51725172
    5173 JSValue* Machine::cti_op_rshift(void** args)
     5173JSValue* Machine::cti_op_rshift(CTI_ARGS)
    51745174{
    51755175    JSValue* val = ARG_src1;
     
    51895189}
    51905190
    5191 JSValue* Machine::cti_op_bitnot(void** args)
     5191JSValue* Machine::cti_op_bitnot(CTI_ARGS)
    51925192{
    51935193    JSValue* src = ARG_src1;
     
    52035203}
    52045204
    5205 VoidPtrPair Machine::cti_op_resolve_with_base(void** args)
     5205VoidPtrPair Machine::cti_op_resolve_with_base(CTI_ARGS)
    52065206{
    52075207    CallFrame* callFrame = ARG_callFrame;
     
    52375237}
    52385238
    5239 JSValue* Machine::cti_op_new_func_exp(void** args)
     5239JSValue* Machine::cti_op_new_func_exp(CTI_ARGS)
    52405240{
    52415241    return ARG_funcexp1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
    52425242}
    52435243
    5244 JSValue* Machine::cti_op_mod(void** args)
     5244JSValue* Machine::cti_op_mod(CTI_ARGS)
    52455245{
    52465246    JSValue* dividendValue = ARG_src1;
     
    52545254}
    52555255
    5256 JSValue* Machine::cti_op_less(void** args)
     5256JSValue* Machine::cti_op_less(CTI_ARGS)
    52575257{
    52585258    CallFrame* callFrame = ARG_callFrame;
     
    52625262}
    52635263
    5264 JSValue* Machine::cti_op_neq(void** args)
     5264JSValue* Machine::cti_op_neq(CTI_ARGS)
    52655265{
    52665266    JSValue* src1 = ARG_src1;
     
    52755275}
    52765276
    5277 VoidPtrPair Machine::cti_op_post_dec(void** args)
     5277VoidPtrPair Machine::cti_op_post_dec(CTI_ARGS)
    52785278{
    52795279    JSValue* v = ARG_src1;
     
    52885288}
    52895289
    5290 JSValue* Machine::cti_op_urshift(void** args)
     5290JSValue* Machine::cti_op_urshift(CTI_ARGS)
    52915291{
    52925292    JSValue* val = ARG_src1;
     
    53045304}
    53055305
    5306 JSValue* Machine::cti_op_bitxor(void** args)
     5306JSValue* Machine::cti_op_bitxor(CTI_ARGS)
    53075307{
    53085308    JSValue* src1 = ARG_src1;
     
    53165316}
    53175317
    5318 JSValue* Machine::cti_op_new_regexp(void** args)
     5318JSValue* Machine::cti_op_new_regexp(CTI_ARGS)
    53195319{
    53205320    return new (ARG_globalData) RegExpObject(ARG_callFrame->lexicalGlobalObject()->regExpStructure(), ARG_regexp1);
    53215321}
    53225322
    5323 JSValue* Machine::cti_op_bitor(void** args)
     5323JSValue* Machine::cti_op_bitor(CTI_ARGS)
    53245324{
    53255325    JSValue* src1 = ARG_src1;
     
    53335333}
    53345334
    5335 JSValue* Machine::cti_op_call_eval(void** args)
     5335JSValue* Machine::cti_op_call_eval(CTI_ARGS)
    53365336{
    53375337    CallFrame* callFrame = ARG_callFrame;
     
    53585358}
    53595359
    5360 void* Machine::cti_op_throw(void** args)
     5360void* Machine::cti_op_throw(CTI_ARGS)
    53615361{
    53625362    CallFrame* callFrame = ARG_callFrame;
     
    53835383}
    53845384
    5385 JSPropertyNameIterator* Machine::cti_op_get_pnames(void** args)
     5385JSPropertyNameIterator* Machine::cti_op_get_pnames(CTI_ARGS)
    53865386{
    53875387    return JSPropertyNameIterator::create(ARG_callFrame, ARG_src1);
    53885388}
    53895389
    5390 JSValue* Machine::cti_op_next_pname(void** args)
     5390JSValue* Machine::cti_op_next_pname(CTI_ARGS)
    53915391{
    53925392    JSPropertyNameIterator* it = ARG_pni1;
     
    53975397}
    53985398
    5399 void Machine::cti_op_push_scope(void** args)
     5399void Machine::cti_op_push_scope(CTI_ARGS)
    54005400{
    54015401    JSObject* o = ARG_src1->toObject(ARG_callFrame);
     
    54045404}
    54055405
    5406 void Machine::cti_op_pop_scope(void** args)
     5406void Machine::cti_op_pop_scope(CTI_ARGS)
    54075407{
    54085408    ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->pop());
    54095409}
    54105410
    5411 JSValue* Machine::cti_op_typeof(void** args)
     5411JSValue* Machine::cti_op_typeof(CTI_ARGS)
    54125412{
    54135413    return jsTypeStringForValue(ARG_callFrame, ARG_src1);
    54145414}
    54155415
    5416 JSValue* Machine::cti_op_is_undefined(void** args)
     5416JSValue* Machine::cti_op_is_undefined(CTI_ARGS)
    54175417{
    54185418    JSValue* v = ARG_src1;
     
    54205420}
    54215421
    5422 JSValue* Machine::cti_op_is_boolean(void** args)
     5422JSValue* Machine::cti_op_is_boolean(CTI_ARGS)
    54235423{
    54245424    return jsBoolean(ARG_src1->isBoolean());
    54255425}
    54265426
    5427 JSValue* Machine::cti_op_is_number(void** args)
     5427JSValue* Machine::cti_op_is_number(CTI_ARGS)
    54285428{
    54295429    return jsBoolean(ARG_src1->isNumber());
    54305430}
    54315431
    5432 JSValue* Machine::cti_op_is_string(void** args)
     5432JSValue* Machine::cti_op_is_string(CTI_ARGS)
    54335433{
    54345434    return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1));
    54355435}
    54365436
    5437 JSValue* Machine::cti_op_is_object(void** args)
     5437JSValue* Machine::cti_op_is_object(CTI_ARGS)
    54385438{
    54395439    return jsBoolean(jsIsObjectType(ARG_src1));
    54405440}
    54415441
    5442 JSValue* Machine::cti_op_is_function(void** args)
     5442JSValue* Machine::cti_op_is_function(CTI_ARGS)
    54435443{
    54445444    return jsBoolean(jsIsFunctionType(ARG_src1));
    54455445}
    54465446
    5447 JSValue* Machine::cti_op_stricteq(void** args)
     5447JSValue* Machine::cti_op_stricteq(CTI_ARGS)
    54485448{
    54495449    JSValue* src1 = ARG_src1;
     
    54575457}
    54585458
    5459 JSValue* Machine::cti_op_nstricteq(void** args)
     5459JSValue* Machine::cti_op_nstricteq(CTI_ARGS)
    54605460{
    54615461    JSValue* src1 = ARG_src1;
     
    54695469}
    54705470
    5471 JSValue* Machine::cti_op_to_jsnumber(void** args)
     5471JSValue* Machine::cti_op_to_jsnumber(CTI_ARGS)
    54725472{
    54735473    JSValue* src = ARG_src1;
     
    54795479}
    54805480
    5481 JSValue* Machine::cti_op_in(void** args)
     5481JSValue* Machine::cti_op_in(CTI_ARGS)
    54825482{
    54835483    CallFrame* callFrame = ARG_callFrame;
     
    55055505}
    55065506
    5507 JSValue* Machine::cti_op_push_new_scope(void** args)
     5507JSValue* Machine::cti_op_push_new_scope(CTI_ARGS)
    55085508{
    55095509    JSObject* scope = new (ARG_globalData) JSStaticScopeObject(ARG_callFrame, *ARG_id1, ARG_src2, DontDelete);
     
    55145514}
    55155515
    5516 void Machine::cti_op_jmp_scopes(void** args)
     5516void Machine::cti_op_jmp_scopes(CTI_ARGS)
    55175517{
    55185518    unsigned count = ARG_int1;
     
    55255525}
    55265526
    5527 void Machine::cti_op_put_by_index(void** args)
     5527void Machine::cti_op_put_by_index(CTI_ARGS)
    55285528{
    55295529    CallFrame* callFrame = ARG_callFrame;
     
    55335533}
    55345534
    5535 void* Machine::cti_op_switch_imm(void** args)
     5535void* Machine::cti_op_switch_imm(CTI_ARGS)
    55365536{
    55375537    JSValue* scrutinee = ARG_src1;
     
    55485548}
    55495549
    5550 void* Machine::cti_op_switch_char(void** args)
     5550void* Machine::cti_op_switch_char(CTI_ARGS)
    55515551{
    55525552    JSValue* scrutinee = ARG_src1;
     
    55665566}
    55675567
    5568 void* Machine::cti_op_switch_string(void** args)
     5568void* Machine::cti_op_switch_string(CTI_ARGS)
    55695569{
    55705570    JSValue* scrutinee = ARG_src1;
     
    55835583}
    55845584
    5585 JSValue* Machine::cti_op_del_by_val(void** args)
     5585JSValue* Machine::cti_op_del_by_val(CTI_ARGS)
    55865586{
    55875587    CallFrame* callFrame = ARG_callFrame;
     
    56065606}
    56075607
    5608 void Machine::cti_op_put_getter(void** args)
     5608void Machine::cti_op_put_getter(CTI_ARGS)
    56095609{
    56105610    CallFrame* callFrame = ARG_callFrame;
     
    56175617}
    56185618
    5619 void Machine::cti_op_put_setter(void** args)
     5619void Machine::cti_op_put_setter(CTI_ARGS)
    56205620{
    56215621    CallFrame* callFrame = ARG_callFrame;
     
    56285628}
    56295629
    5630 JSValue* Machine::cti_op_new_error(void** args)
     5630JSValue* Machine::cti_op_new_error(CTI_ARGS)
    56315631{
    56325632    CallFrame* callFrame = ARG_callFrame;
     
    56395639}
    56405640
    5641 void Machine::cti_op_debug(void** args)
     5641void Machine::cti_op_debug(CTI_ARGS)
    56425642{
    56435643    CallFrame* callFrame = ARG_callFrame;
     
    56505650}
    56515651
    5652 void* Machine::cti_vm_throw(void** args)
     5652void* Machine::cti_vm_throw(CTI_ARGS)
    56535653{
    56545654    CallFrame* callFrame = ARG_callFrame;
  • trunk/JavaScriptCore/VM/Machine.h

    r37581 r37597  
    5454#if ENABLE(CTI)
    5555
     56#if USE(CTI_ARGUMENT)
     57#define CTI_ARGS void** args
     58#define ARGS (args)
     59#else
     60#define CTI_ARGS void* args
     61#define ARGS (&args)
     62#endif
     63
     64#if USE(FAST_CALL_CTI_ARGUMENT)
     65
    5666#if COMPILER(MSVC)
    5767#define SFX_CALL __fastcall
     
    6070#else
    6171#error Need to support fastcall calling convention in this compiler
     72#endif
     73
     74#else
     75
     76#if COMPILER(MSVC)
     77#define SFX_CALL __cdecl
     78#else
     79#define SFX_CALL
     80#endif
     81
    6282#endif
    6383
     
    142162#if ENABLE(CTI)
    143163
    144         static void SFX_CALL cti_timeout_check(void** args);
    145         static void SFX_CALL cti_register_file_check(void** args);
    146 
    147         static JSValue* SFX_CALL cti_op_convert_this(void** args);
    148         static void SFX_CALL cti_op_end(void** args);
    149         static JSValue* SFX_CALL cti_op_add(void** args);
    150         static JSValue* SFX_CALL cti_op_pre_inc(void** args);
    151         static int SFX_CALL cti_op_loop_if_less(void** args);
    152         static int SFX_CALL cti_op_loop_if_lesseq(void** args);
    153         static JSValue* SFX_CALL cti_op_new_object(void** args);
    154         static void SFX_CALL cti_op_put_by_id(void** args);
    155         static void SFX_CALL cti_op_put_by_id_second(void** args);
    156         static void SFX_CALL cti_op_put_by_id_generic(void** args);
    157         static void SFX_CALL cti_op_put_by_id_fail(void** args);
    158         static JSValue* SFX_CALL cti_op_get_by_id(void** args);
    159         static JSValue* SFX_CALL cti_op_get_by_id_second(void** args);
    160         static JSValue* SFX_CALL cti_op_get_by_id_generic(void** args);
    161         static JSValue* SFX_CALL cti_op_get_by_id_fail(void** args);
    162         static JSValue* SFX_CALL cti_op_del_by_id(void** args);
    163         static JSValue* SFX_CALL cti_op_instanceof(void** args);
    164         static JSValue* SFX_CALL cti_op_mul(void** args);
    165         static JSValue* SFX_CALL cti_op_new_func(void** args);
    166         static VoidPtrPair SFX_CALL cti_op_call_JSFunction(void** args);
    167         static JSValue* SFX_CALL cti_op_call_NotJSFunction(void** args);
    168         static void SFX_CALL cti_op_create_arguments(void** args);
    169         static void SFX_CALL cti_op_tear_off_activation(void** args);
    170         static void SFX_CALL cti_op_tear_off_arguments(void** args);
    171         static void SFX_CALL cti_op_ret_profiler(void** args);
    172         static void SFX_CALL cti_op_ret_scopeChain(void** args);
    173         static JSValue* SFX_CALL cti_op_new_array(void** args);
    174         static JSValue* SFX_CALL cti_op_resolve(void** args);
    175         static JSValue* SFX_CALL cti_op_resolve_global(void** args);
    176         static VoidPtrPair SFX_CALL cti_op_construct_JSConstruct(void** args);
    177         static JSValue* SFX_CALL cti_op_construct_NotJSConstruct(void** args);
    178         static JSValue* SFX_CALL cti_op_get_by_val(void** args);
    179         static VoidPtrPair SFX_CALL cti_op_resolve_func(void** args);
    180         static JSValue* SFX_CALL cti_op_sub(void** args);
    181         static void SFX_CALL cti_op_put_by_val(void** args);
    182         static void SFX_CALL cti_op_put_by_val_array(void** args);
    183         static JSValue* SFX_CALL cti_op_lesseq(void** args);
    184         static int SFX_CALL cti_op_loop_if_true(void** args);
    185         static JSValue* SFX_CALL cti_op_resolve_base(void** args);
    186         static JSValue* SFX_CALL cti_op_negate(void** args);
    187         static JSValue* SFX_CALL cti_op_resolve_skip(void** args);
    188         static JSValue* SFX_CALL cti_op_div(void** args);
    189         static JSValue* SFX_CALL cti_op_pre_dec(void** args);
    190         static int SFX_CALL cti_op_jless(void** args);
    191         static JSValue* SFX_CALL cti_op_not(void** args);
    192         static int SFX_CALL cti_op_jtrue(void** args);
    193         static VoidPtrPair SFX_CALL cti_op_post_inc(void** args);
    194         static JSValue* SFX_CALL cti_op_eq(void** args);
    195         static JSValue* SFX_CALL cti_op_lshift(void** args);
    196         static JSValue* SFX_CALL cti_op_bitand(void** args);
    197         static JSValue* SFX_CALL cti_op_rshift(void** args);
    198         static JSValue* SFX_CALL cti_op_bitnot(void** args);
    199         static VoidPtrPair SFX_CALL cti_op_resolve_with_base(void** args);
    200         static JSValue* SFX_CALL cti_op_new_func_exp(void** args);
    201         static JSValue* SFX_CALL cti_op_mod(void** args);
    202         static JSValue* SFX_CALL cti_op_less(void** args);
    203         static JSValue* SFX_CALL cti_op_neq(void** args);
    204         static VoidPtrPair SFX_CALL cti_op_post_dec(void** args);
    205         static JSValue* SFX_CALL cti_op_urshift(void** args);
    206         static JSValue* SFX_CALL cti_op_bitxor(void** args);
    207         static JSValue* SFX_CALL cti_op_new_regexp(void** args);
    208         static JSValue* SFX_CALL cti_op_bitor(void** args);
    209         static JSValue* SFX_CALL cti_op_call_eval(void** args);
    210         static void* SFX_CALL cti_op_throw(void** args);
    211         static JSPropertyNameIterator* SFX_CALL cti_op_get_pnames(void** args);
    212         static JSValue* SFX_CALL cti_op_next_pname(void** args);
    213         static void SFX_CALL cti_op_push_scope(void** args);
    214         static void SFX_CALL cti_op_pop_scope(void** args);
    215         static JSValue* SFX_CALL cti_op_typeof(void** args);
    216         static JSValue* SFX_CALL cti_op_is_undefined(void** args);
    217         static JSValue* SFX_CALL cti_op_is_boolean(void** args);
    218         static JSValue* SFX_CALL cti_op_is_number(void** args);
    219         static JSValue* SFX_CALL cti_op_is_string(void** args);
    220         static JSValue* SFX_CALL cti_op_is_object(void** args);
    221         static JSValue* SFX_CALL cti_op_is_function(void** args);
    222         static JSValue* SFX_CALL cti_op_stricteq(void** args);
    223         static JSValue* SFX_CALL cti_op_nstricteq(void** args);
    224         static JSValue* SFX_CALL cti_op_to_jsnumber(void** args);
    225         static JSValue* SFX_CALL cti_op_in(void** args);
    226         static JSValue* SFX_CALL cti_op_push_new_scope(void** args);
    227         static void SFX_CALL cti_op_jmp_scopes(void** args);
    228         static void SFX_CALL cti_op_put_by_index(void** args);
    229         static void* SFX_CALL cti_op_switch_imm(void** args);
    230         static void* SFX_CALL cti_op_switch_char(void** args);
    231         static void* SFX_CALL cti_op_switch_string(void** args);
    232         static JSValue* SFX_CALL cti_op_del_by_val(void** args);
    233         static void SFX_CALL cti_op_put_getter(void** args);
    234         static void SFX_CALL cti_op_put_setter(void** args);
    235         static JSValue* SFX_CALL cti_op_new_error(void** args);
    236         static void SFX_CALL cti_op_debug(void** args);
    237 
    238         static void* SFX_CALL cti_vm_throw(void** args);
    239         static void* SFX_CALL cti_vm_compile(void** args);
    240         static JSValue* SFX_CALL cti_op_push_activation(void** args);
     164        static void SFX_CALL cti_timeout_check(CTI_ARGS);
     165        static void SFX_CALL cti_register_file_check(CTI_ARGS);
     166
     167        static JSValue* SFX_CALL cti_op_convert_this(CTI_ARGS);
     168        static void SFX_CALL cti_op_end(CTI_ARGS);
     169        static JSValue* SFX_CALL cti_op_add(CTI_ARGS);
     170        static JSValue* SFX_CALL cti_op_pre_inc(CTI_ARGS);
     171        static int SFX_CALL cti_op_loop_if_less(CTI_ARGS);
     172        static int SFX_CALL cti_op_loop_if_lesseq(CTI_ARGS);
     173        static JSValue* SFX_CALL cti_op_new_object(CTI_ARGS);
     174        static void SFX_CALL cti_op_put_by_id(CTI_ARGS);
     175        static void SFX_CALL cti_op_put_by_id_second(CTI_ARGS);
     176        static void SFX_CALL cti_op_put_by_id_generic(CTI_ARGS);
     177        static void SFX_CALL cti_op_put_by_id_fail(CTI_ARGS);
     178        static JSValue* SFX_CALL cti_op_get_by_id(CTI_ARGS);
     179        static JSValue* SFX_CALL cti_op_get_by_id_second(CTI_ARGS);
     180        static JSValue* SFX_CALL cti_op_get_by_id_generic(CTI_ARGS);
     181        static JSValue* SFX_CALL cti_op_get_by_id_fail(CTI_ARGS);
     182        static JSValue* SFX_CALL cti_op_del_by_id(CTI_ARGS);
     183        static JSValue* SFX_CALL cti_op_instanceof(CTI_ARGS);
     184        static JSValue* SFX_CALL cti_op_mul(CTI_ARGS);
     185        static JSValue* SFX_CALL cti_op_new_func(CTI_ARGS);
     186        static VoidPtrPair SFX_CALL cti_op_call_JSFunction(CTI_ARGS);
     187        static JSValue* SFX_CALL cti_op_call_NotJSFunction(CTI_ARGS);
     188        static void SFX_CALL cti_op_create_arguments(CTI_ARGS);
     189        static void SFX_CALL cti_op_tear_off_activation(CTI_ARGS);
     190        static void SFX_CALL cti_op_tear_off_arguments(CTI_ARGS);
     191        static void SFX_CALL cti_op_ret_profiler(CTI_ARGS);
     192        static void SFX_CALL cti_op_ret_scopeChain(CTI_ARGS);
     193        static JSValue* SFX_CALL cti_op_new_array(CTI_ARGS);
     194        static JSValue* SFX_CALL cti_op_resolve(CTI_ARGS);
     195        static JSValue* SFX_CALL cti_op_resolve_global(CTI_ARGS);
     196        static VoidPtrPair SFX_CALL cti_op_construct_JSConstruct(CTI_ARGS);
     197        static JSValue* SFX_CALL cti_op_construct_NotJSConstruct(CTI_ARGS);
     198        static JSValue* SFX_CALL cti_op_get_by_val(CTI_ARGS);
     199        static VoidPtrPair SFX_CALL cti_op_resolve_func(CTI_ARGS);
     200        static JSValue* SFX_CALL cti_op_sub(CTI_ARGS);
     201        static void SFX_CALL cti_op_put_by_val(CTI_ARGS);
     202        static void SFX_CALL cti_op_put_by_val_array(CTI_ARGS);
     203        static JSValue* SFX_CALL cti_op_lesseq(CTI_ARGS);
     204        static int SFX_CALL cti_op_loop_if_true(CTI_ARGS);
     205        static JSValue* SFX_CALL cti_op_resolve_base(CTI_ARGS);
     206        static JSValue* SFX_CALL cti_op_negate(CTI_ARGS);
     207        static JSValue* SFX_CALL cti_op_resolve_skip(CTI_ARGS);
     208        static JSValue* SFX_CALL cti_op_div(CTI_ARGS);
     209        static JSValue* SFX_CALL cti_op_pre_dec(CTI_ARGS);
     210        static int SFX_CALL cti_op_jless(CTI_ARGS);
     211        static JSValue* SFX_CALL cti_op_not(CTI_ARGS);
     212        static int SFX_CALL cti_op_jtrue(CTI_ARGS);
     213        static VoidPtrPair SFX_CALL cti_op_post_inc(CTI_ARGS);
     214        static JSValue* SFX_CALL cti_op_eq(CTI_ARGS);
     215        static JSValue* SFX_CALL cti_op_lshift(CTI_ARGS);
     216        static JSValue* SFX_CALL cti_op_bitand(CTI_ARGS);
     217        static JSValue* SFX_CALL cti_op_rshift(CTI_ARGS);
     218        static JSValue* SFX_CALL cti_op_bitnot(CTI_ARGS);
     219        static VoidPtrPair SFX_CALL cti_op_resolve_with_base(CTI_ARGS);
     220        static JSValue* SFX_CALL cti_op_new_func_exp(CTI_ARGS);
     221        static JSValue* SFX_CALL cti_op_mod(CTI_ARGS);
     222        static JSValue* SFX_CALL cti_op_less(CTI_ARGS);
     223        static JSValue* SFX_CALL cti_op_neq(CTI_ARGS);
     224        static VoidPtrPair SFX_CALL cti_op_post_dec(CTI_ARGS);
     225        static JSValue* SFX_CALL cti_op_urshift(CTI_ARGS);
     226        static JSValue* SFX_CALL cti_op_bitxor(CTI_ARGS);
     227        static JSValue* SFX_CALL cti_op_new_regexp(CTI_ARGS);
     228        static JSValue* SFX_CALL cti_op_bitor(CTI_ARGS);
     229        static JSValue* SFX_CALL cti_op_call_eval(CTI_ARGS);
     230        static void* SFX_CALL cti_op_throw(CTI_ARGS);
     231        static JSPropertyNameIterator* SFX_CALL cti_op_get_pnames(CTI_ARGS);
     232        static JSValue* SFX_CALL cti_op_next_pname(CTI_ARGS);
     233        static void SFX_CALL cti_op_push_scope(CTI_ARGS);
     234        static void SFX_CALL cti_op_pop_scope(CTI_ARGS);
     235        static JSValue* SFX_CALL cti_op_typeof(CTI_ARGS);
     236        static JSValue* SFX_CALL cti_op_is_undefined(CTI_ARGS);
     237        static JSValue* SFX_CALL cti_op_is_boolean(CTI_ARGS);
     238        static JSValue* SFX_CALL cti_op_is_number(CTI_ARGS);
     239        static JSValue* SFX_CALL cti_op_is_string(CTI_ARGS);
     240        static JSValue* SFX_CALL cti_op_is_object(CTI_ARGS);
     241        static JSValue* SFX_CALL cti_op_is_function(CTI_ARGS);
     242        static JSValue* SFX_CALL cti_op_stricteq(CTI_ARGS);
     243        static JSValue* SFX_CALL cti_op_nstricteq(CTI_ARGS);
     244        static JSValue* SFX_CALL cti_op_to_jsnumber(CTI_ARGS);
     245        static JSValue* SFX_CALL cti_op_in(CTI_ARGS);
     246        static JSValue* SFX_CALL cti_op_push_new_scope(CTI_ARGS);
     247        static void SFX_CALL cti_op_jmp_scopes(CTI_ARGS);
     248        static void SFX_CALL cti_op_put_by_index(CTI_ARGS);
     249        static void* SFX_CALL cti_op_switch_imm(CTI_ARGS);
     250        static void* SFX_CALL cti_op_switch_char(CTI_ARGS);
     251        static void* SFX_CALL cti_op_switch_string(CTI_ARGS);
     252        static JSValue* SFX_CALL cti_op_del_by_val(CTI_ARGS);
     253        static void SFX_CALL cti_op_put_getter(CTI_ARGS);
     254        static void SFX_CALL cti_op_put_setter(CTI_ARGS);
     255        static JSValue* SFX_CALL cti_op_new_error(CTI_ARGS);
     256        static void SFX_CALL cti_op_debug(CTI_ARGS);
     257
     258        static void* SFX_CALL cti_vm_throw(CTI_ARGS);
     259        static void* SFX_CALL cti_vm_compile(CTI_ARGS);
     260        static JSValue* SFX_CALL cti_op_push_activation(CTI_ARGS);
    241261       
    242262#endif // ENABLE(CTI)
  • trunk/JavaScriptCore/masm/X86Assembler.h

    r37581 r37597  
    10821082#endif
    10831083
     1084#if USE(CTI_ARGUMENT)
    10841085    void emitRestoreArgumentReference()
    10851086    {
     1087#if USE(FAST_CALL_CTI_ARGUMENT)
    10861088        movl_rr(X86::esp, X86::ecx);
     1089#else
     1090        movl_rm(X86::esp, 0, X86::esp);
     1091#endif
    10871092    }
    10881093
    10891094    void emitRestoreArgumentReferenceForTrampoline()
    10901095    {
     1096#if USE(FAST_CALL_CTI_ARGUMENT)
    10911097        movl_rr(X86::esp, X86::ecx);
    10921098        addl_i32r(4, X86::ecx);
    1093     }
     1099#endif
     1100    }
     1101#else
     1102    void emitRestoreArgumentReference() {}
     1103    void emitRestoreArgumentReferenceForTrampoline() {}
     1104#endif
    10941105
    10951106private:
  • trunk/JavaScriptCore/wtf/Platform.h

    r37581 r37597  
    365365#endif
    366366
     367// Use "fastcall" calling convention on MSVC and GCC > 4.0
     368#if COMPILER(MSVC) || (COMPILER(GCC) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 0)))
     369#define WTF_USE_FAST_CALL_CTI_ARGUMENT 1
     370#endif
     371
     372#if COMPILER(MSVC) || USE(FAST_CALL_CTI_ARGUMENT)
     373#define WTF_USE_CTI_ARGUMENT 1
     374#endif
     375
    367376#endif /* WTF_Platform_h */
Note: See TracChangeset for help on using the changeset viewer.