Changeset 37581 in webkit for trunk/JavaScriptCore
- Timestamp:
- Oct 14, 2008, 1:21:19 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r37576 r37581 1 2008-10-14 Maciej Stachowiak <[email protected]> 2 3 Reviewed by Cameron Zwarich. 4 5 - always use CTI_ARGUMENTS and CTI_ARGUMENTS_FASTCALL 6 7 This is a small regression for GCC 4.0, but simplifies the code 8 for future improvements and lets us focus on GCC 4.2+ and MSVC. 9 10 * VM/CTI.cpp: 11 * VM/CTI.h: 12 * VM/Machine.cpp: 13 (JSC::Machine::cti_op_convert_this): 14 (JSC::Machine::cti_op_end): 15 (JSC::Machine::cti_op_add): 16 (JSC::Machine::cti_op_pre_inc): 17 (JSC::Machine::cti_timeout_check): 18 (JSC::Machine::cti_register_file_check): 19 (JSC::Machine::cti_op_loop_if_less): 20 (JSC::Machine::cti_op_loop_if_lesseq): 21 (JSC::Machine::cti_op_new_object): 22 (JSC::Machine::cti_op_put_by_id): 23 (JSC::Machine::cti_op_put_by_id_second): 24 (JSC::Machine::cti_op_put_by_id_generic): 25 (JSC::Machine::cti_op_put_by_id_fail): 26 (JSC::Machine::cti_op_get_by_id): 27 (JSC::Machine::cti_op_get_by_id_second): 28 (JSC::Machine::cti_op_get_by_id_generic): 29 (JSC::Machine::cti_op_get_by_id_fail): 30 (JSC::Machine::cti_op_instanceof): 31 (JSC::Machine::cti_op_del_by_id): 32 (JSC::Machine::cti_op_mul): 33 (JSC::Machine::cti_op_new_func): 34 (JSC::Machine::cti_op_call_JSFunction): 35 (JSC::Machine::cti_vm_compile): 36 (JSC::Machine::cti_op_push_activation): 37 (JSC::Machine::cti_op_call_NotJSFunction): 38 (JSC::Machine::cti_op_create_arguments): 39 (JSC::Machine::cti_op_tear_off_activation): 40 (JSC::Machine::cti_op_tear_off_arguments): 41 (JSC::Machine::cti_op_ret_profiler): 42 (JSC::Machine::cti_op_ret_scopeChain): 43 (JSC::Machine::cti_op_new_array): 44 (JSC::Machine::cti_op_resolve): 45 (JSC::Machine::cti_op_construct_JSConstruct): 46 (JSC::Machine::cti_op_construct_NotJSConstruct): 47 (JSC::Machine::cti_op_get_by_val): 48 (JSC::Machine::cti_op_resolve_func): 49 (JSC::Machine::cti_op_sub): 50 (JSC::Machine::cti_op_put_by_val): 51 (JSC::Machine::cti_op_put_by_val_array): 52 (JSC::Machine::cti_op_lesseq): 53 (JSC::Machine::cti_op_loop_if_true): 54 (JSC::Machine::cti_op_negate): 55 (JSC::Machine::cti_op_resolve_base): 56 (JSC::Machine::cti_op_resolve_skip): 57 (JSC::Machine::cti_op_resolve_global): 58 (JSC::Machine::cti_op_div): 59 (JSC::Machine::cti_op_pre_dec): 60 (JSC::Machine::cti_op_jless): 61 (JSC::Machine::cti_op_not): 62 (JSC::Machine::cti_op_jtrue): 63 (JSC::Machine::cti_op_post_inc): 64 (JSC::Machine::cti_op_eq): 65 (JSC::Machine::cti_op_lshift): 66 (JSC::Machine::cti_op_bitand): 67 (JSC::Machine::cti_op_rshift): 68 (JSC::Machine::cti_op_bitnot): 69 (JSC::Machine::cti_op_resolve_with_base): 70 (JSC::Machine::cti_op_new_func_exp): 71 (JSC::Machine::cti_op_mod): 72 (JSC::Machine::cti_op_less): 73 (JSC::Machine::cti_op_neq): 74 (JSC::Machine::cti_op_post_dec): 75 (JSC::Machine::cti_op_urshift): 76 (JSC::Machine::cti_op_bitxor): 77 (JSC::Machine::cti_op_new_regexp): 78 (JSC::Machine::cti_op_bitor): 79 (JSC::Machine::cti_op_call_eval): 80 (JSC::Machine::cti_op_throw): 81 (JSC::Machine::cti_op_get_pnames): 82 (JSC::Machine::cti_op_next_pname): 83 (JSC::Machine::cti_op_push_scope): 84 (JSC::Machine::cti_op_pop_scope): 85 (JSC::Machine::cti_op_typeof): 86 (JSC::Machine::cti_op_is_undefined): 87 (JSC::Machine::cti_op_is_boolean): 88 (JSC::Machine::cti_op_is_number): 89 (JSC::Machine::cti_op_is_string): 90 (JSC::Machine::cti_op_is_object): 91 (JSC::Machine::cti_op_is_function): 92 (JSC::Machine::cti_op_stricteq): 93 (JSC::Machine::cti_op_nstricteq): 94 (JSC::Machine::cti_op_to_jsnumber): 95 (JSC::Machine::cti_op_in): 96 (JSC::Machine::cti_op_push_new_scope): 97 (JSC::Machine::cti_op_jmp_scopes): 98 (JSC::Machine::cti_op_put_by_index): 99 (JSC::Machine::cti_op_switch_imm): 100 (JSC::Machine::cti_op_switch_char): 101 (JSC::Machine::cti_op_switch_string): 102 (JSC::Machine::cti_op_del_by_val): 103 (JSC::Machine::cti_op_put_getter): 104 (JSC::Machine::cti_op_put_setter): 105 (JSC::Machine::cti_op_new_error): 106 (JSC::Machine::cti_op_debug): 107 (JSC::Machine::cti_vm_throw): 108 * VM/Machine.h: 109 * masm/X86Assembler.h: 110 (JSC::X86Assembler::emitRestoreArgumentReference): 111 (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline): 112 * wtf/Platform.h: 113 1 114 2008-10-13 Maciej Stachowiak <[email protected]> 2 115 -
trunk/JavaScriptCore/VM/CTI.cpp
r37570 r37581 109 109 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 110 110 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" 111 #if USE(CTI_ARGUMENT)112 #if USE(FAST_CALL_CTI_ARGUMENT)113 111 "movl %esp, %ecx" "\n" 114 #else115 "movl %esp, 0(%esp)" "\n"116 #endif117 112 "call " SYMBOL_STRING(_ZN3JSC7Machine12cti_vm_throwEPPv) "\n" 118 #else119 "call " SYMBOL_STRING(_ZN3JSC7Machine12cti_vm_throwEPv) "\n"120 #endif121 113 "addl $0x24, %esp" "\n" 122 114 "popl %edi" "\n" -
trunk/JavaScriptCore/VM/CTI.h
r37457 r37581 45 45 #define CTI_ARGS_profilerReference 0x10 46 46 #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]) 82 82 83 83 namespace JSC { … … 96 96 struct OperandTypes; 97 97 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);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); 104 104 105 105 struct CallRecord { … … 239 239 static const int repatchGetByIdDefaultOffset = 256; 240 240 241 #if USE(FAST_CALL_CTI_ARGUMENT)242 241 static const int ctiArgumentInitSize = 2; 243 #elif USE(CTI_ARGUMENT) 244 static const int ctiArgumentInitSize = 4; 245 #else 246 static const int ctiArgumentInitSize = 0; 247 #endif 242 248 243 // These architecture specific value are used to enable repatching - see comment on op_put_by_id. 249 244 static const int repatchOffsetPutByIdStructureID = 19; -
trunk/JavaScriptCore/VM/Machine.cpp
r37576 r37581 4242 4242 } while (0) 4243 4243 4244 JSValue* Machine::cti_op_convert_this( CTI_ARGS)4244 JSValue* Machine::cti_op_convert_this(void** args) 4245 4245 { 4246 4246 JSValue* v1 = ARG_src1; … … 4252 4252 } 4253 4253 4254 void Machine::cti_op_end( CTI_ARGS)4254 void Machine::cti_op_end(void** args) 4255 4255 { 4256 4256 ScopeChainNode* scopeChain = ARG_callFrame->scopeChain(); … … 4259 4259 } 4260 4260 4261 JSValue* Machine::cti_op_add( CTI_ARGS)4261 JSValue* Machine::cti_op_add(void** args) 4262 4262 { 4263 4263 JSValue* v1 = ARG_src1; … … 4302 4302 } 4303 4303 4304 JSValue* Machine::cti_op_pre_inc( CTI_ARGS)4304 JSValue* Machine::cti_op_pre_inc(void** args) 4305 4305 { 4306 4306 JSValue* v = ARG_src1; … … 4312 4312 } 4313 4313 4314 void Machine::cti_timeout_check( CTI_ARGS)4314 void Machine::cti_timeout_check(void** args) 4315 4315 { 4316 4316 if (ARG_globalData->machine->checkTimeout(ARG_callFrame->dynamicGlobalObject())) { … … 4320 4320 } 4321 4321 4322 void Machine::cti_register_file_check( CTI_ARGS)4322 void Machine::cti_register_file_check(void** args) 4323 4323 { 4324 4324 CallFrame* callFrame = ARG_callFrame; … … 4336 4336 } 4337 4337 4338 int Machine::cti_op_loop_if_less( CTI_ARGS)4338 int Machine::cti_op_loop_if_less(void** args) 4339 4339 { 4340 4340 JSValue* src1 = ARG_src1; … … 4347 4347 } 4348 4348 4349 int Machine::cti_op_loop_if_lesseq( CTI_ARGS)4349 int Machine::cti_op_loop_if_lesseq(void** args) 4350 4350 { 4351 4351 JSValue* src1 = ARG_src1; … … 4358 4358 } 4359 4359 4360 JSValue* Machine::cti_op_new_object( CTI_ARGS)4360 JSValue* Machine::cti_op_new_object(void** args) 4361 4361 { 4362 4362 return constructEmptyObject(ARG_callFrame);; 4363 4363 } 4364 4364 4365 void Machine::cti_op_put_by_id( CTI_ARGS)4365 void Machine::cti_op_put_by_id(void** args) 4366 4366 { 4367 4367 CallFrame* callFrame = ARG_callFrame; … … 4376 4376 } 4377 4377 4378 void Machine::cti_op_put_by_id_second( CTI_ARGS)4378 void Machine::cti_op_put_by_id_second(void** args) 4379 4379 { 4380 4380 PutPropertySlot slot; … … 4384 4384 } 4385 4385 4386 void Machine::cti_op_put_by_id_generic( CTI_ARGS)4386 void Machine::cti_op_put_by_id_generic(void** args) 4387 4387 { 4388 4388 PutPropertySlot slot; … … 4391 4391 } 4392 4392 4393 void Machine::cti_op_put_by_id_fail( CTI_ARGS)4393 void Machine::cti_op_put_by_id_fail(void** args) 4394 4394 { 4395 4395 CallFrame* callFrame = ARG_callFrame; … … 4405 4405 } 4406 4406 4407 JSValue* Machine::cti_op_get_by_id( CTI_ARGS)4407 JSValue* Machine::cti_op_get_by_id(void** args) 4408 4408 { 4409 4409 CallFrame* callFrame = ARG_callFrame; … … 4420 4420 } 4421 4421 4422 JSValue* Machine::cti_op_get_by_id_second( CTI_ARGS)4422 JSValue* Machine::cti_op_get_by_id_second(void** args) 4423 4423 { 4424 4424 CallFrame* callFrame = ARG_callFrame; … … 4435 4435 } 4436 4436 4437 JSValue* Machine::cti_op_get_by_id_generic( CTI_ARGS)4437 JSValue* Machine::cti_op_get_by_id_generic(void** args) 4438 4438 { 4439 4439 CallFrame* callFrame = ARG_callFrame; … … 4448 4448 } 4449 4449 4450 JSValue* Machine::cti_op_get_by_id_fail( CTI_ARGS)4450 JSValue* Machine::cti_op_get_by_id_fail(void** args) 4451 4451 { 4452 4452 CallFrame* callFrame = ARG_callFrame; … … 4464 4464 } 4465 4465 4466 JSValue* Machine::cti_op_instanceof( CTI_ARGS)4466 JSValue* Machine::cti_op_instanceof(void** args) 4467 4467 { 4468 4468 CallFrame* callFrame = ARG_callFrame; … … 4505 4505 } 4506 4506 4507 JSValue* Machine::cti_op_del_by_id( CTI_ARGS)4507 JSValue* Machine::cti_op_del_by_id(void** args) 4508 4508 { 4509 4509 CallFrame* callFrame = ARG_callFrame; … … 4517 4517 } 4518 4518 4519 JSValue* Machine::cti_op_mul( CTI_ARGS)4519 JSValue* Machine::cti_op_mul(void** args) 4520 4520 { 4521 4521 JSValue* src1 = ARG_src1; … … 4533 4533 } 4534 4534 4535 JSValue* Machine::cti_op_new_func( CTI_ARGS)4535 JSValue* Machine::cti_op_new_func(void** args) 4536 4536 { 4537 4537 return ARG_func1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain()); 4538 4538 } 4539 4539 4540 VoidPtrPair Machine::cti_op_call_JSFunction( CTI_ARGS)4540 VoidPtrPair Machine::cti_op_call_JSFunction(void** args) 4541 4541 { 4542 4542 #ifndef NDEBUG … … 4587 4587 } 4588 4588 4589 void* Machine::cti_vm_compile( CTI_ARGS)4589 void* Machine::cti_vm_compile(void** args) 4590 4590 { 4591 4591 CodeBlock* codeBlock = ARG_callFrame->codeBlock(); … … 4595 4595 } 4596 4596 4597 JSValue* Machine::cti_op_push_activation( CTI_ARGS)4597 JSValue* Machine::cti_op_push_activation(void** args) 4598 4598 { 4599 4599 JSActivation* activation = new (ARG_globalData) JSActivation(ARG_callFrame, static_cast<FunctionBodyNode*>(ARG_callFrame->codeBlock()->ownerNode)); … … 4602 4602 } 4603 4603 4604 JSValue* Machine::cti_op_call_NotJSFunction( CTI_ARGS)4604 JSValue* Machine::cti_op_call_NotJSFunction(void** args) 4605 4605 { 4606 4606 JSValue* funcVal = ARG_src1; … … 4644 4644 } 4645 4645 4646 void Machine::cti_op_create_arguments( CTI_ARGS)4646 void Machine::cti_op_create_arguments(void** args) 4647 4647 { 4648 4648 Arguments* arguments = new (ARG_globalData) Arguments(ARG_callFrame); … … 4651 4651 } 4652 4652 4653 void Machine::cti_op_tear_off_activation( CTI_ARGS)4653 void Machine::cti_op_tear_off_activation(void** args) 4654 4654 { 4655 4655 ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain); … … 4658 4658 } 4659 4659 4660 void Machine::cti_op_tear_off_arguments( CTI_ARGS)4660 void Machine::cti_op_tear_off_arguments(void** args) 4661 4661 { 4662 4662 ASSERT(ARG_callFrame->codeBlock()->usesArguments && !ARG_callFrame->codeBlock()->needsFullScopeChain); … … 4664 4664 } 4665 4665 4666 void Machine::cti_op_ret_profiler( CTI_ARGS)4666 void Machine::cti_op_ret_profiler(void** args) 4667 4667 { 4668 4668 ASSERT(*ARG_profilerReference); … … 4670 4670 } 4671 4671 4672 void Machine::cti_op_ret_scopeChain( CTI_ARGS)4672 void Machine::cti_op_ret_scopeChain(void** args) 4673 4673 { 4674 4674 ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain); … … 4676 4676 } 4677 4677 4678 JSValue* Machine::cti_op_new_array( CTI_ARGS)4678 JSValue* Machine::cti_op_new_array(void** args) 4679 4679 { 4680 4680 ArgList argList(ARG_registers1, ARG_int2); … … 4682 4682 } 4683 4683 4684 JSValue* Machine::cti_op_resolve( CTI_ARGS)4684 JSValue* Machine::cti_op_resolve(void** args) 4685 4685 { 4686 4686 CallFrame* callFrame = ARG_callFrame; … … 4709 4709 } 4710 4710 4711 VoidPtrPair Machine::cti_op_construct_JSConstruct( CTI_ARGS)4711 VoidPtrPair Machine::cti_op_construct_JSConstruct(void** args) 4712 4712 { 4713 4713 CallFrame* callFrame = ARG_callFrame; … … 4772 4772 } 4773 4773 4774 JSValue* Machine::cti_op_construct_NotJSConstruct( CTI_ARGS)4774 JSValue* Machine::cti_op_construct_NotJSConstruct(void** args) 4775 4775 { 4776 4776 CallFrame* callFrame = ARG_callFrame; … … 4808 4808 } 4809 4809 4810 JSValue* Machine::cti_op_get_by_val( CTI_ARGS)4810 JSValue* Machine::cti_op_get_by_val(void** args) 4811 4811 { 4812 4812 CallFrame* callFrame = ARG_callFrame; … … 4840 4840 } 4841 4841 4842 VoidPtrPair Machine::cti_op_resolve_func( CTI_ARGS)4842 VoidPtrPair Machine::cti_op_resolve_func(void** args) 4843 4843 { 4844 4844 CallFrame* callFrame = ARG_callFrame; … … 4882 4882 } 4883 4883 4884 JSValue* Machine::cti_op_sub( CTI_ARGS)4884 JSValue* Machine::cti_op_sub(void** args) 4885 4885 { 4886 4886 JSValue* src1 = ARG_src1; … … 4898 4898 } 4899 4899 4900 void Machine::cti_op_put_by_val( CTI_ARGS)4900 void Machine::cti_op_put_by_val(void** args) 4901 4901 { 4902 4902 CallFrame* callFrame = ARG_callFrame; … … 4930 4930 } 4931 4931 4932 void Machine::cti_op_put_by_val_array( CTI_ARGS)4932 void Machine::cti_op_put_by_val_array(void** args) 4933 4933 { 4934 4934 CallFrame* callFrame = ARG_callFrame; … … 4954 4954 } 4955 4955 4956 JSValue* Machine::cti_op_lesseq( CTI_ARGS)4956 JSValue* Machine::cti_op_lesseq(void** args) 4957 4957 { 4958 4958 CallFrame* callFrame = ARG_callFrame; … … 4962 4962 } 4963 4963 4964 int Machine::cti_op_loop_if_true( CTI_ARGS)4964 int Machine::cti_op_loop_if_true(void** args) 4965 4965 { 4966 4966 JSValue* src1 = ARG_src1; … … 4973 4973 } 4974 4974 4975 JSValue* Machine::cti_op_negate( CTI_ARGS)4975 JSValue* Machine::cti_op_negate(void** args) 4976 4976 { 4977 4977 JSValue* src = ARG_src1; … … 4987 4987 } 4988 4988 4989 JSValue* Machine::cti_op_resolve_base( CTI_ARGS)4989 JSValue* Machine::cti_op_resolve_base(void** args) 4990 4990 { 4991 4991 return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()); 4992 4992 } 4993 4993 4994 JSValue* Machine::cti_op_resolve_skip( CTI_ARGS)4994 JSValue* Machine::cti_op_resolve_skip(void** args) 4995 4995 { 4996 4996 CallFrame* callFrame = ARG_callFrame; … … 5024 5024 } 5025 5025 5026 JSValue* Machine::cti_op_resolve_global( CTI_ARGS)5026 JSValue* Machine::cti_op_resolve_global(void** args) 5027 5027 { 5028 5028 CallFrame* callFrame = ARG_callFrame; … … 5052 5052 } 5053 5053 5054 JSValue* Machine::cti_op_div( CTI_ARGS)5054 JSValue* Machine::cti_op_div(void** args) 5055 5055 { 5056 5056 JSValue* src1 = ARG_src1; … … 5068 5068 } 5069 5069 5070 JSValue* Machine::cti_op_pre_dec( CTI_ARGS)5070 JSValue* Machine::cti_op_pre_dec(void** args) 5071 5071 { 5072 5072 JSValue* v = ARG_src1; … … 5078 5078 } 5079 5079 5080 int Machine::cti_op_jless( CTI_ARGS)5080 int Machine::cti_op_jless(void** args) 5081 5081 { 5082 5082 JSValue* src1 = ARG_src1; … … 5089 5089 } 5090 5090 5091 JSValue* Machine::cti_op_not( CTI_ARGS)5091 JSValue* Machine::cti_op_not(void** args) 5092 5092 { 5093 5093 JSValue* src = ARG_src1; … … 5100 5100 } 5101 5101 5102 int SFX_CALL Machine::cti_op_jtrue( CTI_ARGS)5102 int SFX_CALL Machine::cti_op_jtrue(void** args) 5103 5103 { 5104 5104 JSValue* src1 = ARG_src1; … … 5111 5111 } 5112 5112 5113 VoidPtrPair Machine::cti_op_post_inc( CTI_ARGS)5113 VoidPtrPair Machine::cti_op_post_inc(void** args) 5114 5114 { 5115 5115 JSValue* v = ARG_src1; … … 5124 5124 } 5125 5125 5126 JSValue* Machine::cti_op_eq( CTI_ARGS)5126 JSValue* Machine::cti_op_eq(void** args) 5127 5127 { 5128 5128 JSValue* src1 = ARG_src1; … … 5137 5137 } 5138 5138 5139 JSValue* Machine::cti_op_lshift( CTI_ARGS)5139 JSValue* Machine::cti_op_lshift(void** args) 5140 5140 { 5141 5141 JSValue* val = ARG_src1; … … 5155 5155 } 5156 5156 5157 JSValue* Machine::cti_op_bitand( CTI_ARGS)5157 JSValue* Machine::cti_op_bitand(void** args) 5158 5158 { 5159 5159 JSValue* src1 = ARG_src1; … … 5171 5171 } 5172 5172 5173 JSValue* Machine::cti_op_rshift( CTI_ARGS)5173 JSValue* Machine::cti_op_rshift(void** args) 5174 5174 { 5175 5175 JSValue* val = ARG_src1; … … 5189 5189 } 5190 5190 5191 JSValue* Machine::cti_op_bitnot( CTI_ARGS)5191 JSValue* Machine::cti_op_bitnot(void** args) 5192 5192 { 5193 5193 JSValue* src = ARG_src1; … … 5203 5203 } 5204 5204 5205 VoidPtrPair Machine::cti_op_resolve_with_base( CTI_ARGS)5205 VoidPtrPair Machine::cti_op_resolve_with_base(void** args) 5206 5206 { 5207 5207 CallFrame* callFrame = ARG_callFrame; … … 5237 5237 } 5238 5238 5239 JSValue* Machine::cti_op_new_func_exp( CTI_ARGS)5239 JSValue* Machine::cti_op_new_func_exp(void** args) 5240 5240 { 5241 5241 return ARG_funcexp1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain()); 5242 5242 } 5243 5243 5244 JSValue* Machine::cti_op_mod( CTI_ARGS)5244 JSValue* Machine::cti_op_mod(void** args) 5245 5245 { 5246 5246 JSValue* dividendValue = ARG_src1; … … 5254 5254 } 5255 5255 5256 JSValue* Machine::cti_op_less( CTI_ARGS)5256 JSValue* Machine::cti_op_less(void** args) 5257 5257 { 5258 5258 CallFrame* callFrame = ARG_callFrame; … … 5262 5262 } 5263 5263 5264 JSValue* Machine::cti_op_neq( CTI_ARGS)5264 JSValue* Machine::cti_op_neq(void** args) 5265 5265 { 5266 5266 JSValue* src1 = ARG_src1; … … 5275 5275 } 5276 5276 5277 VoidPtrPair Machine::cti_op_post_dec( CTI_ARGS)5277 VoidPtrPair Machine::cti_op_post_dec(void** args) 5278 5278 { 5279 5279 JSValue* v = ARG_src1; … … 5288 5288 } 5289 5289 5290 JSValue* Machine::cti_op_urshift( CTI_ARGS)5290 JSValue* Machine::cti_op_urshift(void** args) 5291 5291 { 5292 5292 JSValue* val = ARG_src1; … … 5304 5304 } 5305 5305 5306 JSValue* Machine::cti_op_bitxor( CTI_ARGS)5306 JSValue* Machine::cti_op_bitxor(void** args) 5307 5307 { 5308 5308 JSValue* src1 = ARG_src1; … … 5316 5316 } 5317 5317 5318 JSValue* Machine::cti_op_new_regexp( CTI_ARGS)5318 JSValue* Machine::cti_op_new_regexp(void** args) 5319 5319 { 5320 5320 return new (ARG_globalData) RegExpObject(ARG_callFrame->lexicalGlobalObject()->regExpStructure(), ARG_regexp1); 5321 5321 } 5322 5322 5323 JSValue* Machine::cti_op_bitor( CTI_ARGS)5323 JSValue* Machine::cti_op_bitor(void** args) 5324 5324 { 5325 5325 JSValue* src1 = ARG_src1; … … 5333 5333 } 5334 5334 5335 JSValue* Machine::cti_op_call_eval( CTI_ARGS)5335 JSValue* Machine::cti_op_call_eval(void** args) 5336 5336 { 5337 5337 CallFrame* callFrame = ARG_callFrame; … … 5358 5358 } 5359 5359 5360 void* Machine::cti_op_throw( CTI_ARGS)5360 void* Machine::cti_op_throw(void** args) 5361 5361 { 5362 5362 CallFrame* callFrame = ARG_callFrame; … … 5383 5383 } 5384 5384 5385 JSPropertyNameIterator* Machine::cti_op_get_pnames( CTI_ARGS)5385 JSPropertyNameIterator* Machine::cti_op_get_pnames(void** args) 5386 5386 { 5387 5387 return JSPropertyNameIterator::create(ARG_callFrame, ARG_src1); 5388 5388 } 5389 5389 5390 JSValue* Machine::cti_op_next_pname( CTI_ARGS)5390 JSValue* Machine::cti_op_next_pname(void** args) 5391 5391 { 5392 5392 JSPropertyNameIterator* it = ARG_pni1; … … 5397 5397 } 5398 5398 5399 void Machine::cti_op_push_scope( CTI_ARGS)5399 void Machine::cti_op_push_scope(void** args) 5400 5400 { 5401 5401 JSObject* o = ARG_src1->toObject(ARG_callFrame); … … 5404 5404 } 5405 5405 5406 void Machine::cti_op_pop_scope( CTI_ARGS)5406 void Machine::cti_op_pop_scope(void** args) 5407 5407 { 5408 5408 ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->pop()); 5409 5409 } 5410 5410 5411 JSValue* Machine::cti_op_typeof( CTI_ARGS)5411 JSValue* Machine::cti_op_typeof(void** args) 5412 5412 { 5413 5413 return jsTypeStringForValue(ARG_callFrame, ARG_src1); 5414 5414 } 5415 5415 5416 JSValue* Machine::cti_op_is_undefined( CTI_ARGS)5416 JSValue* Machine::cti_op_is_undefined(void** args) 5417 5417 { 5418 5418 JSValue* v = ARG_src1; … … 5420 5420 } 5421 5421 5422 JSValue* Machine::cti_op_is_boolean( CTI_ARGS)5422 JSValue* Machine::cti_op_is_boolean(void** args) 5423 5423 { 5424 5424 return jsBoolean(ARG_src1->isBoolean()); 5425 5425 } 5426 5426 5427 JSValue* Machine::cti_op_is_number( CTI_ARGS)5427 JSValue* Machine::cti_op_is_number(void** args) 5428 5428 { 5429 5429 return jsBoolean(ARG_src1->isNumber()); 5430 5430 } 5431 5431 5432 JSValue* Machine::cti_op_is_string( CTI_ARGS)5432 JSValue* Machine::cti_op_is_string(void** args) 5433 5433 { 5434 5434 return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)); 5435 5435 } 5436 5436 5437 JSValue* Machine::cti_op_is_object( CTI_ARGS)5437 JSValue* Machine::cti_op_is_object(void** args) 5438 5438 { 5439 5439 return jsBoolean(jsIsObjectType(ARG_src1)); 5440 5440 } 5441 5441 5442 JSValue* Machine::cti_op_is_function( CTI_ARGS)5442 JSValue* Machine::cti_op_is_function(void** args) 5443 5443 { 5444 5444 return jsBoolean(jsIsFunctionType(ARG_src1)); 5445 5445 } 5446 5446 5447 JSValue* Machine::cti_op_stricteq( CTI_ARGS)5447 JSValue* Machine::cti_op_stricteq(void** args) 5448 5448 { 5449 5449 JSValue* src1 = ARG_src1; … … 5457 5457 } 5458 5458 5459 JSValue* Machine::cti_op_nstricteq( CTI_ARGS)5459 JSValue* Machine::cti_op_nstricteq(void** args) 5460 5460 { 5461 5461 JSValue* src1 = ARG_src1; … … 5469 5469 } 5470 5470 5471 JSValue* Machine::cti_op_to_jsnumber( CTI_ARGS)5471 JSValue* Machine::cti_op_to_jsnumber(void** args) 5472 5472 { 5473 5473 JSValue* src = ARG_src1; … … 5479 5479 } 5480 5480 5481 JSValue* Machine::cti_op_in( CTI_ARGS)5481 JSValue* Machine::cti_op_in(void** args) 5482 5482 { 5483 5483 CallFrame* callFrame = ARG_callFrame; … … 5505 5505 } 5506 5506 5507 JSValue* Machine::cti_op_push_new_scope( CTI_ARGS)5507 JSValue* Machine::cti_op_push_new_scope(void** args) 5508 5508 { 5509 5509 JSObject* scope = new (ARG_globalData) JSStaticScopeObject(ARG_callFrame, *ARG_id1, ARG_src2, DontDelete); … … 5514 5514 } 5515 5515 5516 void Machine::cti_op_jmp_scopes( CTI_ARGS)5516 void Machine::cti_op_jmp_scopes(void** args) 5517 5517 { 5518 5518 unsigned count = ARG_int1; … … 5525 5525 } 5526 5526 5527 void Machine::cti_op_put_by_index( CTI_ARGS)5527 void Machine::cti_op_put_by_index(void** args) 5528 5528 { 5529 5529 CallFrame* callFrame = ARG_callFrame; … … 5533 5533 } 5534 5534 5535 void* Machine::cti_op_switch_imm( CTI_ARGS)5535 void* Machine::cti_op_switch_imm(void** args) 5536 5536 { 5537 5537 JSValue* scrutinee = ARG_src1; … … 5548 5548 } 5549 5549 5550 void* Machine::cti_op_switch_char( CTI_ARGS)5550 void* Machine::cti_op_switch_char(void** args) 5551 5551 { 5552 5552 JSValue* scrutinee = ARG_src1; … … 5566 5566 } 5567 5567 5568 void* Machine::cti_op_switch_string( CTI_ARGS)5568 void* Machine::cti_op_switch_string(void** args) 5569 5569 { 5570 5570 JSValue* scrutinee = ARG_src1; … … 5583 5583 } 5584 5584 5585 JSValue* Machine::cti_op_del_by_val( CTI_ARGS)5585 JSValue* Machine::cti_op_del_by_val(void** args) 5586 5586 { 5587 5587 CallFrame* callFrame = ARG_callFrame; … … 5606 5606 } 5607 5607 5608 void Machine::cti_op_put_getter( CTI_ARGS)5608 void Machine::cti_op_put_getter(void** args) 5609 5609 { 5610 5610 CallFrame* callFrame = ARG_callFrame; … … 5617 5617 } 5618 5618 5619 void Machine::cti_op_put_setter( CTI_ARGS)5619 void Machine::cti_op_put_setter(void** args) 5620 5620 { 5621 5621 CallFrame* callFrame = ARG_callFrame; … … 5628 5628 } 5629 5629 5630 JSValue* Machine::cti_op_new_error( CTI_ARGS)5630 JSValue* Machine::cti_op_new_error(void** args) 5631 5631 { 5632 5632 CallFrame* callFrame = ARG_callFrame; … … 5639 5639 } 5640 5640 5641 void Machine::cti_op_debug( CTI_ARGS)5641 void Machine::cti_op_debug(void** args) 5642 5642 { 5643 5643 CallFrame* callFrame = ARG_callFrame; … … 5650 5650 } 5651 5651 5652 void* Machine::cti_vm_throw( CTI_ARGS)5652 void* Machine::cti_vm_throw(void** args) 5653 5653 { 5654 5654 CallFrame* callFrame = ARG_callFrame; -
trunk/JavaScriptCore/VM/Machine.h
r37570 r37581 54 54 #if ENABLE(CTI) 55 55 56 #if USE(CTI_ARGUMENT)57 #define CTI_ARGS void** args58 #define ARGS (args)59 #else60 #define CTI_ARGS void* args61 #define ARGS (&args)62 #endif63 64 #if USE(FAST_CALL_CTI_ARGUMENT)65 66 56 #if COMPILER(MSVC) 67 57 #define SFX_CALL __fastcall … … 70 60 #else 71 61 #error Need to support fastcall calling convention in this compiler 72 #endif73 74 #else75 76 #if COMPILER(MSVC)77 #define SFX_CALL __cdecl78 #else79 #define SFX_CALL80 #endif81 82 62 #endif 83 63 … … 162 142 #if ENABLE(CTI) 163 143 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);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); 261 241 262 242 #endif // ENABLE(CTI) -
trunk/JavaScriptCore/masm/X86Assembler.h
r37570 r37581 1082 1082 #endif 1083 1083 1084 #if USE(CTI_ARGUMENT)1085 1084 void emitRestoreArgumentReference() 1086 1085 { 1087 #if USE(FAST_CALL_CTI_ARGUMENT)1088 1086 movl_rr(X86::esp, X86::ecx); 1089 #else1090 movl_rm(X86::esp, 0, X86::esp);1091 #endif1092 1087 } 1093 1088 1094 1089 void emitRestoreArgumentReferenceForTrampoline() 1095 1090 { 1096 #if USE(FAST_CALL_CTI_ARGUMENT)1097 1091 movl_rr(X86::esp, X86::ecx); 1098 1092 addl_i32r(4, X86::ecx); 1099 #endif 1100 } 1101 #else 1102 void emitRestoreArgumentReference() {} 1103 void emitRestoreArgumentReferenceForTrampoline() {} 1104 #endif 1093 } 1105 1094 1106 1095 private: -
trunk/JavaScriptCore/wtf/Platform.h
r37500 r37581 365 365 #endif 366 366 367 // Use "fastcall" calling convention on MSVC and GCC > 4.0368 #if COMPILER(MSVC) || (COMPILER(GCC) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 0)))369 #define WTF_USE_FAST_CALL_CTI_ARGUMENT 1370 #endif371 372 #if COMPILER(MSVC) || USE(FAST_CALL_CTI_ARGUMENT)373 #define WTF_USE_CTI_ARGUMENT 1374 #endif375 376 367 #endif /* WTF_Platform_h */
Note:
See TracChangeset
for help on using the changeset viewer.