JSVirtualMachinePrivate.h 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright (C) 2018 Apple Inc. All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions
  6. * are met:
  7. * 1. Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * 2. Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. *
  13. * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
  14. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  15. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  16. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
  17. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  18. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  19. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  20. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  21. * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  22. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  23. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24. */
  25. #include "JSExportMacros.h"
  26. #include <JavaScriptCore/JavaScript.h>
  27. #if JSC_OBJC_API_ENABLED
  28. #import <JavaScriptCore/JSVirtualMachine.h>
  29. @interface JSVirtualMachine(JSPrivate)
  30. /*!
  31. @method
  32. @discussion Shrinks the memory footprint of the VM by deleting various internal caches,
  33. running synchronous garbage collection, and releasing memory back to the OS. Note: this
  34. API waits until no JavaScript is running on the stack before it frees any memory. It's
  35. best to call this API when no JavaScript is running on the stack for this reason. However, if
  36. you do call this API when JavaScript is running on the stack, the API will wait until all JavaScript
  37. on the stack finishes running to free memory back to the OS. Therefore, calling this
  38. API may not synchronously free memory.
  39. */
  40. - (void)shrinkFootprintWhenIdle JSC_API_AVAILABLE(macosx(10.14), ios(12.0));
  41. #if ENABLE(DFG_JIT)
  42. /*!
  43. @method
  44. @abstract Set the number of threads to be used by the DFG JIT compiler.
  45. @discussion If called after the VM has been initialized, it will terminate
  46. threads until it meets the new limit or create new threads accordingly if the
  47. new limit is higher than the previous limit. If called before initialization,
  48. the Options value for the number of DFG threads will be updated to ensure the
  49. DFG compiler already starts with the up-to-date limit.
  50. @param numberOfThreads The number of threads the DFG compiler should use going forward
  51. @result The previous number of threads being used by the DFG compiler
  52. */
  53. + (NSUInteger)setNumberOfDFGCompilerThreads:(NSUInteger)numberOfThreads JSC_API_AVAILABLE(macosx(10.14), ios(12.0));
  54. /*!
  55. @method
  56. @abstract Set the number of threads to be used by the FTL JIT compiler.
  57. @discussion If called after the VM has been initialized, it will terminate
  58. threads until it meets the new limit or create new threads accordingly if the
  59. new limit is higher than the previous limit. If called before initialization,
  60. the Options value for the number of FTL threads will be updated to ensure the
  61. FTL compiler already starts with the up-to-date limit.
  62. @param numberOfThreads The number of threads the FTL compiler should use going forward
  63. @result The previous number of threads being used by the FTL compiler
  64. */
  65. + (NSUInteger)setNumberOfFTLCompilerThreads:(NSUInteger)numberOfThreads JSC_API_AVAILABLE(macosx(10.14), ios(12.0));
  66. #endif // ENABLE(DFG_JIT)
  67. @end
  68. #endif // JSC_OBJC_API_ENABLED