Ignore:
Timestamp:
May 7, 2014, 7:35:22 PM (11 years ago)
Author:
[email protected]
Message:

Source/JavaScriptCore: Make Executable::clearCode() actually clear all of the entrypoints, and
clean up some other FTL-related calling convention stuff.
<rdar://problem/16720172>

Rubber stamped by Mark Hahnenberg.

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::Worklist):
(JSC::DFG::Worklist::finishCreation):
(JSC::DFG::Worklist::create):
(JSC::DFG::ensureGlobalDFGWorklist):
(JSC::DFG::ensureGlobalFTLWorklist):

  • dfg/DFGWorklist.h:
  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::dump):

  • heap/CodeBlockSet.h:
  • runtime/Executable.cpp:

(JSC::ExecutableBase::clearCode):

Source/WTF: UNREACHABLE_FOR_PLATFORM() is meant to be a release crash.

Rubber stamped by Mark Hahnenberg..

  • wtf/Assertions.h:

(UNREACHABLE_FOR_PLATFORM):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r168443 r168459  
    12871287    return static_cast<char*>(address);
    12881288}
    1289 
    1290 // FIXME: Make calls work well. Currently they're a pure regression.
    1291 // https://bugs.webkit.org/show_bug.cgi?id=113621
    1292 EncodedJSValue JIT_OPERATION operationFTLCall(ExecState* exec)
    1293 {
    1294     ExecState* callerExec = exec->callerFrame();
    1295    
    1296     VM* vm = &callerExec->vm();
    1297     NativeCallFrameTracer tracer(vm, callerExec);
    1298    
    1299     JSValue callee = exec->calleeAsValue();
    1300     CallData callData;
    1301     CallType callType = getCallData(callee, callData);
    1302     if (callType == CallTypeNone) {
    1303         vm->throwException(callerExec, createNotAFunctionError(callerExec, callee));
    1304         return JSValue::encode(jsUndefined());
    1305     }
    1306    
    1307     return JSValue::encode(call(callerExec, callee, callType, callData, exec->thisValue(), exec));
    1308 }
    1309 
    1310 // FIXME: Make calls work well. Currently they're a pure regression.
    1311 // https://bugs.webkit.org/show_bug.cgi?id=113621
    1312 EncodedJSValue JIT_OPERATION operationFTLConstruct(ExecState* exec)
    1313 {
    1314     ExecState* callerExec = exec->callerFrame();
    1315    
    1316     VM* vm = &callerExec->vm();
    1317     NativeCallFrameTracer tracer(vm, callerExec);
    1318    
    1319     JSValue callee = exec->calleeAsValue();
    1320     ConstructData constructData;
    1321     ConstructType constructType = getConstructData(callee, constructData);
    1322     if (constructType == ConstructTypeNone) {
    1323         vm->throwException(callerExec, createNotAFunctionError(callerExec, callee));
    1324         return JSValue::encode(jsUndefined());
    1325     }
    1326    
    1327     return JSValue::encode(construct(callerExec, callee, constructType, constructData, exec));
    1328 }
    13291289#endif // ENABLE(FTL_JIT)
    13301290
Note: See TracChangeset for help on using the changeset viewer.