Changeset 39268 in webkit for trunk/JavaScriptCore/jit


Ignore:
Timestamp:
Dec 12, 2008, 9:25:22 PM (16 years ago)
Author:
[email protected]
Message:

2008-12-12 Gavin Barraclough <[email protected]>

Reviewed by Camron Zwarich.

Replace emitPutCallArg methods with emitPutJITStubArg methods. Primarily to make the argument numbering
more sensible (1-based incrementing by 1, rather than 0-based incrementing by 4). The CTI name also seems
to be being deprecated from the code generally.

  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass): (JSC::JIT::privateCompileSlowCases): (JSC::JIT::privateCompileCTIMachineTrampolines):
  • jit/JIT.h:
  • jit/JITArithmetic.cpp: (JSC::JIT::compileBinaryArithOp): (JSC::JIT::compileBinaryArithOpSlowCase):
  • jit/JITCall.cpp: (JSC::JIT::compileOpCallSetupArgs): (JSC::JIT::compileOpCallEvalSetupArgs): (JSC::JIT::compileOpConstructSetupArgs): (JSC::JIT::compileOpCall):
  • jit/JITInlineMethods.h: (JSC::JIT::emitPutJITStubArg): (JSC::JIT::emitPutJITStubArgConstant): (JSC::JIT::emitGetJITStubArg): (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::compileGetByIdHotPath): (JSC::JIT::compilePutByIdHotPath): (JSC::JIT::compileGetByIdSlowCase): (JSC::JIT::compilePutByIdSlowCase):
Location:
trunk/JavaScriptCore/jit
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JIT.cpp

    r39267 r39268  
    205205#define CTI_COMPILE_BINARY_OP(name) \
    206206    case name: { \
    207         emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx); \
    208         emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 4, X86::ecx); \
     207        emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx); \
     208        emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx); \
    209209        emitCTICall(Interpreter::cti_##name); \
    210210        emitPutVirtualRegister(currentInstruction[1].u.operand); \
     
    214214#define CTI_COMPILE_UNARY_OP(name) \
    215215    case name: { \
    216         emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx); \
     216        emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx); \
    217217        emitCTICall(Interpreter::cti_##name); \
    218218        emitPutVirtualRegister(currentInstruction[1].u.operand); \
     
    266266                    compileBinaryArithOp(op_add, currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, OperandTypes::fromInt(currentInstruction[4].u.operand));
    267267                else {
    268                     emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
    269                     emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 4, X86::ecx);
     268                    emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
     269                    emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
    270270                    emitCTICall(Interpreter::cti_op_add);
    271271                    emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    401401        }
    402402        case op_del_by_id: {
    403             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
     403            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
    404404            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    405             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
     405            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
    406406            emitCTICall(Interpreter::cti_op_del_by_id);
    407407            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    438438        case op_new_func: {
    439439            FuncDeclNode* func = m_codeBlock->function(currentInstruction[2].u.operand);
    440             emitPutCTIArgConstant(reinterpret_cast<unsigned>(func), 0);
     440            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(func), 1);
    441441            emitCTICall(Interpreter::cti_op_new_func);
    442442            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    494494        }
    495495        case op_tear_off_activation: {
    496             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
     496            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
    497497            emitCTICall(Interpreter::cti_op_tear_off_activation);
    498498            NEXT_OPCODE(op_tear_off_activation);
     
    523523        }
    524524        case op_new_array: {
    525             emitPutCTIArgConstant(currentInstruction[2].u.operand, 0);
    526             emitPutCTIArgConstant(currentInstruction[3].u.operand, 4);
     525            emitPutJITStubArgConstant(currentInstruction[2].u.operand, 1);
     526            emitPutJITStubArgConstant(currentInstruction[3].u.operand, 2);
    527527            emitCTICall(Interpreter::cti_op_new_array);
    528528            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    531531        case op_resolve: {
    532532            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    533             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
     533            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
    534534            emitCTICall(Interpreter::cti_op_resolve);
    535535            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    563563        case op_resolve_func: {
    564564            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    565             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
     565            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
    566566            emitCTICall(Interpreter::cti_op_resolve_func);
    567567            emitPutVirtualRegister(currentInstruction[2].u.operand, X86::edx);
     
    614614        case op_resolve_base: {
    615615            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    616             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
     616            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
    617617            emitCTICall(Interpreter::cti_op_resolve_base);
    618618            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    620620        }
    621621        case op_negate: {
    622             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
     622            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
    623623            emitCTICall(Interpreter::cti_op_negate);
    624624            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    627627        case op_resolve_skip: {
    628628            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    629             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
    630             emitPutCTIArgConstant(currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain(), 4);
     629            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
     630            emitPutJITStubArgConstant(currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain(), 2);
    631631            emitCTICall(Interpreter::cti_op_resolve_skip);
    632632            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    656656            // Slow case
    657657            noMatch.link(this);
    658             emitPutCTIArgConstant(globalObject, 0);
    659             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
    660             emitPutCTIArgConstant(currentIndex, 8);
     658            emitPutJITStubArgConstant(globalObject, 1);
     659            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
     660            emitPutJITStubArgConstant(currentIndex, 3);
    661661            emitCTICall(Interpreter::cti_op_resolve_global);
    662662            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    848848        case op_resolve_with_base: {
    849849            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    850             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
     850            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
    851851            emitCTICall(Interpreter::cti_op_resolve_with_base);
    852852            emitPutVirtualRegister(currentInstruction[2].u.operand, X86::edx);
     
    856856        case op_new_func_exp: {
    857857            FuncExprNode* func = m_codeBlock->functionExpression(currentInstruction[2].u.operand);
    858             emitPutCTIArgConstant(reinterpret_cast<unsigned>(func), 0);
     858            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(func), 1);
    859859            emitCTICall(Interpreter::cti_op_new_func_exp);
    860860            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    919919        case op_new_regexp: {
    920920            RegExp* regExp = m_codeBlock->regexp(currentInstruction[2].u.operand);
    921             emitPutCTIArgConstant(reinterpret_cast<unsigned>(regExp), 0);
     921            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(regExp), 1);
    922922            emitCTICall(Interpreter::cti_op_new_regexp);
    923923            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    932932        }
    933933        case op_throw: {
    934             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
     934            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
    935935            emitCTICall(Interpreter::cti_op_throw);
    936936            __ addl_i8r(0x20, X86::esp);
     
    942942        }
    943943        case op_get_pnames: {
    944             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
     944            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
    945945            emitCTICall(Interpreter::cti_op_get_pnames);
    946946            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    948948        }
    949949        case op_next_pname: {
    950             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
     950            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
    951951            unsigned target = currentInstruction[3].u.operand;
    952952            emitCTICall(Interpreter::cti_op_next_pname);
     
    958958        }
    959959        case op_push_scope: {
    960             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
     960            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
    961961            emitCTICall(Interpreter::cti_op_push_scope);
    962962            NEXT_OPCODE(op_push_scope);
     
    999999        case op_push_new_scope: {
    10001000            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    1001             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0);
    1002             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 4, X86::ecx);
     1001            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 1);
     1002            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
    10031003            emitCTICall(Interpreter::cti_op_push_new_scope);
    10041004            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    10121012        case op_jmp_scopes: {
    10131013            unsigned count = currentInstruction[1].u.operand;
    1014             emitPutCTIArgConstant(count, 0);
     1014            emitPutJITStubArgConstant(count, 1);
    10151015            emitCTICall(Interpreter::cti_op_jmp_scopes);
    10161016            unsigned target = currentInstruction[2].u.operand;
     
    10191019        }
    10201020        case op_put_by_index: {
    1021             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
    1022             emitPutCTIArgConstant(currentInstruction[2].u.operand, 4);
    1023             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 8, X86::ecx);
     1021            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
     1022            emitPutJITStubArgConstant(currentInstruction[2].u.operand, 2);
     1023            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
    10241024            emitCTICall(Interpreter::cti_op_put_by_index);
    10251025            NEXT_OPCODE(op_put_by_index);
     
    10351035            jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
    10361036
    1037             emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx);
    1038             emitPutCTIArgConstant(tableIndex, 4);
     1037            emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
     1038            emitPutJITStubArgConstant(tableIndex, 2);
    10391039            emitCTICall(Interpreter::cti_op_switch_imm);
    10401040            jump(X86::eax);
     
    10511051            jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
    10521052
    1053             emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx);
    1054             emitPutCTIArgConstant(tableIndex, 4);
     1053            emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
     1054            emitPutJITStubArgConstant(tableIndex, 2);
    10551055            emitCTICall(Interpreter::cti_op_switch_char);
    10561056            jump(X86::eax);
     
    10661066            m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset));
    10671067
    1068             emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx);
    1069             emitPutCTIArgConstant(tableIndex, 4);
     1068            emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
     1069            emitPutJITStubArgConstant(tableIndex, 2);
    10701070            emitCTICall(Interpreter::cti_op_switch_string);
    10711071            jump(X86::eax);
     
    10731073        }
    10741074        case op_del_by_val: {
    1075             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
    1076             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 4, X86::ecx);
     1075            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
     1076            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
    10771077            emitCTICall(Interpreter::cti_op_del_by_val);
    10781078            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    10801080        }
    10811081        case op_put_getter: {
    1082             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
     1082            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
    10831083            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    1084             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
    1085             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 8, X86::ecx);
     1084            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
     1085            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
    10861086            emitCTICall(Interpreter::cti_op_put_getter);
    10871087            NEXT_OPCODE(op_put_getter);
    10881088        }
    10891089        case op_put_setter: {
    1090             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::ecx);
     1090            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
    10911091            Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
    1092             emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
    1093             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 8, X86::ecx);
     1092            emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
     1093            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
    10941094            emitCTICall(Interpreter::cti_op_put_setter);
    10951095            NEXT_OPCODE(op_put_setter);
     
    10971097        case op_new_error: {
    10981098            JSValue* message = m_codeBlock->unexpectedConstant(currentInstruction[3].u.operand);
    1099             emitPutCTIArgConstant(currentInstruction[2].u.operand, 0);
    1100             emitPutCTIArgConstant(asInteger(message), 4);
    1101             emitPutCTIArgConstant(m_codeBlock->lineNumberForBytecodeOffset(m_bytecodeIndex), 8);
     1099            emitPutJITStubArgConstant(currentInstruction[2].u.operand, 1);
     1100            emitPutJITStubArgConstant(asInteger(message), 2);
     1101            emitPutJITStubArgConstant(m_codeBlock->lineNumberForBytecodeOffset(m_bytecodeIndex), 3);
    11021102            emitCTICall(Interpreter::cti_op_new_error);
    11031103            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    11051105        }
    11061106        case op_debug: {
    1107             emitPutCTIArgConstant(currentInstruction[1].u.operand, 0);
    1108             emitPutCTIArgConstant(currentInstruction[2].u.operand, 4);
    1109             emitPutCTIArgConstant(currentInstruction[3].u.operand, 8);
     1107            emitPutJITStubArgConstant(currentInstruction[1].u.operand, 1);
     1108            emitPutJITStubArgConstant(currentInstruction[2].u.operand, 2);
     1109            emitPutJITStubArgConstant(currentInstruction[3].u.operand, 3);
    11101110            emitCTICall(Interpreter::cti_op_debug);
    11111111            NEXT_OPCODE(op_debug);
     
    12021202            __ cmpl_i32m(0, X86::eax);
    12031203            JmpSrc noProfiler = __ je();
    1204             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::eax);
     1204            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::eax);
    12051205            emitCTICall(Interpreter::cti_op_profile_will_call);
    12061206            __ link(noProfiler, __ label());
     
    12121212            __ cmpl_i32m(0, X86::eax);
    12131213            JmpSrc noProfiler = __ je();
    1214             emitPutCTIArgFromVirtualRegister(currentInstruction[1].u.operand, 0, X86::eax);
     1214            emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::eax);
    12151215            emitCTICall(Interpreter::cti_op_profile_did_call);
    12161216            __ link(noProfiler, __ label());
     
    12711271            linkSlowCase(iter);
    12721272            linkSlowCase(iter);
    1273             emitPutCTIArg(X86::eax, 0);
     1273            emitPutJITStubArg(X86::eax, 1);
    12741274            emitCTICall(Interpreter::cti_op_convert_this);
    12751275            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    12851285                sub32(Imm32(getDeTaggedConstantImmediate(value)), X86::eax);
    12861286                notImm.link(this);
    1287                 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    1288                 emitPutCTIArg(X86::eax, 4);
     1287                emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     1288                emitPutJITStubArg(X86::eax, 2);
    12891289                emitCTICall(Interpreter::cti_op_add);
    12901290                emitPutVirtualRegister(dst);
     
    12941294                sub32(Imm32(getDeTaggedConstantImmediate(value)), X86::eax);
    12951295                notImm.link(this);
    1296                 emitPutCTIArg(X86::eax, 0);
    1297                 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     1296                emitPutJITStubArg(X86::eax, 1);
     1297                emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    12981298                emitCTICall(Interpreter::cti_op_add);
    12991299                emitPutVirtualRegister(dst);
     
    13231323            emitFastArithIntToImmNoCheck(X86::edx);
    13241324            notImm.link(this);
    1325             emitPutCTIArg(X86::eax, 0);
    1326             emitPutCTIArg(X86::edx, 4);
     1325            emitPutJITStubArg(X86::eax, 1);
     1326            emitPutJITStubArg(X86::edx, 2);
    13271327            emitCTICall(Interpreter::cti_op_get_by_val);
    13281328            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    13511351            linkSlowCase(iter);
    13521352            if (getConstantImmediateNumericArg(src2))
    1353                 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     1353                emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    13541354            else {
    13551355                linkSlowCase(iter);
    1356                 emitPutCTIArg(X86::ecx, 4);
     1356                emitPutJITStubArg(X86::ecx, 2);
    13571357            }
    13581358
    1359             emitPutCTIArg(X86::eax, 0);
     1359            emitPutJITStubArg(X86::eax, 1);
    13601360            emitCTICall(Interpreter::cti_op_rshift);
    13611361            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    13691369            notImm1.link(this);
    13701370            notImm2.link(this);
    1371             emitPutCTIArg(X86::eax, 0);
    1372             emitPutCTIArg(X86::ecx, 4);
     1371            emitPutJITStubArg(X86::eax, 1);
     1372            emitPutJITStubArg(X86::ecx, 2);
    13731373            emitCTICall(Interpreter::cti_op_lshift);
    13741374            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    13801380            if (src2imm) {
    13811381                linkSlowCase(iter);
    1382                 emitPutCTIArg(X86::eax, 0);
    1383                 emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 4, X86::ecx);
     1382                emitPutJITStubArg(X86::eax, 1);
     1383                emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 2, X86::ecx);
    13841384                emitCTICall(Interpreter::cti_op_loop_if_less);
    13851385                emitJumpSlowToHot(jnz32(X86::eax), target + 3);
     
    13871387                linkSlowCase(iter);
    13881388                linkSlowCase(iter);
    1389                 emitPutCTIArg(X86::eax, 0);
    1390                 emitPutCTIArg(X86::edx, 4);
     1389                emitPutJITStubArg(X86::eax, 1);
     1390                emitPutJITStubArg(X86::edx, 2);
    13911391                emitCTICall(Interpreter::cti_op_loop_if_less);
    13921392                emitJumpSlowToHot(jnz32(X86::eax), target + 3);
     
    14071407            if (src2imm) {
    14081408                linkSlowCase(iter);
    1409                 emitPutCTIArg(X86::eax, 0);
    1410                 emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 4, X86::ecx);
     1409                emitPutJITStubArg(X86::eax, 1);
     1410                emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 2, X86::ecx);
    14111411                emitCTICall(Interpreter::cti_op_loop_if_lesseq);
    14121412                emitJumpSlowToHot(jnz32(X86::eax), target + 3);
     
    14141414                linkSlowCase(iter);
    14151415                linkSlowCase(iter);
    1416                 emitPutCTIArg(X86::eax, 0);
    1417                 emitPutCTIArg(X86::edx, 4);
     1416                emitPutJITStubArg(X86::eax, 1);
     1417                emitPutJITStubArg(X86::edx, 2);
    14181418                emitCTICall(Interpreter::cti_op_loop_if_lesseq);
    14191419                emitJumpSlowToHot(jnz32(X86::eax), target + 3);
     
    14271427            sub32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::eax);
    14281428            notImm.link(this);
    1429             emitPutCTIArg(X86::eax, 0);
     1429            emitPutJITStubArg(X86::eax, 1);
    14301430            emitCTICall(Interpreter::cti_op_pre_inc);
    14311431            emitPutVirtualRegister(srcDst);
     
    14401440            notImm.link(this);
    14411441            emitGetVirtualRegister(currentInstruction[3].u.operand, X86::ecx);
    1442             emitPutCTIArg(X86::eax, 0);
    1443             emitPutCTIArg(X86::edx, 4);
    1444             emitPutCTIArg(X86::ecx, 8);
     1442            emitPutJITStubArg(X86::eax, 1);
     1443            emitPutJITStubArg(X86::edx, 2);
     1444            emitPutJITStubArg(X86::ecx, 3);
    14451445            emitCTICall(Interpreter::cti_op_put_by_val);
    14461446            emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_put_by_val));
     
    14501450            linkSlowCase(iter);
    14511451            emitGetVirtualRegister(currentInstruction[3].u.operand, X86::ecx);
    1452             emitPutCTIArg(X86::eax, 0);
    1453             emitPutCTIArg(X86::edx, 4);
    1454             emitPutCTIArg(X86::ecx, 8);
     1452            emitPutJITStubArg(X86::eax, 1);
     1453            emitPutJITStubArg(X86::edx, 2);
     1454            emitPutJITStubArg(X86::ecx, 3);
    14551455            emitCTICall(Interpreter::cti_op_put_by_val_array);
    14561456
     
    14591459        case op_loop_if_true: {
    14601460            linkSlowCase(iter);
    1461             emitPutCTIArg(X86::eax, 0);
     1461            emitPutJITStubArg(X86::eax, 1);
    14621462            emitCTICall(Interpreter::cti_op_jtrue);
    14631463            unsigned target = currentInstruction[2].u.operand;
     
    14711471            add32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::eax);
    14721472            notImm.link(this);
    1473             emitPutCTIArg(X86::eax, 0);
     1473            emitPutJITStubArg(X86::eax, 1);
    14741474            emitCTICall(Interpreter::cti_op_pre_dec);
    14751475            emitPutVirtualRegister(srcDst);
     
    14811481            if (src2imm) {
    14821482                linkSlowCase(iter);
    1483                 emitPutCTIArg(X86::edx, 0);
    1484                 emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 4, X86::ecx);
     1483                emitPutJITStubArg(X86::edx, 1);
     1484                emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 2, X86::ecx);
    14851485                emitCTICall(Interpreter::cti_op_jless);
    14861486                emitJumpSlowToHot(jz32(X86::eax), target + 3);
     
    14881488                linkSlowCase(iter);
    14891489                linkSlowCase(iter);
    1490                 emitPutCTIArg(X86::eax, 0);
    1491                 emitPutCTIArg(X86::edx, 4);
     1490                emitPutJITStubArg(X86::eax, 1);
     1491                emitPutJITStubArg(X86::edx, 2);
    14921492                emitCTICall(Interpreter::cti_op_jless);
    14931493                emitJumpSlowToHot(jz32(X86::eax), target + 3);
     
    14981498            linkSlowCase(iter);
    14991499            xor32(Imm32(JSImmediate::FullTagTypeBool), X86::eax);
    1500             emitPutCTIArg(X86::eax, 0);
     1500            emitPutJITStubArg(X86::eax, 1);
    15011501            emitCTICall(Interpreter::cti_op_not);
    15021502            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    15051505        case op_jfalse: {
    15061506            linkSlowCase(iter);
    1507             emitPutCTIArg(X86::eax, 0);
     1507            emitPutJITStubArg(X86::eax, 1);
    15081508            emitCTICall(Interpreter::cti_op_jtrue);
    15091509            unsigned target = currentInstruction[2].u.operand;
     
    15151515            linkSlowCase(iter);
    15161516            linkSlowCase(iter);
    1517             emitPutCTIArg(X86::eax, 0);
     1517            emitPutJITStubArg(X86::eax, 1);
    15181518            emitCTICall(Interpreter::cti_op_post_inc);
    15191519            emitPutVirtualRegister(srcDst, X86::edx);
     
    15231523        case op_bitnot: {
    15241524            linkSlowCase(iter);
    1525             emitPutCTIArg(X86::eax, 0);
     1525            emitPutJITStubArg(X86::eax, 1);
    15261526            emitCTICall(Interpreter::cti_op_bitnot);
    15271527            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    15341534            unsigned dst = currentInstruction[1].u.operand;
    15351535            if (getConstantImmediateNumericArg(src1)) {
    1536                 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    1537                 emitPutCTIArg(X86::eax, 4);
     1536                emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     1537                emitPutJITStubArg(X86::eax, 2);
    15381538                emitCTICall(Interpreter::cti_op_bitand);
    15391539                emitPutVirtualRegister(dst);
    15401540            } else if (getConstantImmediateNumericArg(src2)) {
    1541                 emitPutCTIArg(X86::eax, 0);
    1542                 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     1541                emitPutJITStubArg(X86::eax, 1);
     1542                emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    15431543                emitCTICall(Interpreter::cti_op_bitand);
    15441544                emitPutVirtualRegister(dst);
    15451545            } else {
    1546                 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    1547                 emitPutCTIArg(X86::edx, 4);
     1546                emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     1547                emitPutJITStubArg(X86::edx, 2);
    15481548                emitCTICall(Interpreter::cti_op_bitand);
    15491549                emitPutVirtualRegister(dst);
     
    15531553        case op_jtrue: {
    15541554            linkSlowCase(iter);
    1555             emitPutCTIArg(X86::eax, 0);
     1555            emitPutJITStubArg(X86::eax, 1);
    15561556            emitCTICall(Interpreter::cti_op_jtrue);
    15571557            unsigned target = currentInstruction[2].u.operand;
     
    15631563            linkSlowCase(iter);
    15641564            linkSlowCase(iter);
    1565             emitPutCTIArg(X86::eax, 0);
     1565            emitPutJITStubArg(X86::eax, 1);
    15661566            emitCTICall(Interpreter::cti_op_post_dec);
    15671567            emitPutVirtualRegister(srcDst, X86::edx);
     
    15711571        case op_bitxor: {
    15721572            linkSlowCase(iter);
    1573             emitPutCTIArg(X86::eax, 0);
    1574             emitPutCTIArg(X86::edx, 4);
     1573            emitPutJITStubArg(X86::eax, 1);
     1574            emitPutJITStubArg(X86::edx, 2);
    15751575            emitCTICall(Interpreter::cti_op_bitxor);
    15761576            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    15791579        case op_bitor: {
    15801580            linkSlowCase(iter);
    1581             emitPutCTIArg(X86::eax, 0);
    1582             emitPutCTIArg(X86::edx, 4);
     1581            emitPutJITStubArg(X86::eax, 1);
     1582            emitPutJITStubArg(X86::edx, 2);
    15831583            emitCTICall(Interpreter::cti_op_bitor);
    15841584            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    15871587        case op_eq: {
    15881588            linkSlowCase(iter);
    1589             emitPutCTIArg(X86::eax, 0);
    1590             emitPutCTIArg(X86::edx, 4);
     1589            emitPutJITStubArg(X86::eax, 1);
     1590            emitPutJITStubArg(X86::edx, 2);
    15911591            emitCTICall(Interpreter::cti_op_eq);
    15921592            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    15951595        case op_neq: {
    15961596            linkSlowCase(iter);
    1597             emitPutCTIArg(X86::eax, 0);
    1598             emitPutCTIArg(X86::edx, 4);
     1597            emitPutJITStubArg(X86::eax, 1);
     1598            emitPutJITStubArg(X86::edx, 2);
    15991599            emitCTICall(Interpreter::cti_op_neq);
    16001600            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    16051605            linkSlowCase(iter);
    16061606            linkSlowCase(iter);
    1607             emitPutCTIArg(X86::eax, 0);
    1608             emitPutCTIArg(X86::edx, 4);
     1607            emitPutJITStubArg(X86::eax, 1);
     1608            emitPutJITStubArg(X86::edx, 2);
    16091609            emitCTICall(Interpreter::cti_op_stricteq);
    16101610            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    16151615            linkSlowCase(iter);
    16161616            linkSlowCase(iter);
    1617             emitPutCTIArg(X86::eax, 0);
    1618             emitPutCTIArg(X86::edx, 4);
     1617            emitPutJITStubArg(X86::eax, 1);
     1618            emitPutJITStubArg(X86::edx, 2);
    16191619            emitCTICall(Interpreter::cti_op_nstricteq);
    16201620            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    16251625            linkSlowCase(iter);
    16261626            linkSlowCase(iter);
    1627             emitPutCTIArgFromVirtualRegister(currentInstruction[2].u.operand, 0, X86::ecx);
    1628             emitPutCTIArgFromVirtualRegister(currentInstruction[3].u.operand, 4, X86::ecx);
    1629             emitPutCTIArgFromVirtualRegister(currentInstruction[4].u.operand, 8, X86::ecx);
     1627            emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
     1628            emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
     1629            emitPutJITStubArgFromVirtualRegister(currentInstruction[4].u.operand, 3, X86::ecx);
    16301630            emitCTICall(Interpreter::cti_op_instanceof);
    16311631            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    16401640            notImm1.link(this);
    16411641            notImm2.link(this);
    1642             emitPutCTIArg(X86::eax, 0);
    1643             emitPutCTIArg(X86::ecx, 4);
     1642            emitPutJITStubArg(X86::eax, 1);
     1643            emitPutJITStubArg(X86::ecx, 2);
    16441644            emitCTICall(Interpreter::cti_op_mod);
    16451645            emitPutVirtualRegister(currentInstruction[1].u.operand);
     
    16571657                linkSlowCase(iter);
    16581658                // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
    1659                 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    1660                 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     1659                emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     1660                emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    16611661                emitCTICall(Interpreter::cti_op_mul);
    16621662                emitPutVirtualRegister(dst);
     
    16651665                linkSlowCase(iter);
    16661666                // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
    1667                 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    1668                 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     1667                emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     1668                emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    16691669                emitCTICall(Interpreter::cti_op_mul);
    16701670                emitPutVirtualRegister(dst);
     
    16901690            linkSlowCase(iter);
    16911691
    1692             emitPutCTIArg(X86::eax, 0);
     1692            emitPutJITStubArg(X86::eax, 1);
    16931693            emitCTICall(Interpreter::cti_op_to_jsnumber);
    16941694
     
    18781878    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    18791879    JmpSrc callJSFunction1 = __ call();
    1880     emitGetCTIArg(0, X86::ecx);
    1881     emitGetCTIArg(8, X86::edx);
     1880    emitGetJITStubArg(1, X86::ecx);
     1881    emitGetJITStubArg(3, X86::edx);
    18821882    __ pushl_r(X86::ebx);
    18831883    __ link(hasCodeBlock1, __ label());
     
    18871887    JmpSrc arityCheckOkay1 = __ je();
    18881888    __ popl_r(X86::ebx);
    1889     emitPutCTIArg(X86::ebx, 4);
    1890     emitPutCTIArg(X86::eax, 12);
     1889    emitPutJITStubArg(X86::ebx, 2);
     1890    emitPutJITStubArg(X86::eax, 4);
    18911891    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    18921892    JmpSrc callArityCheck1 = __ call();
    18931893    __ movl_rr(X86::edx, X86::edi);
    1894     emitGetCTIArg(0, X86::ecx);
    1895     emitGetCTIArg(8, X86::edx);
     1894    emitGetJITStubArg(1, X86::ecx);
     1895    emitGetJITStubArg(3, X86::edx);
    18961896    __ pushl_r(X86::ebx);
    18971897    __ link(arityCheckOkay1, __ label());
     
    19001900
    19011901    __ popl_r(X86::ebx);
    1902     emitPutCTIArg(X86::ebx, 4);
     1902    emitPutJITStubArg(X86::ebx, 2);
    19031903    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19041904    JmpSrc callDontLazyLinkCall = __ call();
     
    19171917    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19181918    JmpSrc callJSFunction2 = __ call();
    1919     emitGetCTIArg(0, X86::ecx);
    1920     emitGetCTIArg(8, X86::edx);
     1919    emitGetJITStubArg(1, X86::ecx);
     1920    emitGetJITStubArg(3, X86::edx);
    19211921    __ pushl_r(X86::ebx);
    19221922    __ link(hasCodeBlock2, __ label());
     
    19261926    JmpSrc arityCheckOkay2 = __ je();
    19271927    __ popl_r(X86::ebx);
    1928     emitPutCTIArg(X86::ebx, 4);
    1929     emitPutCTIArg(X86::eax, 12);
     1928    emitPutJITStubArg(X86::ebx, 2);
     1929    emitPutJITStubArg(X86::eax, 4);
    19301930    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19311931    JmpSrc callArityCheck2 = __ call();
    19321932    __ movl_rr(X86::edx, X86::edi);
    1933     emitGetCTIArg(0, X86::ecx);
    1934     emitGetCTIArg(8, X86::edx);
     1933    emitGetJITStubArg(1, X86::ecx);
     1934    emitGetJITStubArg(3, X86::edx);
    19351935    __ pushl_r(X86::ebx);
    19361936    __ link(arityCheckOkay2, __ label());
     
    19391939
    19401940    __ popl_r(X86::ebx);
    1941     emitPutCTIArg(X86::ebx, 4);
     1941    emitPutJITStubArg(X86::ebx, 2);
    19421942    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19431943    JmpSrc callLazyLinkCall = __ call();
     
    19561956    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19571957    JmpSrc callJSFunction3 = __ call();
    1958     emitGetCTIArg(0, X86::ecx);
    1959     emitGetCTIArg(8, X86::edx);
     1958    emitGetJITStubArg(1, X86::ecx);
     1959    emitGetJITStubArg(3, X86::edx);
    19601960    __ pushl_r(X86::ebx);
    19611961    __ link(hasCodeBlock3, __ label());
     
    19651965    JmpSrc arityCheckOkay3 = __ je();
    19661966    __ popl_r(X86::ebx);
    1967     emitPutCTIArg(X86::ebx, 4);
    1968     emitPutCTIArg(X86::eax, 12);
     1967    emitPutJITStubArg(X86::ebx, 2);
     1968    emitPutJITStubArg(X86::eax, 4);
    19691969    emitPutCTIParam(X86::edi, CTI_ARGS_callFrame);
    19701970    JmpSrc callArityCheck3 = __ call();
    19711971    __ movl_rr(X86::edx, X86::edi);
    1972     emitGetCTIArg(0, X86::ecx);
    1973     emitGetCTIArg(8, X86::edx);
     1972    emitGetJITStubArg(1, X86::ecx);
     1973    emitGetJITStubArg(3, X86::edx);
    19741974    __ pushl_r(X86::ebx);
    19751975    __ link(arityCheckOkay3, __ label());
  • trunk/JavaScriptCore/jit/JIT.h

    r39266 r39268  
    354354        void emitPutVirtualRegister(unsigned dst, RegisterID from = X86::eax);
    355355
    356         void emitPutCTIArg(RegisterID src, unsigned offset);
    357         void emitPutCTIArgFromVirtualRegister(unsigned src, unsigned offset, RegisterID scratch);
    358         void emitPutCTIArgConstant(unsigned value, unsigned offset);
    359         void emitPutCTIArgConstant(void* value, unsigned offset);
    360         void emitGetCTIArg(unsigned offset, RegisterID dst);
     356        void emitPutJITStubArg(RegisterID src, unsigned argumentNumber);
     357        void emitPutJITStubArgFromVirtualRegister(unsigned src, unsigned argumentNumber, RegisterID scratch);
     358        void emitPutJITStubArgConstant(unsigned value, unsigned argumentNumber);
     359        void emitPutJITStubArgConstant(void* value, unsigned argumentNumber);
     360        void emitGetJITStubArg(unsigned argumentNumber, RegisterID dst);
    361361
    362362        void emitInitRegister(unsigned dst);
  • trunk/JavaScriptCore/jit/JITArithmetic.cpp

    r39266 r39268  
    4949void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned dst, unsigned src1, unsigned src2, OperandTypes)
    5050{
    51     emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    52     emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     51    emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     52    emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    5353    if (opcodeID == op_add)
    5454        emitCTICall(Interpreter::cti_op_add);
     
    324324        linkSlowCase(iter);
    325325
    326     emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
    327     emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx);
     326    emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
     327    emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    328328    if (opcodeID == op_add)
    329329        emitCTICall(Interpreter::cti_op_add);
  • trunk/JavaScriptCore/jit/JITCall.cpp

    r39266 r39268  
    8787
    8888    // ecx holds func
    89     emitPutCTIArg(X86::ecx, 0);
    90     emitPutCTIArgConstant(registerOffset, 4);
    91     emitPutCTIArgConstant(argCount, 8);
    92     emitPutCTIArgConstant(reinterpret_cast<unsigned>(instruction), 12);
     89    emitPutJITStubArg(X86::ecx, 1);
     90    emitPutJITStubArgConstant(registerOffset, 2);
     91    emitPutJITStubArgConstant(argCount, 3);
     92    emitPutJITStubArgConstant(reinterpret_cast<unsigned>(instruction), 4);
    9393}
    9494
     
    9999
    100100    // ecx holds func
    101     emitPutCTIArg(X86::ecx, 0);
    102     emitPutCTIArgConstant(registerOffset, 4);
    103     emitPutCTIArgConstant(argCount, 8);
     101    emitPutJITStubArg(X86::ecx, 1);
     102    emitPutJITStubArgConstant(registerOffset, 2);
     103    emitPutJITStubArgConstant(argCount, 3);
    104104}
    105105
     
    112112
    113113    // ecx holds func
    114     emitPutCTIArg(X86::ecx, 0);
    115     emitPutCTIArgConstant(registerOffset, 4);
    116     emitPutCTIArgConstant(argCount, 8);
    117     emitPutCTIArgFromVirtualRegister(proto, 12, X86::eax);
    118     emitPutCTIArgConstant(thisRegister, 16);
     114    emitPutJITStubArg(X86::ecx, 1);
     115    emitPutJITStubArgConstant(registerOffset, 2);
     116    emitPutJITStubArgConstant(argCount, 3);
     117    emitPutJITStubArgFromVirtualRegister(proto, 4, X86::eax);
     118    emitPutJITStubArgConstant(thisRegister, 5);
    119119}
    120120
     
    233233        int thisRegister = instruction[6].u.operand;
    234234
    235         emitPutCTIArg(X86::ecx, 0);
    236         emitPutCTIArgFromVirtualRegister(proto, 12, X86::eax);
     235        emitPutJITStubArg(X86::ecx, 1);
     236        emitPutJITStubArgFromVirtualRegister(proto, 4, X86::eax);
    237237        emitCTICall(Interpreter::cti_op_construct_JSConstruct);
    238238        emitPutVirtualRegister(thisRegister);
  • trunk/JavaScriptCore/jit/JITInlineMethods.h

    r39266 r39268  
    102102
    103103// puts an arg onto the stack, as an arg to a context threaded function.
    104 ALWAYS_INLINE void JIT::emitPutCTIArg(RegisterID src, unsigned offset)
    105 {
    106     poke(src, (offset / sizeof(void*)) + 1);
    107 }
    108 
    109 ALWAYS_INLINE void JIT::emitPutCTIArgConstant(unsigned value, unsigned offset)
    110 {
    111     poke(Imm32(value), (offset / sizeof(void*)) + 1);
    112 }
    113 
    114 ALWAYS_INLINE void JIT::emitPutCTIArgConstant(void* value, unsigned offset)
    115 {
    116     poke(ImmPtr(value), (offset / sizeof(void*)) + 1);
    117 }
    118 
    119 ALWAYS_INLINE void JIT::emitGetCTIArg(unsigned offset, RegisterID dst)
    120 {
    121     peek(dst, (offset / sizeof(void*)) + 1);
     104ALWAYS_INLINE void JIT::emitPutJITStubArg(RegisterID src, unsigned argumentNumber)
     105{
     106    poke(src, argumentNumber);
     107}
     108
     109ALWAYS_INLINE void JIT::emitPutJITStubArgConstant(unsigned value, unsigned argumentNumber)
     110{
     111    poke(Imm32(value), argumentNumber);
     112}
     113
     114ALWAYS_INLINE void JIT::emitPutJITStubArgConstant(void* value, unsigned argumentNumber)
     115{
     116    poke(ImmPtr(value), argumentNumber);
     117}
     118
     119ALWAYS_INLINE void JIT::emitGetJITStubArg(unsigned argumentNumber, RegisterID dst)
     120{
     121    peek(dst, argumentNumber);
    122122}
    123123
     
    132132
    133133// get arg puts an arg from the SF register array onto the stack, as an arg to a context threaded function.
    134 ALWAYS_INLINE void JIT::emitPutCTIArgFromVirtualRegister(unsigned src, unsigned offset, RegisterID scratch)
     134ALWAYS_INLINE void JIT::emitPutJITStubArgFromVirtualRegister(unsigned src, unsigned argumentNumber, RegisterID scratch)
    135135{
    136136    if (m_codeBlock->isConstantRegisterIndex(src)) {
    137137        JSValue* value = m_codeBlock->getConstant(src);
    138         emitPutCTIArgConstant(value, offset);
     138        emitPutJITStubArgConstant(value, argumentNumber);
    139139    } else {
    140140        loadPtr(Address(callFrameRegister, src * sizeof(Register)), scratch);
    141         emitPutCTIArg(scratch, offset);
     141        emitPutJITStubArg(scratch, argumentNumber);
    142142    }
    143143
  • trunk/JavaScriptCore/jit/JITPropertyAccess.cpp

    r39266 r39268  
    5656    emitGetVirtualRegister(baseVReg, X86::eax);
    5757
    58     emitPutCTIArg(X86::eax, 0);
    59     emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
     58    emitPutJITStubArg(X86::eax, 1);
     59    emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
    6060    emitCTICall(Interpreter::cti_op_get_by_id_generic);
    6161    emitPutVirtualRegister(resultVReg);
     
    7676    emitGetVirtualRegisters(baseVReg, X86::eax, valueVReg, X86::edx);
    7777
    78     emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
    79     emitPutCTIArg(X86::eax, 0);
    80     emitPutCTIArg(X86::edx, 8);
     78    emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
     79    emitPutJITStubArg(X86::eax, 1);
     80    emitPutJITStubArg(X86::edx, 3);
    8181    emitCTICall(Interpreter::cti_op_put_by_id_generic);
    8282}
     
    129129    JmpDst coldPathBegin = __ label();
    130130#endif
    131     emitPutCTIArg(X86::eax, 0);
    132     emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
     131    emitPutJITStubArg(X86::eax, 1);
     132    emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
    133133    JmpSrc call = emitCTICall(Interpreter::cti_op_get_by_id);
    134134    ASSERT(X86Assembler::getDifferenceBetweenLabels(coldPathBegin, call) == repatchOffsetGetByIdSlowCaseCall);
     
    169169    linkSlowCase(iter);
    170170
    171     emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4);
    172     emitPutCTIArg(X86::eax, 0);
    173     emitPutCTIArg(X86::edx, 8);
     171    emitPutJITStubArgConstant(reinterpret_cast<unsigned>(ident), 2);
     172    emitPutJITStubArg(X86::eax, 1);
     173    emitPutJITStubArg(X86::edx, 3);
    174174    JmpSrc call = emitCTICall(Interpreter::cti_op_put_by_id);
    175175
Note: See TracChangeset for help on using the changeset viewer.