Protect.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (C) 2004, 2008, 2009 Apple Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Library General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Library General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Library General Public License
  15. * along with this library; see the file COPYING.LIB. If not, write to
  16. * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  17. * Boston, MA 02110-1301, USA.
  18. *
  19. */
  20. #ifndef Protect_h
  21. #define Protect_h
  22. #include "Heap.h"
  23. #include "JSCJSValue.h"
  24. namespace JSC {
  25. inline void gcProtect(JSCell* val)
  26. {
  27. Heap::heap(val)->protect(val);
  28. }
  29. inline void gcUnprotect(JSCell* val)
  30. {
  31. Heap::heap(val)->unprotect(val);
  32. }
  33. inline void gcProtectNullTolerant(JSCell* val)
  34. {
  35. if (val)
  36. gcProtect(val);
  37. }
  38. inline void gcUnprotectNullTolerant(JSCell* val)
  39. {
  40. if (val)
  41. gcUnprotect(val);
  42. }
  43. inline void gcProtect(JSValue value)
  44. {
  45. if (value && value.isCell())
  46. gcProtect(value.asCell());
  47. }
  48. inline void gcUnprotect(JSValue value)
  49. {
  50. if (value && value.isCell())
  51. gcUnprotect(value.asCell());
  52. }
  53. } // namespace JSC
  54. #endif // Protect_h