Changeset 223823 in webkit
- Timestamp:
- Oct 22, 2017 9:47:01 AM (7 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r223820 r223823 1 2017-10-22 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 [JSC] Clean up baseline slow path 4 https://bugs.webkit.org/show_bug.cgi?id=178646 5 6 Reviewed by Saam Barati. 7 8 If the given op is just calling a slow path function, we should use DEFINE_SLOW_OP instead. 9 It is good since (1) we can reduce the manual emitting code and (2) it can clarify which 10 function is implemented as a slow path call. This patch is an attempt to reduce 32bit specific 11 code in baseline JIT. 12 13 * jit/JIT.cpp: 14 (JSC::JIT::privateCompileMainPass): 15 * jit/JIT.h: 16 * jit/JITArithmetic.cpp: 17 (JSC::JIT::emit_op_pow): Deleted. 18 * jit/JITArithmetic32_64.cpp: 19 (JSC::JIT::emitSlow_op_mod): 20 * jit/JITOpcodes.cpp: 21 (JSC::JIT::emit_op_strcat): Deleted. 22 (JSC::JIT::emit_op_push_with_scope): Deleted. 23 (JSC::JIT::emit_op_assert): Deleted. 24 (JSC::JIT::emit_op_create_lexical_environment): Deleted. 25 (JSC::JIT::emit_op_throw_static_error): Deleted. 26 (JSC::JIT::emit_op_new_array_with_spread): Deleted. 27 (JSC::JIT::emit_op_spread): Deleted. 28 (JSC::JIT::emit_op_get_enumerable_length): Deleted. 29 (JSC::JIT::emit_op_has_generic_property): Deleted. 30 (JSC::JIT::emit_op_get_property_enumerator): Deleted. 31 (JSC::JIT::emit_op_to_index_string): Deleted. 32 (JSC::JIT::emit_op_create_direct_arguments): Deleted. 33 (JSC::JIT::emit_op_create_scoped_arguments): Deleted. 34 (JSC::JIT::emit_op_create_cloned_arguments): Deleted. 35 (JSC::JIT::emit_op_create_rest): Deleted. 36 (JSC::JIT::emit_op_unreachable): Deleted. 37 * jit/JITOpcodes32_64.cpp: 38 (JSC::JIT::emit_op_strcat): Deleted. 39 (JSC::JIT::emit_op_push_with_scope): Deleted. 40 (JSC::JIT::emit_op_assert): Deleted. 41 (JSC::JIT::emit_op_create_lexical_environment): Deleted. 42 * jit/JITPropertyAccess.cpp: 43 (JSC::JIT::emit_op_put_by_val_with_this): Deleted. 44 (JSC::JIT::emit_op_get_by_val_with_this): Deleted. 45 (JSC::JIT::emit_op_put_by_id_with_this): Deleted. 46 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): Deleted. 47 (JSC::JIT::emit_op_define_data_property): Deleted. 48 (JSC::JIT::emit_op_define_accessor_property): Deleted. 49 * jit/JITPropertyAccess32_64.cpp: 50 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): Deleted. 51 (JSC::JIT::emit_op_get_by_val_with_this): Deleted. 52 (JSC::JIT::emit_op_put_by_id_with_this): Deleted. 53 (JSC::JIT::emit_op_put_by_val_with_this): Deleted. 54 1 55 2017-10-21 Joseph Pecoraro <pecoraro@apple.com> 2 56 -
trunk/Source/JavaScriptCore/jit/JIT.cpp
r223813 r223823 250 250 251 251 switch (opcodeID) { 252 DEFINE_SLOW_OP(assert) 252 253 DEFINE_SLOW_OP(in) 253 254 DEFINE_SLOW_OP(less) … … 258 259 DEFINE_SLOW_OP(is_object_or_null) 259 260 DEFINE_SLOW_OP(typeof) 261 DEFINE_SLOW_OP(strcat) 262 DEFINE_SLOW_OP(push_with_scope) 263 DEFINE_SLOW_OP(create_lexical_environment) 264 DEFINE_SLOW_OP(get_by_val_with_this) 265 DEFINE_SLOW_OP(put_by_id_with_this) 266 DEFINE_SLOW_OP(put_by_val_with_this) 267 DEFINE_SLOW_OP(resolve_scope_for_hoisting_func_decl_in_eval) 268 DEFINE_SLOW_OP(define_data_property) 269 DEFINE_SLOW_OP(define_accessor_property) 270 DEFINE_SLOW_OP(unreachable) 271 DEFINE_SLOW_OP(throw_static_error) 272 DEFINE_SLOW_OP(new_array_with_spread) 273 DEFINE_SLOW_OP(spread) 274 DEFINE_SLOW_OP(get_enumerable_length) 275 DEFINE_SLOW_OP(has_generic_property) 276 DEFINE_SLOW_OP(get_property_enumerator) 277 DEFINE_SLOW_OP(to_index_string) 278 DEFINE_SLOW_OP(create_direct_arguments) 279 DEFINE_SLOW_OP(create_scoped_arguments) 280 DEFINE_SLOW_OP(create_cloned_arguments) 281 DEFINE_SLOW_OP(create_rest) 282 DEFINE_SLOW_OP(pow) 260 283 261 284 DEFINE_OP(op_add) … … 274 297 DEFINE_OP(op_create_this) 275 298 DEFINE_OP(op_to_this) 276 DEFINE_OP(op_create_direct_arguments)277 DEFINE_OP(op_create_scoped_arguments)278 DEFINE_OP(op_create_cloned_arguments)279 299 DEFINE_OP(op_get_argument) 280 300 DEFINE_OP(op_argument_count) 281 DEFINE_OP(op_create_rest)282 301 DEFINE_OP(op_get_rest_length) 283 302 DEFINE_OP(op_check_tdz) 284 DEFINE_OP(op_assert)285 303 DEFINE_OP(op_identity_with_profile) 286 DEFINE_OP(op_unreachable)287 304 DEFINE_OP(op_debug) 288 305 DEFINE_OP(op_del_by_id) … … 303 320 DEFINE_OP(op_get_by_id_with_this) 304 321 DEFINE_OP(op_get_by_val) 305 DEFINE_OP(op_get_by_val_with_this)306 322 DEFINE_OP(op_overrides_has_instance) 307 323 DEFINE_OP(op_instanceof) … … 342 358 DEFINE_OP(op_new_array_with_size) 343 359 DEFINE_OP(op_new_array_buffer) 344 DEFINE_OP(op_new_array_with_spread)345 DEFINE_OP(op_spread)346 360 DEFINE_OP(op_new_func) 347 361 DEFINE_OP(op_new_func_exp) … … 358 372 DEFINE_OP(op_dec) 359 373 DEFINE_OP(op_inc) 360 DEFINE_OP(op_pow)361 374 DEFINE_OP(op_profile_type) 362 375 DEFINE_OP(op_profile_control_flow) 363 DEFINE_OP(op_push_with_scope)364 DEFINE_OP(op_create_lexical_environment)365 376 DEFINE_OP(op_get_parent_scope) 366 377 DEFINE_OP(op_put_by_id) 367 DEFINE_OP(op_put_by_id_with_this)368 378 DEFINE_OP(op_put_by_index) 369 379 case op_put_by_val_direct: 370 380 DEFINE_OP(op_put_by_val) 371 DEFINE_OP(op_put_by_val_with_this)372 381 DEFINE_OP(op_put_getter_by_id) 373 382 DEFINE_OP(op_put_setter_by_id) … … 375 384 DEFINE_OP(op_put_getter_by_val) 376 385 DEFINE_OP(op_put_setter_by_val) 377 DEFINE_OP(op_define_data_property)378 DEFINE_OP(op_define_accessor_property)379 386 380 387 DEFINE_OP(op_ret) … … 383 390 DEFINE_OP(op_urshift) 384 391 DEFINE_OP(op_set_function_name) 385 DEFINE_OP(op_strcat)386 392 DEFINE_OP(op_stricteq) 387 393 DEFINE_OP(op_sub) … … 390 396 DEFINE_OP(op_switch_string) 391 397 DEFINE_OP(op_throw) 392 DEFINE_OP(op_throw_static_error)393 398 DEFINE_OP(op_to_number) 394 399 DEFINE_OP(op_to_string) … … 396 401 397 402 DEFINE_OP(op_resolve_scope) 398 DEFINE_OP(op_resolve_scope_for_hoisting_func_decl_in_eval)399 403 DEFINE_OP(op_get_from_scope) 400 404 DEFINE_OP(op_put_to_scope) … … 402 406 DEFINE_OP(op_put_to_arguments) 403 407 404 DEFINE_OP(op_get_enumerable_length)405 DEFINE_OP(op_has_generic_property)406 408 DEFINE_OP(op_has_structure_property) 407 409 DEFINE_OP(op_has_indexed_property) 408 410 DEFINE_OP(op_get_direct_pname) 409 DEFINE_OP(op_get_property_enumerator)410 411 DEFINE_OP(op_enumerator_structure_pname) 411 412 DEFINE_OP(op_enumerator_generic_pname) 412 DEFINE_OP(op_to_index_string)413 413 414 414 DEFINE_OP(op_log_shadow_chicken_prologue) -
trunk/Source/JavaScriptCore/jit/JIT.h
r223813 r223823 478 478 void emit_op_create_this(Instruction*); 479 479 void emit_op_to_this(Instruction*); 480 void emit_op_create_direct_arguments(Instruction*);481 void emit_op_create_scoped_arguments(Instruction*);482 void emit_op_create_cloned_arguments(Instruction*);483 480 void emit_op_get_argument(Instruction*); 484 481 void emit_op_argument_count(Instruction*); 485 void emit_op_create_rest(Instruction*);486 482 void emit_op_get_rest_length(Instruction*); 487 483 void emit_op_check_tdz(Instruction*); 488 void emit_op_assert(Instruction*);489 484 void emit_op_identity_with_profile(Instruction*); 490 void emit_op_unreachable(Instruction*);491 485 void emit_op_debug(Instruction*); 492 486 void emit_op_del_by_id(Instruction*); … … 503 497 void emit_op_get_by_id(Instruction*); 504 498 void emit_op_get_by_id_with_this(Instruction*); 505 void emit_op_get_by_val_with_this(Instruction*);506 499 void emit_op_get_arguments_length(Instruction*); 507 500 void emit_op_get_by_val(Instruction*); … … 546 539 void emit_op_new_array_with_size(Instruction*); 547 540 void emit_op_new_array_buffer(Instruction*); 548 void emit_op_new_array_with_spread(Instruction*);549 void emit_op_spread(Instruction*);550 541 void emit_op_new_func(Instruction*); 551 542 void emit_op_new_func_exp(Instruction*); … … 562 553 void emit_op_dec(Instruction*); 563 554 void emit_op_inc(Instruction*); 564 void emit_op_pow(Instruction*);565 555 void emit_op_profile_type(Instruction*); 566 556 void emit_op_profile_control_flow(Instruction*); 567 void emit_op_push_with_scope(Instruction*);568 void emit_op_create_lexical_environment(Instruction*);569 557 void emit_op_get_parent_scope(Instruction*); 570 558 void emit_op_put_by_id(Instruction*); 571 void emit_op_put_by_id_with_this(Instruction*);572 559 void emit_op_put_by_index(Instruction*); 573 560 void emit_op_put_by_val(Instruction*); 574 void emit_op_put_by_val_with_this(Instruction*);575 561 void emit_op_put_getter_by_id(Instruction*); 576 562 void emit_op_put_setter_by_id(Instruction*); … … 578 564 void emit_op_put_getter_by_val(Instruction*); 579 565 void emit_op_put_setter_by_val(Instruction*); 580 void emit_op_define_data_property(Instruction*);581 void emit_op_define_accessor_property(Instruction*);582 566 void emit_op_ret(Instruction*); 583 567 void emit_op_rshift(Instruction*); 584 568 void emit_op_set_function_name(Instruction*); 585 void emit_op_strcat(Instruction*);586 569 void emit_op_stricteq(Instruction*); 587 570 void emit_op_sub(Instruction*); … … 591 574 void emit_op_tear_off_arguments(Instruction*); 592 575 void emit_op_throw(Instruction*); 593 void emit_op_throw_static_error(Instruction*);594 576 void emit_op_to_number(Instruction*); 595 577 void emit_op_to_string(Instruction*); … … 598 580 void emit_op_unsigned(Instruction*); 599 581 void emit_op_urshift(Instruction*); 600 void emit_op_get_enumerable_length(Instruction*);601 void emit_op_has_generic_property(Instruction*);602 582 void emit_op_has_structure_property(Instruction*); 603 583 void emit_op_has_indexed_property(Instruction*); 604 584 void emit_op_get_direct_pname(Instruction*); 605 void emit_op_get_property_enumerator(Instruction*);606 585 void emit_op_enumerator_structure_pname(Instruction*); 607 586 void emit_op_enumerator_generic_pname(Instruction*); 608 void emit_op_to_index_string(Instruction*);609 587 void emit_op_log_shadow_chicken_prologue(Instruction*); 610 588 void emit_op_log_shadow_chicken_tail(Instruction*); … … 672 650 673 651 void emit_op_resolve_scope(Instruction*); 674 void emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction*);675 652 void emit_op_get_from_scope(Instruction*); 676 653 void emit_op_put_to_scope(Instruction*); -
trunk/Source/JavaScriptCore/jit/JITArithmetic.cpp
r223318 r223823 473 473 /* ------------------------------ BEGIN: OP_MOD ------------------------------ */ 474 474 475 #if CPU(X86 ) || CPU(X86_64)475 #if CPU(X86_64) 476 476 477 477 void JIT::emit_op_mod(Instruction* currentInstruction) … … 517 517 } 518 518 519 #else // CPU(X86 ) || CPU(X86_64)519 #else // CPU(X86_64) 520 520 521 521 void JIT::emit_op_mod(Instruction* currentInstruction) … … 530 530 } 531 531 532 #endif // CPU(X86 ) || CPU(X86_64)532 #endif // CPU(X86_64) 533 533 534 534 /* ------------------------------ END: OP_MOD ------------------------------ */ … … 1086 1086 } 1087 1087 1088 void JIT::emit_op_pow(Instruction* currentInstruction)1089 {1090 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_pow);1091 slowPathCall.call();1092 }1093 1094 1088 /* ------------------------------ END: OP_ADD, OP_SUB, OP_MUL, OP_POW ------------------------------ */ 1095 1089 -
trunk/Source/JavaScriptCore/jit/JITArithmetic32_64.cpp
r223318 r223823 380 380 void JIT::emitSlow_op_mod(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter) 381 381 { 382 #if CPU(X86) || CPU(X86_64)382 #if CPU(X86) 383 383 linkSlowCase(iter); 384 384 linkSlowCase(iter); -
trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp
r223813 r223823 325 325 } 326 326 327 void JIT::emit_op_strcat(Instruction* currentInstruction)328 {329 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_strcat);330 slowPathCall.call();331 }332 333 327 void JIT::emit_op_not(Instruction* currentInstruction) 334 328 { … … 459 453 callOperationNoExceptionCheck(operationThrow, regT0); 460 454 jumpToExceptionHandler(*vm()); 461 }462 463 void JIT::emit_op_push_with_scope(Instruction* currentInstruction)464 {465 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_push_with_scope);466 slowPathCall.call();467 455 } 468 456 … … 579 567 } 580 568 581 void JIT::emit_op_assert(Instruction* currentInstruction)582 {583 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_assert);584 slowPathCall.call();585 }586 587 569 void JIT::emit_op_identity_with_profile(Instruction*) 588 570 { 589 571 // We don't need to do anything here... 590 }591 592 void JIT::emit_op_create_lexical_environment(Instruction* currentInstruction)593 {594 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_lexical_environment);595 slowPathCall.call();596 572 } 597 573 … … 969 945 UNUSED_PARAM(iter); 970 946 #endif 971 }972 973 void JIT::emit_op_throw_static_error(Instruction* currentInstruction)974 {975 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_throw_static_error);976 slowPathCall.call();977 947 } 978 948 … … 1127 1097 const JSValue* values = codeBlock()->constantBuffer(valuesIndex); 1128 1098 callOperation(operationNewArrayBufferWithProfile, dst, currentInstruction[4].u.arrayAllocationProfile, values, size); 1129 }1130 1131 void JIT::emit_op_new_array_with_spread(Instruction* currentInstruction)1132 {1133 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_new_array_with_spread);1134 slowPathCall.call();1135 }1136 1137 void JIT::emit_op_spread(Instruction* currentInstruction)1138 {1139 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_spread);1140 slowPathCall.call();1141 1099 } 1142 1100 … … 1439 1397 #endif // USE(JSVALUE64) 1440 1398 1441 void JIT::emit_op_get_enumerable_length(Instruction* currentInstruction)1442 {1443 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_get_enumerable_length);1444 slowPathCall.call();1445 }1446 1447 1399 void JIT::emitSlow_op_has_structure_property(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter) 1448 1400 { … … 1451 1403 1452 1404 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_has_structure_property); 1453 slowPathCall.call();1454 }1455 1456 void JIT::emit_op_has_generic_property(Instruction* currentInstruction)1457 {1458 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_has_generic_property);1459 slowPathCall.call();1460 }1461 1462 void JIT::emit_op_get_property_enumerator(Instruction* currentInstruction)1463 {1464 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_get_property_enumerator);1465 slowPathCall.call();1466 }1467 1468 void JIT::emit_op_to_index_string(Instruction* currentInstruction)1469 {1470 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_to_index_string);1471 1405 slowPathCall.call(); 1472 1406 } … … 1482 1416 } 1483 1417 1484 void JIT::emit_op_create_direct_arguments(Instruction* currentInstruction)1485 {1486 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_direct_arguments);1487 slowPathCall.call();1488 }1489 1490 void JIT::emit_op_create_scoped_arguments(Instruction* currentInstruction)1491 {1492 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_scoped_arguments);1493 slowPathCall.call();1494 }1495 1496 void JIT::emit_op_create_cloned_arguments(Instruction* currentInstruction)1497 {1498 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_cloned_arguments);1499 slowPathCall.call();1500 }1501 1502 1418 void JIT::emit_op_argument_count(Instruction* currentInstruction) 1503 1419 { … … 1508 1424 boxInt32(regT0, result); 1509 1425 emitPutVirtualRegister(dst, result); 1510 }1511 1512 void JIT::emit_op_create_rest(Instruction* currentInstruction)1513 {1514 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_rest);1515 slowPathCall.call();1516 1426 } 1517 1427 … … 1568 1478 } 1569 1479 1570 void JIT::emit_op_unreachable(Instruction* currentInstruction)1571 {1572 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_unreachable);1573 slowPathCall.call();1574 }1575 1576 1480 } // namespace JSC 1577 1481 -
trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
r223813 r223823 349 349 } 350 350 351 void JIT::emit_op_strcat(Instruction* currentInstruction)352 {353 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_strcat);354 slowPathCall.call();355 }356 357 351 void JIT::emit_op_not(Instruction* currentInstruction) 358 352 { … … 689 683 callOperationNoExceptionCheck(operationThrow, regT1, regT0); 690 684 jumpToExceptionHandler(*vm()); 691 }692 693 void JIT::emit_op_push_with_scope(Instruction* currentInstruction)694 {695 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_push_with_scope);696 slowPathCall.call();697 685 } 698 686 … … 801 789 } 802 790 803 void JIT::emit_op_assert(Instruction* currentInstruction)804 {805 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_assert);806 slowPathCall.call();807 }808 809 791 void JIT::emit_op_identity_with_profile(Instruction*) 810 792 { 811 793 // We don't need to do anything here... 812 }813 814 void JIT::emit_op_create_lexical_environment(Instruction* currentInstruction)815 {816 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_create_lexical_environment);817 slowPathCall.call();818 794 } 819 795 -
trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp
r222136 r223823 336 336 } 337 337 338 void JIT::emit_op_put_by_val_with_this(Instruction* currentInstruction)339 {340 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_put_by_val_with_this);341 slowPathCall.call();342 }343 344 338 JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump& badType, IndexingType indexingShape) 345 339 { … … 659 653 } 660 654 661 void JIT::emit_op_get_by_val_with_this(Instruction* currentInstruction)662 {663 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_get_by_val_with_this);664 slowPathCall.call();665 }666 667 655 void JIT::emitSlow_op_get_by_id(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter) 668 656 { … … 728 716 729 717 m_putByIds.append(gen); 730 }731 732 void JIT::emit_op_put_by_id_with_this(Instruction* currentInstruction)733 {734 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_put_by_id_with_this);735 slowPathCall.call();736 718 } 737 719 … … 768 750 loadPtr(Address(regT0, JSScope::offsetOfNext()), regT0); 769 751 emitPutVirtualRegister(dst); 770 }771 772 void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction)773 {774 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval);775 slowPathCall.call();776 752 } 777 753 … … 1836 1812 } 1837 1813 1838 void JIT::emit_op_define_data_property(Instruction* currentInstruction)1839 {1840 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_define_data_property);1841 slowPathCall.call();1842 }1843 1844 void JIT::emit_op_define_accessor_property(Instruction* currentInstruction)1845 {1846 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_define_accessor_property);1847 slowPathCall.call();1848 }1849 1850 1814 } // namespace JSC 1851 1815 -
trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp
r222136 r223823 772 772 } 773 773 774 void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction)775 {776 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval);777 slowPathCall.call();778 }779 780 774 void JIT::emit_op_resolve_scope(Instruction* currentInstruction) 781 775 { … … 1216 1210 } 1217 1211 1218 void JIT::emit_op_get_by_val_with_this(Instruction* currentInstruction)1219 {1220 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_get_by_val_with_this);1221 slowPathCall.call();1222 }1223 1224 void JIT::emit_op_put_by_id_with_this(Instruction* currentInstruction)1225 {1226 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_put_by_id_with_this);1227 slowPathCall.call();1228 }1229 1230 void JIT::emit_op_put_by_val_with_this(Instruction* currentInstruction)1231 {1232 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_put_by_val_with_this);1233 slowPathCall.call();1234 }1235 1236 1212 } // namespace JSC 1237 1213
Note: See TracChangeset
for help on using the changeset viewer.