LLIntThunksProxy.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright (C) 2014 Sony Computer Entertainment Inc.
  2. // All Rights Reserved.
  3. #include "config.h"
  4. #include "JSCBridge.h"
  5. #include "JSCBridgeToll.h"
  6. #include "LLIntThunks.h"
  7. #include "MacroAssemblerCodeRef.h"
  8. #if ENABLE(JIT) && ENABLE(DETACHED_JIT) && !BUILDING_DETACHED_JIT
  9. #if ENABLE(LLINT) && !ENABLE(LLINT_C_LOOP)
  10. namespace JSC {
  11. namespace LLInt {
  12. MacroAssemblerCodeRef generateThunkWithJumpTo(VM* vm, void (*target)(), const char *thunkKind)
  13. {
  14. PROFILE_FUNCTION_CALL;
  15. JSCBridge * const bridge(JSCBridge::sharedInstance());
  16. OwnPtr<JSCBridge::Payload> payload(adoptPtr(bridge->createPayload()));
  17. payload->sendArgument(reinterpret_cast<uintptr_t>(vm));
  18. payload->sendArgument(reinterpret_cast<uintptr_t>(target));
  19. OwnPtr<JSCBridgeToll> toll(adoptPtr(bridge->createToll(payload.get())));
  20. toll->prepare(vm);
  21. MacroAssemblerCodeRef * sharedCodeRef(reinterpret_cast<MacroAssemblerCodeRef *>(bridge->requestCompilerTask(JSCBridge::e_LLINT_generateThunk)));
  22. MacroAssemblerCodeRef codeRef(*sharedCodeRef);
  23. sharedDelete<MacroAssemblerCodeRef>(sharedCodeRef);
  24. return codeRef;
  25. }
  26. } // namespace LLInt
  27. } // namespace JSC
  28. #endif
  29. #endif