Ignore:
Timestamp:
Feb 22, 2009, 3:26:07 PM (16 years ago)
Author:
[email protected]
Message:

JavaScriptCore:

2009-02-22 Geoffrey Garen <[email protected]>

Reviewed by Sam Weinig.

Next step in splitting JIT functionality out of the Interpreter class:
Created a JITStubs class and renamed Interpreter::cti_* to JITStubs::cti_*.


Also, moved timeout checking into its own class, located in JSGlobalData,
so both the Interpreter and the JIT could have access to it.

  • JavaScriptCore.exp:
  • JavaScriptCore.pri:
  • JavaScriptCore.scons:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • JavaScriptCoreSources.bkl:
  • interpreter/CallFrame.h:
  • interpreter/Interpreter.cpp: (JSC::Interpreter::Interpreter): (JSC::Interpreter::privateExecute):
  • interpreter/Interpreter.h:
  • interpreter/Register.h:
  • jit/JIT.cpp: (JSC::): (JSC::JIT::emitTimeoutCheck): (JSC::JIT::privateCompileMainPass): (JSC::JIT::privateCompileSlowCases): (JSC::JIT::privateCompile): (JSC::JIT::privateCompileCTIMachineTrampolines):
  • jit/JIT.h:
  • jit/JITArithmetic.cpp: (JSC::JIT::compileFastArithSlow_op_lshift): (JSC::JIT::compileFastArithSlow_op_rshift): (JSC::JIT::compileFastArithSlow_op_bitand): (JSC::JIT::compileFastArithSlow_op_mod): (JSC::JIT::compileFastArith_op_mod): (JSC::JIT::compileFastArithSlow_op_post_inc): (JSC::JIT::compileFastArithSlow_op_post_dec): (JSC::JIT::compileFastArithSlow_op_pre_inc): (JSC::JIT::compileFastArithSlow_op_pre_dec): (JSC::JIT::compileFastArith_op_add): (JSC::JIT::compileFastArith_op_mul): (JSC::JIT::compileFastArith_op_sub): (JSC::JIT::compileBinaryArithOpSlowCase): (JSC::JIT::compileFastArithSlow_op_add): (JSC::JIT::compileFastArithSlow_op_mul):
  • jit/JITCall.cpp: (JSC::JIT::compileOpCall): (JSC::JIT::compileOpCallSlowCase):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::compileGetByIdHotPath): (JSC::JIT::compilePutByIdHotPath): (JSC::JIT::compileGetByIdSlowCase): (JSC::JIT::compilePutByIdSlowCase): (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::patchGetByIdSelf): (JSC::JIT::patchPutByIdReplace): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdSelf): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompilePutByIdReplace):
  • jit/JITStubs.cpp: (JSC::JITStubs::tryCachePutByID): (JSC::JITStubs::tryCacheGetByID): (JSC::JITStubs::cti_op_convert_this): (JSC::JITStubs::cti_op_end): (JSC::JITStubs::cti_op_add): (JSC::JITStubs::cti_op_pre_inc): (JSC::JITStubs::cti_timeout_check): (JSC::JITStubs::cti_register_file_check): (JSC::JITStubs::cti_op_loop_if_less): (JSC::JITStubs::cti_op_loop_if_lesseq): (JSC::JITStubs::cti_op_new_object): (JSC::JITStubs::cti_op_put_by_id_generic): (JSC::JITStubs::cti_op_get_by_id_generic): (JSC::JITStubs::cti_op_put_by_id): (JSC::JITStubs::cti_op_put_by_id_second): (JSC::JITStubs::cti_op_put_by_id_fail): (JSC::JITStubs::cti_op_get_by_id): (JSC::JITStubs::cti_op_get_by_id_second): (JSC::JITStubs::cti_op_get_by_id_self_fail): (JSC::JITStubs::cti_op_get_by_id_proto_list): (JSC::JITStubs::cti_op_get_by_id_proto_list_full): (JSC::JITStubs::cti_op_get_by_id_proto_fail): (JSC::JITStubs::cti_op_get_by_id_array_fail): (JSC::JITStubs::cti_op_get_by_id_string_fail): (JSC::JITStubs::cti_op_instanceof): (JSC::JITStubs::cti_op_del_by_id): (JSC::JITStubs::cti_op_mul): (JSC::JITStubs::cti_op_new_func): (JSC::JITStubs::cti_op_call_JSFunction): (JSC::JITStubs::cti_op_call_arityCheck): (JSC::JITStubs::cti_vm_dontLazyLinkCall): (JSC::JITStubs::cti_vm_lazyLinkCall): (JSC::JITStubs::cti_op_push_activation): (JSC::JITStubs::cti_op_call_NotJSFunction): (JSC::JITStubs::cti_op_create_arguments): (JSC::JITStubs::cti_op_create_arguments_no_params): (JSC::JITStubs::cti_op_tear_off_activation): (JSC::JITStubs::cti_op_tear_off_arguments): (JSC::JITStubs::cti_op_profile_will_call): (JSC::JITStubs::cti_op_profile_did_call): (JSC::JITStubs::cti_op_ret_scopeChain): (JSC::JITStubs::cti_op_new_array): (JSC::JITStubs::cti_op_resolve): (JSC::JITStubs::cti_op_construct_JSConstruct): (JSC::JITStubs::cti_op_construct_NotJSConstruct): (JSC::JITStubs::cti_op_get_by_val): (JSC::JITStubs::cti_op_get_by_val_byte_array): (JSC::JITStubs::cti_op_resolve_func): (JSC::JITStubs::cti_op_sub): (JSC::JITStubs::cti_op_put_by_val): (JSC::JITStubs::cti_op_put_by_val_array): (JSC::JITStubs::cti_op_put_by_val_byte_array): (JSC::JITStubs::cti_op_lesseq): (JSC::JITStubs::cti_op_loop_if_true): (JSC::JITStubs::cti_op_negate): (JSC::JITStubs::cti_op_resolve_base): (JSC::JITStubs::cti_op_resolve_skip): (JSC::JITStubs::cti_op_resolve_global): (JSC::JITStubs::cti_op_div): (JSC::JITStubs::cti_op_pre_dec): (JSC::JITStubs::cti_op_jless): (JSC::JITStubs::cti_op_not): (JSC::JITStubs::cti_op_jtrue): (JSC::JITStubs::cti_op_post_inc): (JSC::JITStubs::cti_op_eq): (JSC::JITStubs::cti_op_lshift): (JSC::JITStubs::cti_op_bitand): (JSC::JITStubs::cti_op_rshift): (JSC::JITStubs::cti_op_bitnot): (JSC::JITStubs::cti_op_resolve_with_base): (JSC::JITStubs::cti_op_new_func_exp): (JSC::JITStubs::cti_op_mod): (JSC::JITStubs::cti_op_less): (JSC::JITStubs::cti_op_neq): (JSC::JITStubs::cti_op_post_dec): (JSC::JITStubs::cti_op_urshift): (JSC::JITStubs::cti_op_bitxor): (JSC::JITStubs::cti_op_new_regexp): (JSC::JITStubs::cti_op_bitor): (JSC::JITStubs::cti_op_call_eval): (JSC::JITStubs::cti_op_throw): (JSC::JITStubs::cti_op_get_pnames): (JSC::JITStubs::cti_op_next_pname): (JSC::JITStubs::cti_op_push_scope): (JSC::JITStubs::cti_op_pop_scope): (JSC::JITStubs::cti_op_typeof): (JSC::JITStubs::cti_op_is_undefined): (JSC::JITStubs::cti_op_is_boolean): (JSC::JITStubs::cti_op_is_number): (JSC::JITStubs::cti_op_is_string): (JSC::JITStubs::cti_op_is_object): (JSC::JITStubs::cti_op_is_function): (JSC::JITStubs::cti_op_stricteq): (JSC::JITStubs::cti_op_nstricteq): (JSC::JITStubs::cti_op_to_jsnumber): (JSC::JITStubs::cti_op_in): (JSC::JITStubs::cti_op_push_new_scope): (JSC::JITStubs::cti_op_jmp_scopes): (JSC::JITStubs::cti_op_put_by_index): (JSC::JITStubs::cti_op_switch_imm): (JSC::JITStubs::cti_op_switch_char): (JSC::JITStubs::cti_op_switch_string): (JSC::JITStubs::cti_op_del_by_val): (JSC::JITStubs::cti_op_put_getter): (JSC::JITStubs::cti_op_put_setter): (JSC::JITStubs::cti_op_new_error): (JSC::JITStubs::cti_op_debug): (JSC::JITStubs::cti_vm_throw):
  • jit/JITStubs.h: (JSC::):
  • runtime/JSFunction.h:
  • runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
  • runtime/JSGlobalData.h:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
  • runtime/TimeoutChecker.cpp: Copied from interpreter/Interpreter.cpp. (JSC::TimeoutChecker::TimeoutChecker): (JSC::TimeoutChecker::reset): (JSC::TimeoutChecker::didTimeOut):
  • runtime/TimeoutChecker.h: Copied from interpreter/Interpreter.h. (JSC::TimeoutChecker::setTimeoutInterval): (JSC::TimeoutChecker::ticksUntilNextCheck): (JSC::TimeoutChecker::start): (JSC::TimeoutChecker::stop):

WebCore:

2009-02-20 Geoffrey Garen <[email protected]>

Reviewed by Sam Weinig.

Updated for JavaScriptCore changes to timeout checking.

  • bindings/js/JSCustomPositionCallback.cpp: (WebCore::JSCustomPositionCallback::handleEvent):
  • bindings/js/JSCustomPositionErrorCallback.cpp: (WebCore::JSCustomPositionErrorCallback::handleEvent):
  • bindings/js/JSCustomSQLStatementCallback.cpp: (WebCore::JSCustomSQLStatementCallback::handleEvent):
  • bindings/js/JSCustomSQLStatementErrorCallback.cpp: (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
  • bindings/js/JSCustomSQLTransactionCallback.cpp: (WebCore::JSCustomSQLTransactionCallback::handleEvent):
  • bindings/js/JSCustomSQLTransactionErrorCallback.cpp: (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
  • bindings/js/JSCustomVoidCallback.cpp: (WebCore::JSCustomVoidCallback::handleEvent):
  • bindings/js/JSCustomXPathNSResolver.cpp: (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::JSDOMWindowBase): (WebCore::JSDOMWindowBase::commonJSGlobalData):
  • bindings/js/JSEventListener.cpp: (WebCore::JSAbstractEventListener::handleEvent):
  • bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::executeFunctionInContext):
  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::evaluate):
  • bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): (WebCore::WorkerScriptController::forbidExecution):
  • bindings/objc/WebScriptObject.mm: (-[WebScriptObject callWebScriptMethod:withArguments:]): (-[WebScriptObject evaluateWebScript:]):
  • bridge/NP_jsobject.cpp: (_NPN_InvokeDefault): (_NPN_Invoke): (_NPN_Evaluate): (_NPN_Construct):
  • bridge/jni/jni_jsobject.mm: (JavaJSObject::call): (JavaJSObject::eval):
File:
1 edited

Legend:

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

    r41089 r41126  
    8686    emitPutJITStubArg(regT0, 1);
    8787    emitPutJITStubArg(regT2, 2);
    88     emitCTICall(Interpreter::cti_op_lshift);
     88    emitCTICall(JITStubs::cti_op_lshift);
    8989    emitPutVirtualRegister(result);
    9090}
     
    135135
    136136    emitPutJITStubArg(regT0, 1);
    137     emitCTICall(Interpreter::cti_op_rshift);
     137    emitCTICall(JITStubs::cti_op_rshift);
    138138    emitPutVirtualRegister(result);
    139139}
     
    183183        emitPutJITStubArg(regT1, 2);
    184184    }
    185     emitCTICall(Interpreter::cti_op_bitand);
     185    emitCTICall(JITStubs::cti_op_bitand);
    186186    emitPutVirtualRegister(result);
    187187}
     
    224224    emitPutJITStubArg(X86::eax, 1);
    225225    emitPutJITStubArg(X86::ecx, 2);
    226     emitCTICall(Interpreter::cti_op_mod);
     226    emitCTICall(JITStubs::cti_op_mod);
    227227    emitPutVirtualRegister(result);
    228228}
     
    232232    emitPutJITStubArgFromVirtualRegister(op1, 1, regT2);
    233233    emitPutJITStubArgFromVirtualRegister(op2, 2, regT2);
    234     emitCTICall(Interpreter::cti_op_mod);
     234    emitCTICall(JITStubs::cti_op_mod);
    235235    emitPutVirtualRegister(result);
    236236}
     
    261261    linkSlowCase(iter);
    262262    emitPutJITStubArg(regT0, 1);
    263     emitCTICall(Interpreter::cti_op_post_inc);
     263    emitCTICall(JITStubs::cti_op_post_inc);
    264264    emitPutVirtualRegister(srcDst, regT1);
    265265    emitPutVirtualRegister(result);
     
    286286    linkSlowCase(iter);
    287287    emitPutJITStubArg(regT0, 1);
    288     emitCTICall(Interpreter::cti_op_post_dec);
     288    emitCTICall(JITStubs::cti_op_post_dec);
    289289    emitPutVirtualRegister(srcDst, regT1);
    290290    emitPutVirtualRegister(result);
     
    311311    notImm.link(this);
    312312    emitPutJITStubArg(regT0, 1);
    313     emitCTICall(Interpreter::cti_op_pre_inc);
     313    emitCTICall(JITStubs::cti_op_pre_inc);
    314314    emitPutVirtualRegister(srcDst);
    315315}
     
    335335    notImm.link(this);
    336336    emitPutJITStubArg(regT0, 1);
    337     emitCTICall(Interpreter::cti_op_pre_dec);
     337    emitCTICall(JITStubs::cti_op_pre_dec);
    338338    emitPutVirtualRegister(srcDst);
    339339}
     
    350350    emitPutJITStubArgFromVirtualRegister(op1, 1, regT2);
    351351    emitPutJITStubArgFromVirtualRegister(op2, 2, regT2);
    352     emitCTICall(Interpreter::cti_op_add);
     352    emitCTICall(JITStubs::cti_op_add);
    353353    emitPutVirtualRegister(result);
    354354}
     
    366366    emitPutJITStubArgFromVirtualRegister(op1, 1, regT2);
    367367    emitPutJITStubArgFromVirtualRegister(op2, 2, regT2);
    368     emitCTICall(Interpreter::cti_op_mul);
     368    emitCTICall(JITStubs::cti_op_mul);
    369369    emitPutVirtualRegister(result);
    370370}
     
    382382    emitPutJITStubArgFromVirtualRegister(op1, 1, regT2);
    383383    emitPutJITStubArgFromVirtualRegister(op2, 2, regT2);
    384     emitCTICall(Interpreter::cti_op_sub);
     384    emitCTICall(JITStubs::cti_op_sub);
    385385    emitPutVirtualRegister(result);
    386386}
     
    426426    emitPutJITStubArg(X86::edx, 2);
    427427    if (opcodeID == op_add)
    428         emitCTICall(Interpreter::cti_op_add);
     428        emitCTICall(JITStubs::cti_op_add);
    429429    else if (opcodeID == op_sub)
    430         emitCTICall(Interpreter::cti_op_sub);
     430        emitCTICall(JITStubs::cti_op_sub);
    431431    else {
    432432        ASSERT(opcodeID == op_mul);
    433         emitCTICall(Interpreter::cti_op_mul);
     433        emitCTICall(JITStubs::cti_op_mul);
    434434    }
    435435    Jump end = jump();
     
    481481        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    482482        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    483         emitCTICall(Interpreter::cti_op_add);
     483        emitCTICall(JITStubs::cti_op_add);
    484484        emitPutVirtualRegister(result);
    485485        return;
     
    513513        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    514514        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    515         emitCTICall(Interpreter::cti_op_add);
     515        emitCTICall(JITStubs::cti_op_add);
    516516    } else if (isOperandConstantImmediateInt(op2)) {
    517517        linkSlowCase(iter);
     
    519519        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    520520        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    521         emitCTICall(Interpreter::cti_op_add);
     521        emitCTICall(JITStubs::cti_op_add);
    522522    } else
    523523        compileBinaryArithOpSlowCase(op_add, iter, result, op1, op2, types);
     
    564564        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    565565        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    566         emitCTICall(Interpreter::cti_op_mul);
     566        emitCTICall(JITStubs::cti_op_mul);
    567567    } else
    568568        compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, types);
     
    858858    emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
    859859    if (opcodeID == op_add)
    860         emitCTICall(Interpreter::cti_op_add);
     860        emitCTICall(JITStubs::cti_op_add);
    861861    else if (opcodeID == op_sub)
    862         emitCTICall(Interpreter::cti_op_sub);
     862        emitCTICall(JITStubs::cti_op_sub);
    863863    else {
    864864        ASSERT(opcodeID == op_mul);
    865         emitCTICall(Interpreter::cti_op_mul);
     865        emitCTICall(JITStubs::cti_op_mul);
    866866    }
    867867    emitPutVirtualRegister(dst);
     
    893893            emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    894894            emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    895             emitCTICall(Interpreter::cti_op_add);
     895            emitCTICall(JITStubs::cti_op_add);
    896896            emitPutVirtualRegister(result);
    897897        }
     
    911911        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    912912        emitPutJITStubArg(X86::eax, 2);
    913         emitCTICall(Interpreter::cti_op_add);
     913        emitCTICall(JITStubs::cti_op_add);
    914914        emitPutVirtualRegister(result);
    915915    } else if (isOperandConstantImmediateInt(op2)) {
     
    920920        emitPutJITStubArg(X86::eax, 1);
    921921        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    922         emitCTICall(Interpreter::cti_op_add);
     922        emitCTICall(JITStubs::cti_op_add);
    923923        emitPutVirtualRegister(result);
    924924    } else {
     
    969969        emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
    970970        emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
    971         emitCTICall(Interpreter::cti_op_mul);
     971        emitCTICall(JITStubs::cti_op_mul);
    972972        emitPutVirtualRegister(result);
    973973    } else
Note: See TracChangeset for help on using the changeset viewer.