Changeset 38916 in webkit for trunk/JavaScriptCore/jit/JIT.cpp
- Timestamp:
- Dec 2, 2008, 1:32:08 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JIT.cpp
r38763 r38916 398 398 } 399 399 400 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_j helper)400 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_j helper) 401 401 { 402 402 #if ENABLE(OPCODE_SAMPLING) 403 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 404 #else 405 UNUSED_PARAM(vPC); 403 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 406 404 #endif 407 405 __ restoreArgumentReference(); … … 410 408 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 411 409 #if ENABLE(OPCODE_SAMPLING) 412 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());410 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 413 411 #endif 414 412 killLastResultRegister(); … … 417 415 } 418 416 419 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_o helper)417 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_o helper) 420 418 { 421 419 #if ENABLE(OPCODE_SAMPLING) 422 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 423 #else 424 UNUSED_PARAM(vPC); 420 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 425 421 #endif 426 422 __ restoreArgumentReference(); … … 429 425 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 430 426 #if ENABLE(OPCODE_SAMPLING) 431 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());427 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 432 428 #endif 433 429 killLastResultRegister(); … … 436 432 } 437 433 438 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_p helper)434 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_p helper) 439 435 { 440 436 #if ENABLE(OPCODE_SAMPLING) 441 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 442 #else 443 UNUSED_PARAM(vPC); 437 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 444 438 #endif 445 439 __ restoreArgumentReference(); … … 448 442 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 449 443 #if ENABLE(OPCODE_SAMPLING) 450 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());444 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 451 445 #endif 452 446 killLastResultRegister(); … … 455 449 } 456 450 457 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_b helper)451 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_b helper) 458 452 { 459 453 #if ENABLE(OPCODE_SAMPLING) 460 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 461 #else 462 UNUSED_PARAM(vPC); 454 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 463 455 #endif 464 456 __ restoreArgumentReference(); … … 467 459 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 468 460 #if ENABLE(OPCODE_SAMPLING) 469 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());461 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 470 462 #endif 471 463 killLastResultRegister(); … … 474 466 } 475 467 476 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_v helper)468 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_v helper) 477 469 { 478 470 #if ENABLE(OPCODE_SAMPLING) 479 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 480 #else 481 UNUSED_PARAM(vPC); 471 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 482 472 #endif 483 473 __ restoreArgumentReference(); … … 486 476 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 487 477 #if ENABLE(OPCODE_SAMPLING) 488 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());478 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 489 479 #endif 490 480 killLastResultRegister(); … … 493 483 } 494 484 495 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_s helper)485 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_s helper) 496 486 { 497 487 #if ENABLE(OPCODE_SAMPLING) 498 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 499 #else 500 UNUSED_PARAM(vPC); 488 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 501 489 #endif 502 490 __ restoreArgumentReference(); … … 505 493 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 506 494 #if ENABLE(OPCODE_SAMPLING) 507 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());495 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 508 496 #endif 509 497 killLastResultRegister(); … … 512 500 } 513 501 514 ALWAYS_INLINE JmpSrc JIT::emitCTICall( Instruction* vPC,unsigned bytecodeIndex, CTIHelper_2 helper)502 ALWAYS_INLINE JmpSrc JIT::emitCTICall(unsigned bytecodeIndex, CTIHelper_2 helper) 515 503 { 516 504 #if ENABLE(OPCODE_SAMPLING) 517 __ movl_i32m(m_interpreter->sampler()->encodeSample(vPC, true), m_interpreter->sampler()->sampleSlot()); 518 #else 519 UNUSED_PARAM(vPC); 505 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, true), m_interpreter->sampler()->sampleSlot()); 520 506 #endif 521 507 __ restoreArgumentReference(); … … 524 510 m_calls.append(CallRecord(call, helper, bytecodeIndex)); 525 511 #if ENABLE(OPCODE_SAMPLING) 526 __ movl_i32m(m_interpreter->sampler()->encodeSample( vPC, false), m_interpreter->sampler()->sampleSlot());512 __ movl_i32m(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions.begin() + bytecodeIndex, false), m_interpreter->sampler()->sampleSlot()); 527 513 #endif 528 514 killLastResultRegister(); … … 649 635 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); \ 650 636 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); \ 651 emitCTICall(i nstruction + i, i, Interpreter::cti_##name); \637 emitCTICall(i, Interpreter::cti_##name); \ 652 638 emitPutVirtualRegister(instruction[i + 1].u.operand); \ 653 639 i += 4; \ … … 658 644 case name: { \ 659 645 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); \ 660 emitCTICall(i nstruction + i, i, Interpreter::cti_##name); \646 emitCTICall(i, Interpreter::cti_##name); \ 661 647 emitPutVirtualRegister(instruction[i + 1].u.operand); \ 662 648 i += 3; \ … … 734 720 compileOpCallEvalSetupArgs(instruction); 735 721 736 emitCTICall(i nstruction, i, Interpreter::cti_op_call_eval);722 emitCTICall(i, Interpreter::cti_op_call_eval); 737 723 __ cmpl_i32r(asInteger(JSImmediate::impossibleValue()), X86::eax); 738 724 wasEval = __ jne(); … … 757 743 emitPutCTIArg(X86::ecx, 0); 758 744 emitPutCTIArgFromVirtualRegister(proto, 12, X86::eax); 759 emitCTICall(i nstruction, i, Interpreter::cti_op_construct_JSConstruct);745 emitCTICall(i, Interpreter::cti_op_construct_JSConstruct); 760 746 emitPutVirtualRegister(thisRegister); 761 747 emitGetVirtualRegister(callee, X86::ecx, i); … … 841 827 } 842 828 843 void JIT::emitSlowScriptCheck( Instruction* vPC,unsigned bytecodeIndex)829 void JIT::emitSlowScriptCheck(unsigned bytecodeIndex) 844 830 { 845 831 __ subl_i8r(1, X86::esi); 846 832 JmpSrc skipTimeout = __ jne(); 847 emitCTICall( vPC,bytecodeIndex, Interpreter::cti_timeout_check);833 emitCTICall(bytecodeIndex, Interpreter::cti_timeout_check); 848 834 849 835 emitGetCTIParam(CTI_ARGS_globalData, X86::ecx); … … 1046 1032 } 1047 1033 1048 void JIT::compileBinaryArithOpSlowCase( Instruction* vPC,OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned dst, unsigned src1, unsigned src2, OperandTypes types, unsigned i)1034 void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned dst, unsigned src1, unsigned src2, OperandTypes types, unsigned i) 1049 1035 { 1050 1036 JmpDst here = __ label(); … … 1084 1070 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx); 1085 1071 if (opcodeID == op_add) 1086 emitCTICall( vPC,i, Interpreter::cti_op_add);1072 emitCTICall(i, Interpreter::cti_op_add); 1087 1073 else if (opcodeID == op_sub) 1088 emitCTICall( vPC,i, Interpreter::cti_op_sub);1074 emitCTICall(i, Interpreter::cti_op_sub); 1089 1075 else { 1090 1076 ASSERT(opcodeID == op_mul); 1091 emitCTICall( vPC,i, Interpreter::cti_op_mul);1077 emitCTICall(i, Interpreter::cti_op_mul); 1092 1078 } 1093 1079 emitPutVirtualRegister(dst); … … 1147 1133 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 1148 1134 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); 1149 emitCTICall(i nstruction + i, i, Interpreter::cti_op_add);1135 emitCTICall(i, Interpreter::cti_op_add); 1150 1136 emitPutVirtualRegister(instruction[i + 1].u.operand); 1151 1137 } … … 1157 1143 case op_end: { 1158 1144 if (m_codeBlock->needsFullScopeChain) 1159 emitCTICall(i nstruction + i, i, Interpreter::cti_op_end);1145 emitCTICall(i, Interpreter::cti_op_end); 1160 1146 emitGetVirtualRegister(instruction[i + 1].u.operand, X86::eax, i); 1161 1147 __ pushl_m(RegisterFile::ReturnPC * static_cast<int>(sizeof(Register)), X86::edi); … … 1181 1167 } 1182 1168 case op_loop: { 1183 emitSlowScriptCheck(i nstruction + i, i);1169 emitSlowScriptCheck(i); 1184 1170 1185 1171 unsigned target = instruction[i + 1].u.operand; … … 1189 1175 } 1190 1176 case op_loop_if_less: { 1191 emitSlowScriptCheck(i nstruction + i, i);1177 emitSlowScriptCheck(i); 1192 1178 1193 1179 unsigned target = instruction[i + 3].u.operand; … … 1209 1195 } 1210 1196 case op_loop_if_lesseq: { 1211 emitSlowScriptCheck(i nstruction + i, i);1197 emitSlowScriptCheck(i); 1212 1198 1213 1199 unsigned target = instruction[i + 3].u.operand; … … 1229 1215 } 1230 1216 case op_new_object: { 1231 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_object);1217 emitCTICall(i, Interpreter::cti_op_new_object); 1232 1218 emitPutVirtualRegister(instruction[i + 1].u.operand); 1233 1219 i += 2; … … 1359 1345 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 3].u.operand]); 1360 1346 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 1361 emitCTICall(i nstruction + i, i, Interpreter::cti_op_del_by_id);1347 emitCTICall(i, Interpreter::cti_op_del_by_id); 1362 1348 emitPutVirtualRegister(instruction[i + 1].u.operand); 1363 1349 i += 4; … … 1398 1384 FuncDeclNode* func = (m_codeBlock->functions[instruction[i + 2].u.operand]).get(); 1399 1385 emitPutCTIArgConstant(reinterpret_cast<unsigned>(func), 0); 1400 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_func);1386 emitCTICall(i, Interpreter::cti_op_new_func); 1401 1387 emitPutVirtualRegister(instruction[i + 1].u.operand); 1402 1388 i += 3; … … 1454 1440 case op_tear_off_activation: { 1455 1441 emitPutCTIArgFromVirtualRegister(instruction[i + 1].u.operand, 0, X86::ecx); 1456 emitCTICall(i nstruction + i, i, Interpreter::cti_op_tear_off_activation);1442 emitCTICall(i, Interpreter::cti_op_tear_off_activation); 1457 1443 i += 2; 1458 1444 break; 1459 1445 } 1460 1446 case op_tear_off_arguments: { 1461 emitCTICall(i nstruction + i, i, Interpreter::cti_op_tear_off_arguments);1447 emitCTICall(i, Interpreter::cti_op_tear_off_arguments); 1462 1448 i += 1; 1463 1449 break; … … 1466 1452 // We could JIT generate the deref, only calling out to C when the refcount hits zero. 1467 1453 if (m_codeBlock->needsFullScopeChain) 1468 emitCTICall(i nstruction + i, i, Interpreter::cti_op_ret_scopeChain);1454 emitCTICall(i, Interpreter::cti_op_ret_scopeChain); 1469 1455 1470 1456 // Return the result in %eax. … … 1488 1474 emitPutCTIArg(X86::edx, 0); 1489 1475 emitPutCTIArgConstant(instruction[i + 3].u.operand, 4); 1490 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_array);1476 emitCTICall(i, Interpreter::cti_op_new_array); 1491 1477 emitPutVirtualRegister(instruction[i + 1].u.operand); 1492 1478 i += 4; … … 1496 1482 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 2].u.operand]); 1497 1483 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 1498 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve);1484 emitCTICall(i, Interpreter::cti_op_resolve); 1499 1485 emitPutVirtualRegister(instruction[i + 1].u.operand); 1500 1486 i += 3; … … 1541 1527 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 3].u.operand]); 1542 1528 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 1543 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve_func);1529 emitCTICall(i, Interpreter::cti_op_resolve_func); 1544 1530 emitPutVirtualRegister(instruction[i + 2].u.operand, X86::edx); 1545 1531 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 1583 1569 CTI_COMPILE_BINARY_OP(op_lesseq) 1584 1570 case op_loop_if_true: { 1585 emitSlowScriptCheck(i nstruction + i, i);1571 emitSlowScriptCheck(i); 1586 1572 1587 1573 unsigned target = instruction[i + 2].u.operand; … … 1605 1591 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 2].u.operand]); 1606 1592 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 1607 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve_base);1593 emitCTICall(i, Interpreter::cti_op_resolve_base); 1608 1594 emitPutVirtualRegister(instruction[i + 1].u.operand); 1609 1595 i += 3; … … 1630 1616 __ link(notImmediate, __ label()); 1631 1617 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 1632 emitCTICall(i nstruction + i, i, Interpreter::cti_op_negate);1618 emitCTICall(i, Interpreter::cti_op_negate); 1633 1619 emitPutVirtualRegister(instruction[i + 1].u.operand); 1634 1620 } else { … … 1664 1650 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 1665 1651 emitPutCTIArgConstant(instruction[i + 3].u.operand + m_codeBlock->needsFullScopeChain, 4); 1666 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve_skip);1652 emitCTICall(i, Interpreter::cti_op_resolve_skip); 1667 1653 emitPutVirtualRegister(instruction[i + 1].u.operand); 1668 1654 i += 4; … … 1694 1680 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 1695 1681 emitPutCTIArgConstant(reinterpret_cast<unsigned>(instruction + i), 8); 1696 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve_global);1682 emitCTICall(i, Interpreter::cti_op_resolve_global); 1697 1683 emitPutVirtualRegister(instruction[i + 1].u.operand); 1698 1684 __ link(end, __ label()); … … 1920 1906 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 3].u.operand]); 1921 1907 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 1922 emitCTICall(i nstruction + i, i, Interpreter::cti_op_resolve_with_base);1908 emitCTICall(i, Interpreter::cti_op_resolve_with_base); 1923 1909 emitPutVirtualRegister(instruction[i + 2].u.operand, X86::edx); 1924 1910 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 1929 1915 FuncExprNode* func = (m_codeBlock->functionExpressions[instruction[i + 2].u.operand]).get(); 1930 1916 emitPutCTIArgConstant(reinterpret_cast<unsigned>(func), 0); 1931 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_func_exp);1917 emitCTICall(i, Interpreter::cti_op_new_func_exp); 1932 1918 emitPutVirtualRegister(instruction[i + 1].u.operand); 1933 1919 i += 3; … … 2006 1992 RegExp* regExp = m_codeBlock->regexps[instruction[i + 2].u.operand].get(); 2007 1993 emitPutCTIArgConstant(reinterpret_cast<unsigned>(regExp), 0); 2008 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_regexp);1994 emitCTICall(i, Interpreter::cti_op_new_regexp); 2009 1995 emitPutVirtualRegister(instruction[i + 1].u.operand); 2010 1996 i += 3; … … 2021 2007 case op_throw: { 2022 2008 emitPutCTIArgFromVirtualRegister(instruction[i + 1].u.operand, 0, X86::ecx); 2023 emitCTICall(i nstruction + i, i, Interpreter::cti_op_throw);2009 emitCTICall(i, Interpreter::cti_op_throw); 2024 2010 __ addl_i8r(0x20, X86::esp); 2025 2011 __ popl_r(X86::ebx); … … 2032 2018 case op_get_pnames: { 2033 2019 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 2034 emitCTICall(i nstruction + i, i, Interpreter::cti_op_get_pnames);2020 emitCTICall(i, Interpreter::cti_op_get_pnames); 2035 2021 emitPutVirtualRegister(instruction[i + 1].u.operand); 2036 2022 i += 3; … … 2040 2026 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 2041 2027 unsigned target = instruction[i + 3].u.operand; 2042 emitCTICall(i nstruction + i, i, Interpreter::cti_op_next_pname);2028 emitCTICall(i, Interpreter::cti_op_next_pname); 2043 2029 __ testl_rr(X86::eax, X86::eax); 2044 2030 JmpSrc endOfIter = __ je(); … … 2051 2037 case op_push_scope: { 2052 2038 emitPutCTIArgFromVirtualRegister(instruction[i + 1].u.operand, 0, X86::ecx); 2053 emitCTICall(i nstruction + i, i, Interpreter::cti_op_push_scope);2039 emitCTICall(i, Interpreter::cti_op_push_scope); 2054 2040 i += 2; 2055 2041 break; 2056 2042 } 2057 2043 case op_pop_scope: { 2058 emitCTICall(i nstruction + i, i, Interpreter::cti_op_pop_scope);2044 emitCTICall(i, Interpreter::cti_op_pop_scope); 2059 2045 i += 1; 2060 2046 break; … … 2100 2086 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 2101 2087 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); 2102 emitCTICall(i nstruction + i, i, Interpreter::cti_op_in);2088 emitCTICall(i, Interpreter::cti_op_in); 2103 2089 emitPutVirtualRegister(instruction[i + 1].u.operand); 2104 2090 i += 4; … … 2109 2095 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 0); 2110 2096 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); 2111 emitCTICall(i nstruction + i, i, Interpreter::cti_op_push_new_scope);2097 emitCTICall(i, Interpreter::cti_op_push_new_scope); 2112 2098 emitPutVirtualRegister(instruction[i + 1].u.operand); 2113 2099 i += 4; … … 2123 2109 unsigned count = instruction[i + 1].u.operand; 2124 2110 emitPutCTIArgConstant(count, 0); 2125 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jmp_scopes);2111 emitCTICall(i, Interpreter::cti_op_jmp_scopes); 2126 2112 unsigned target = instruction[i + 2].u.operand; 2127 2113 m_jmpTable.append(JmpTable(__ jmp(), i + 2 + target)); … … 2133 2119 emitPutCTIArgConstant(instruction[i + 2].u.operand, 4); 2134 2120 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 8, X86::ecx); 2135 emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_by_index);2121 emitCTICall(i, Interpreter::cti_op_put_by_index); 2136 2122 i += 4; 2137 2123 break; … … 2149 2135 emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx); 2150 2136 emitPutCTIArgConstant(tableIndex, 4); 2151 emitCTICall(i nstruction + i, i, Interpreter::cti_op_switch_imm);2137 emitCTICall(i, Interpreter::cti_op_switch_imm); 2152 2138 __ jmp_r(X86::eax); 2153 2139 i += 4; … … 2166 2152 emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx); 2167 2153 emitPutCTIArgConstant(tableIndex, 4); 2168 emitCTICall(i nstruction + i, i, Interpreter::cti_op_switch_char);2154 emitCTICall(i, Interpreter::cti_op_switch_char); 2169 2155 __ jmp_r(X86::eax); 2170 2156 i += 4; … … 2182 2168 emitPutCTIArgFromVirtualRegister(scrutinee, 0, X86::ecx); 2183 2169 emitPutCTIArgConstant(tableIndex, 4); 2184 emitCTICall(i nstruction + i, i, Interpreter::cti_op_switch_string);2170 emitCTICall(i, Interpreter::cti_op_switch_string); 2185 2171 __ jmp_r(X86::eax); 2186 2172 i += 4; … … 2190 2176 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 2191 2177 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); 2192 emitCTICall(i nstruction + i, i, Interpreter::cti_op_del_by_val);2178 emitCTICall(i, Interpreter::cti_op_del_by_val); 2193 2179 emitPutVirtualRegister(instruction[i + 1].u.operand); 2194 2180 i += 4; … … 2200 2186 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 2201 2187 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 8, X86::ecx); 2202 emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_getter);2188 emitCTICall(i, Interpreter::cti_op_put_getter); 2203 2189 i += 4; 2204 2190 break; … … 2209 2195 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 2210 2196 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 8, X86::ecx); 2211 emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_setter);2197 emitCTICall(i, Interpreter::cti_op_put_setter); 2212 2198 i += 4; 2213 2199 break; … … 2218 2204 emitPutCTIArgConstant(asInteger(message), 4); 2219 2205 emitPutCTIArgConstant(m_codeBlock->lineNumberForVPC(&instruction[i]), 8); 2220 emitCTICall(i nstruction + i, i, Interpreter::cti_op_new_error);2206 emitCTICall(i, Interpreter::cti_op_new_error); 2221 2207 emitPutVirtualRegister(instruction[i + 1].u.operand); 2222 2208 i += 4; … … 2227 2213 emitPutCTIArgConstant(instruction[i + 2].u.operand, 4); 2228 2214 emitPutCTIArgConstant(instruction[i + 3].u.operand, 8); 2229 emitCTICall(i nstruction + i, i, Interpreter::cti_op_debug);2215 emitCTICall(i, Interpreter::cti_op_debug); 2230 2216 i += 4; 2231 2217 break; … … 2310 2296 emitInitRegister(j); 2311 2297 2312 emitCTICall(i nstruction + i, i, Interpreter::cti_op_push_activation);2298 emitCTICall(i, Interpreter::cti_op_push_activation); 2313 2299 emitPutVirtualRegister(instruction[i + 1].u.operand); 2314 2300 … … 2317 2303 } 2318 2304 case op_create_arguments: { 2319 emitCTICall(i nstruction + i, i, (m_codeBlock->numParameters == 1) ? Interpreter::cti_op_create_arguments_no_params : Interpreter::cti_op_create_arguments);2305 emitCTICall(i, (m_codeBlock->numParameters == 1) ? Interpreter::cti_op_create_arguments_no_params : Interpreter::cti_op_create_arguments); 2320 2306 i += 1; 2321 2307 break; … … 2337 2323 JmpSrc noProfiler = __ je(); 2338 2324 emitPutCTIArgFromVirtualRegister(instruction[i + 1].u.operand, 0, X86::eax); 2339 emitCTICall(i nstruction + i, i, Interpreter::cti_op_profile_will_call);2325 emitCTICall(i, Interpreter::cti_op_profile_will_call); 2340 2326 __ link(noProfiler, __ label()); 2341 2327 … … 2348 2334 JmpSrc noProfiler = __ je(); 2349 2335 emitPutCTIArgFromVirtualRegister(instruction[i + 1].u.operand, 0, X86::eax); 2350 emitCTICall(i nstruction + i, i, Interpreter::cti_op_profile_did_call);2336 emitCTICall(i, Interpreter::cti_op_profile_did_call); 2351 2337 __ link(noProfiler, __ label()); 2352 2338 … … 2387 2373 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); \ 2388 2374 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); \ 2389 emitCTICall(i nstruction + i, i, Interpreter::cti_##name); \2375 emitCTICall(i, Interpreter::cti_##name); \ 2390 2376 emitPutVirtualRegister(instruction[i + 1].u.operand); \ 2391 2377 i += 4; \ … … 2399 2385 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); \ 2400 2386 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); \ 2401 emitCTICall(i nstruction + i, i, Interpreter::cti_##name); \2387 emitCTICall(i, Interpreter::cti_##name); \ 2402 2388 emitPutVirtualRegister(instruction[i + 1].u.operand); \ 2403 2389 i += 4; \ … … 2425 2411 __ link((++iter)->from, __ label()); 2426 2412 emitPutCTIArg(X86::eax, 0); 2427 emitCTICall(i nstruction + i, i, Interpreter::cti_op_convert_this);2413 emitCTICall(i, Interpreter::cti_op_convert_this); 2428 2414 emitPutVirtualRegister(instruction[i + 1].u.operand); 2429 2415 i += 2; … … 2441 2427 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx); 2442 2428 emitPutCTIArg(X86::eax, 4); 2443 emitCTICall(i nstruction + i, i, Interpreter::cti_op_add);2429 emitCTICall(i, Interpreter::cti_op_add); 2444 2430 emitPutVirtualRegister(dst); 2445 2431 } else if (JSValue* value = getConstantImmediateNumericArg(src2)) { … … 2450 2436 emitPutCTIArg(X86::eax, 0); 2451 2437 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx); 2452 emitCTICall(i nstruction + i, i, Interpreter::cti_op_add);2438 emitCTICall(i, Interpreter::cti_op_add); 2453 2439 emitPutVirtualRegister(dst); 2454 2440 } else { 2455 2441 OperandTypes types = OperandTypes::fromInt(instruction[i + 4].u.operand); 2456 2442 if (types.first().mightBeNumber() && types.second().mightBeNumber()) 2457 compileBinaryArithOpSlowCase( instruction + i,op_add, iter, dst, src1, src2, types, i);2443 compileBinaryArithOpSlowCase(op_add, iter, dst, src1, src2, types, i); 2458 2444 else 2459 2445 ASSERT_NOT_REACHED(); … … 2474 2460 emitPutCTIArg(X86::eax, 0); 2475 2461 emitPutCTIArg(X86::edx, 4); 2476 emitCTICall(i nstruction + i, i, Interpreter::cti_op_get_by_val);2462 emitCTICall(i, Interpreter::cti_op_get_by_val); 2477 2463 emitPutVirtualRegister(instruction[i + 1].u.operand); 2478 2464 __ link(__ jmp(), m_labels[i + 4]); … … 2496 2482 } 2497 2483 case op_sub: { 2498 compileBinaryArithOpSlowCase( instruction + i,op_sub, iter, instruction[i + 1].u.operand, instruction[i + 2].u.operand, instruction[i + 3].u.operand, OperandTypes::fromInt(instruction[i + 4].u.operand), i);2484 compileBinaryArithOpSlowCase(op_sub, iter, instruction[i + 1].u.operand, instruction[i + 2].u.operand, instruction[i + 3].u.operand, OperandTypes::fromInt(instruction[i + 4].u.operand), i); 2499 2485 i += 5; 2500 2486 break; … … 2511 2497 2512 2498 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 0, X86::ecx); 2513 emitCTICall(i nstruction + i, i, Interpreter::cti_op_negate);2499 emitCTICall(i, Interpreter::cti_op_negate); 2514 2500 emitPutVirtualRegister(instruction[i + 1].u.operand); 2515 2501 i += 4; … … 2521 2507 emitPutCTIArg(X86::eax, 0); 2522 2508 emitPutCTIArg(X86::ecx, 4); 2523 emitCTICall(i nstruction + i, i, Interpreter::cti_op_rshift);2509 emitCTICall(i, Interpreter::cti_op_rshift); 2524 2510 emitPutVirtualRegister(instruction[i + 1].u.operand); 2525 2511 i += 4; … … 2535 2521 emitPutCTIArg(X86::eax, 0); 2536 2522 emitPutCTIArg(X86::ecx, 4); 2537 emitCTICall(i nstruction + i, i, Interpreter::cti_op_lshift);2523 emitCTICall(i, Interpreter::cti_op_lshift); 2538 2524 emitPutVirtualRegister(instruction[i + 1].u.operand); 2539 2525 i += 4; … … 2541 2527 } 2542 2528 case op_loop_if_less: { 2543 emitSlowScriptCheck(i nstruction + i, i);2529 emitSlowScriptCheck(i); 2544 2530 2545 2531 unsigned target = instruction[i + 3].u.operand; … … 2549 2535 emitPutCTIArg(X86::edx, 0); 2550 2536 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 4, X86::ecx); 2551 emitCTICall(i nstruction + i, i, Interpreter::cti_op_loop_if_less);2537 emitCTICall(i, Interpreter::cti_op_loop_if_less); 2552 2538 __ testl_rr(X86::eax, X86::eax); 2553 2539 __ link(__ jne(), m_labels[i + 3 + target]); … … 2557 2543 emitPutCTIArg(X86::eax, 0); 2558 2544 emitPutCTIArg(X86::edx, 4); 2559 emitCTICall(i nstruction + i, i, Interpreter::cti_op_loop_if_less);2545 emitCTICall(i, Interpreter::cti_op_loop_if_less); 2560 2546 __ testl_rr(X86::eax, X86::eax); 2561 2547 __ link(__ jne(), m_labels[i + 3 + target]); … … 2573 2559 emitPutCTIArg(X86::eax, 0); 2574 2560 emitPutCTIArg(X86::edx, 8); 2575 JmpSrc call = emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_by_id);2561 JmpSrc call = emitCTICall(i, Interpreter::cti_op_put_by_id); 2576 2562 2577 2563 // Track the location of the call; this will be used to recover repatch information. … … 2600 2586 Identifier* ident = &(m_codeBlock->identifiers[instruction[i + 3].u.operand]); 2601 2587 emitPutCTIArgConstant(reinterpret_cast<unsigned>(ident), 4); 2602 JmpSrc call = emitCTICall(i nstruction + i, i, Interpreter::cti_op_get_by_id);2588 JmpSrc call = emitCTICall(i, Interpreter::cti_op_get_by_id); 2603 2589 ASSERT(X86Assembler::getDifferenceBetweenLabels(coldPathBegin, call) == repatchOffsetGetByIdSlowCaseCall); 2604 2590 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 2613 2599 } 2614 2600 case op_loop_if_lesseq: { 2615 emitSlowScriptCheck(i nstruction + i, i);2601 emitSlowScriptCheck(i); 2616 2602 2617 2603 unsigned target = instruction[i + 3].u.operand; … … 2621 2607 emitPutCTIArg(X86::edx, 0); 2622 2608 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 4, X86::ecx); 2623 emitCTICall(i nstruction + i, i, Interpreter::cti_op_loop_if_lesseq);2609 emitCTICall(i, Interpreter::cti_op_loop_if_lesseq); 2624 2610 __ testl_rr(X86::eax, X86::eax); 2625 2611 __ link(__ jne(), m_labels[i + 3 + target]); … … 2629 2615 emitPutCTIArg(X86::eax, 0); 2630 2616 emitPutCTIArg(X86::edx, 4); 2631 emitCTICall(i nstruction + i, i, Interpreter::cti_op_loop_if_lesseq);2617 emitCTICall(i, Interpreter::cti_op_loop_if_lesseq); 2632 2618 __ testl_rr(X86::eax, X86::eax); 2633 2619 __ link(__ jne(), m_labels[i + 3 + target]); … … 2643 2629 __ link(notImm, __ label()); 2644 2630 emitPutCTIArg(X86::eax, 0); 2645 emitCTICall(i nstruction + i, i, Interpreter::cti_op_pre_inc);2631 emitCTICall(i, Interpreter::cti_op_pre_inc); 2646 2632 emitPutVirtualRegister(srcDst); 2647 2633 i += 2; … … 2659 2645 emitPutCTIArg(X86::edx, 4); 2660 2646 emitPutCTIArg(X86::ecx, 8); 2661 emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_by_val);2647 emitCTICall(i, Interpreter::cti_op_put_by_val); 2662 2648 __ link(__ jmp(), m_labels[i + 4]); 2663 2649 … … 2669 2655 emitPutCTIArg(X86::edx, 4); 2670 2656 emitPutCTIArg(X86::ecx, 8); 2671 emitCTICall(i nstruction + i, i, Interpreter::cti_op_put_by_val_array);2657 emitCTICall(i, Interpreter::cti_op_put_by_val_array); 2672 2658 2673 2659 i += 4; … … 2675 2661 } 2676 2662 case op_loop_if_true: { 2677 emitSlowScriptCheck(i nstruction + i, i);2663 emitSlowScriptCheck(i); 2678 2664 2679 2665 __ link(iter->from, __ label()); 2680 2666 emitPutCTIArg(X86::eax, 0); 2681 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jtrue);2667 emitCTICall(i, Interpreter::cti_op_jtrue); 2682 2668 __ testl_rr(X86::eax, X86::eax); 2683 2669 unsigned target = instruction[i + 2].u.operand; … … 2693 2679 __ link(notImm, __ label()); 2694 2680 emitPutCTIArg(X86::eax, 0); 2695 emitCTICall(i nstruction + i, i, Interpreter::cti_op_pre_dec);2681 emitCTICall(i, Interpreter::cti_op_pre_dec); 2696 2682 emitPutVirtualRegister(srcDst); 2697 2683 i += 2; … … 2705 2691 emitPutCTIArg(X86::edx, 0); 2706 2692 emitPutCTIArgFromVirtualRegister(instruction[i + 2].u.operand, 4, X86::ecx); 2707 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jless);2693 emitCTICall(i, Interpreter::cti_op_jless); 2708 2694 __ testl_rr(X86::eax, X86::eax); 2709 2695 __ link(__ je(), m_labels[i + 3 + target]); … … 2713 2699 emitPutCTIArg(X86::eax, 0); 2714 2700 emitPutCTIArg(X86::edx, 4); 2715 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jless);2701 emitCTICall(i, Interpreter::cti_op_jless); 2716 2702 __ testl_rr(X86::eax, X86::eax); 2717 2703 __ link(__ je(), m_labels[i + 3 + target]); … … 2724 2710 __ xorl_i8r(JSImmediate::FullTagTypeBool, X86::eax); 2725 2711 emitPutCTIArg(X86::eax, 0); 2726 emitCTICall(i nstruction + i, i, Interpreter::cti_op_not);2712 emitCTICall(i, Interpreter::cti_op_not); 2727 2713 emitPutVirtualRegister(instruction[i + 1].u.operand); 2728 2714 i += 3; … … 2732 2718 __ link(iter->from, __ label()); 2733 2719 emitPutCTIArg(X86::eax, 0); 2734 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jtrue);2720 emitCTICall(i, Interpreter::cti_op_jtrue); 2735 2721 __ testl_rr(X86::eax, X86::eax); 2736 2722 unsigned target = instruction[i + 2].u.operand; … … 2744 2730 __ link((++iter)->from, __ label()); 2745 2731 emitPutCTIArg(X86::eax, 0); 2746 emitCTICall(i nstruction + i, i, Interpreter::cti_op_post_inc);2732 emitCTICall(i, Interpreter::cti_op_post_inc); 2747 2733 emitPutVirtualRegister(srcDst, X86::edx); 2748 2734 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 2753 2739 __ link(iter->from, __ label()); 2754 2740 emitPutCTIArg(X86::eax, 0); 2755 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitnot);2741 emitCTICall(i, Interpreter::cti_op_bitnot); 2756 2742 emitPutVirtualRegister(instruction[i + 1].u.operand); 2757 2743 i += 3; … … 2766 2752 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx); 2767 2753 emitPutCTIArg(X86::eax, 4); 2768 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitand);2754 emitCTICall(i, Interpreter::cti_op_bitand); 2769 2755 emitPutVirtualRegister(dst); 2770 2756 } else if (getConstantImmediateNumericArg(src2)) { … … 2772 2758 emitPutCTIArg(X86::eax, 0); 2773 2759 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx); 2774 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitand);2760 emitCTICall(i, Interpreter::cti_op_bitand); 2775 2761 emitPutVirtualRegister(dst); 2776 2762 } else { … … 2778 2764 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx); 2779 2765 emitPutCTIArg(X86::edx, 4); 2780 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitand);2766 emitCTICall(i, Interpreter::cti_op_bitand); 2781 2767 emitPutVirtualRegister(dst); 2782 2768 } … … 2787 2773 __ link(iter->from, __ label()); 2788 2774 emitPutCTIArg(X86::eax, 0); 2789 emitCTICall(i nstruction + i, i, Interpreter::cti_op_jtrue);2775 emitCTICall(i, Interpreter::cti_op_jtrue); 2790 2776 __ testl_rr(X86::eax, X86::eax); 2791 2777 unsigned target = instruction[i + 2].u.operand; … … 2799 2785 __ link((++iter)->from, __ label()); 2800 2786 emitPutCTIArg(X86::eax, 0); 2801 emitCTICall(i nstruction + i, i, Interpreter::cti_op_post_dec);2787 emitCTICall(i, Interpreter::cti_op_post_dec); 2802 2788 emitPutVirtualRegister(srcDst, X86::edx); 2803 2789 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 2809 2795 emitPutCTIArg(X86::eax, 0); 2810 2796 emitPutCTIArg(X86::edx, 4); 2811 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitxor);2797 emitCTICall(i, Interpreter::cti_op_bitxor); 2812 2798 emitPutVirtualRegister(instruction[i + 1].u.operand); 2813 2799 i += 5; … … 2818 2804 emitPutCTIArg(X86::eax, 0); 2819 2805 emitPutCTIArg(X86::edx, 4); 2820 emitCTICall(i nstruction + i, i, Interpreter::cti_op_bitor);2806 emitCTICall(i, Interpreter::cti_op_bitor); 2821 2807 emitPutVirtualRegister(instruction[i + 1].u.operand); 2822 2808 i += 5; … … 2827 2813 emitPutCTIArg(X86::eax, 0); 2828 2814 emitPutCTIArg(X86::edx, 4); 2829 emitCTICall(i nstruction + i, i, Interpreter::cti_op_eq);2815 emitCTICall(i, Interpreter::cti_op_eq); 2830 2816 emitPutVirtualRegister(instruction[i + 1].u.operand); 2831 2817 i += 4; … … 2836 2822 emitPutCTIArg(X86::eax, 0); 2837 2823 emitPutCTIArg(X86::edx, 4); 2838 emitCTICall(i nstruction + i, i, Interpreter::cti_op_neq);2824 emitCTICall(i, Interpreter::cti_op_neq); 2839 2825 emitPutVirtualRegister(instruction[i + 1].u.operand); 2840 2826 i += 4; … … 2850 2836 emitPutCTIArgFromVirtualRegister(instruction[i + 3].u.operand, 4, X86::ecx); 2851 2837 emitPutCTIArgFromVirtualRegister(instruction[i + 4].u.operand, 8, X86::ecx); 2852 emitCTICall(i nstruction + i, i, Interpreter::cti_op_instanceof);2838 emitCTICall(i, Interpreter::cti_op_instanceof); 2853 2839 emitPutVirtualRegister(instruction[i + 1].u.operand); 2854 2840 i += 5; … … 2865 2851 emitPutCTIArg(X86::eax, 0); 2866 2852 emitPutCTIArg(X86::ecx, 4); 2867 emitCTICall(i nstruction + i, i, Interpreter::cti_op_mod);2853 emitCTICall(i, Interpreter::cti_op_mod); 2868 2854 emitPutVirtualRegister(instruction[i + 1].u.operand); 2869 2855 i += 4; … … 2883 2869 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx); 2884 2870 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx); 2885 emitCTICall(i nstruction + i, i, Interpreter::cti_op_mul);2871 emitCTICall(i, Interpreter::cti_op_mul); 2886 2872 emitPutVirtualRegister(dst); 2887 2873 } else if (src2Value && ((value = JSImmediate::intValue(src2Value)) > 0)) { … … 2891 2877 emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx); 2892 2878 emitPutCTIArgFromVirtualRegister(src2, 4, X86::ecx); 2893 emitCTICall(i nstruction + i, i, Interpreter::cti_op_mul);2879 emitCTICall(i, Interpreter::cti_op_mul); 2894 2880 emitPutVirtualRegister(dst); 2895 2881 } else 2896 compileBinaryArithOpSlowCase( instruction + i,op_mul, iter, dst, src1, src2, OperandTypes::fromInt(instruction[i + 4].u.operand), i);2882 compileBinaryArithOpSlowCase(op_mul, iter, dst, src1, src2, OperandTypes::fromInt(instruction[i + 4].u.operand), i); 2897 2883 i += 5; 2898 2884 break; … … 2923 2909 // First, in the case of a construct, allocate the new object. 2924 2910 if (opcodeID == op_construct) { 2925 emitCTICall(i nstruction, i, Interpreter::cti_op_construct_JSConstruct);2911 emitCTICall(i, Interpreter::cti_op_construct_JSConstruct); 2926 2912 emitPutVirtualRegister(registerOffset - RegisterFile::CallFrameHeaderSize - argCount); 2927 2913 emitGetVirtualRegister(callee, X86::ecx, i); … … 2959 2945 __ link(callLinkFailNotObject, notJSFunctionlabel); 2960 2946 __ link(callLinkFailNotJSFunction, notJSFunctionlabel); 2961 emitCTICall(i nstruction + i, i, ((opcodeID == op_construct) ? Interpreter::cti_op_construct_NotJSConstruct : Interpreter::cti_op_call_NotJSFunction));2947 emitCTICall(i, ((opcodeID == op_construct) ? Interpreter::cti_op_construct_NotJSConstruct : Interpreter::cti_op_call_NotJSFunction)); 2962 2948 JmpSrc wasNotJSFunction = __ jmp(); 2963 2949 … … 2967 2953 // First, in the case of a construct, allocate the new object. 2968 2954 if (opcodeID == op_construct) { 2969 emitCTICall(i nstruction, i, Interpreter::cti_op_construct_JSConstruct);2955 emitCTICall(i, Interpreter::cti_op_construct_JSConstruct); 2970 2956 emitPutVirtualRegister(registerOffset - RegisterFile::CallFrameHeaderSize - argCount); 2971 2957 emitGetVirtualRegister(callee, X86::ecx, i); … … 2999 2985 3000 2986 emitPutCTIArg(X86::eax, 0); 3001 emitCTICall(i nstruction + i, i, Interpreter::cti_op_to_jsnumber);2987 emitCTICall(i, Interpreter::cti_op_to_jsnumber); 3002 2988 3003 2989 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 3053 3039 if (m_codeBlock->codeType == FunctionCode) { 3054 3040 __ link(slowRegisterFileCheck, __ label()); 3055 emitCTICall( m_codeBlock->instructions.begin(),0, Interpreter::cti_register_file_check);3041 emitCTICall(0, Interpreter::cti_register_file_check); 3056 3042 JmpSrc backToBody = __ jmp(); 3057 3043 __ link(backToBody, afterRegisterFileCheck);
Note:
See TracChangeset
for help on using the changeset viewer.