PrimitiveString.cpp 786 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibJS/Runtime/PrimitiveString.h>
  7. #include <LibJS/Runtime/VM.h>
  8. namespace JS {
  9. PrimitiveString::PrimitiveString(String string)
  10. : m_string(move(string))
  11. {
  12. }
  13. PrimitiveString::~PrimitiveString()
  14. {
  15. }
  16. PrimitiveString* js_string(Heap& heap, String string)
  17. {
  18. if (string.is_empty())
  19. return &heap.vm().empty_string();
  20. if (string.length() == 1 && (u8)string.characters()[0] < 0x80)
  21. return &heap.vm().single_ascii_character_string(string.characters()[0]);
  22. return heap.allocate_without_global_object<PrimitiveString>(move(string));
  23. }
  24. PrimitiveString* js_string(VM& vm, String string)
  25. {
  26. return js_string(vm.heap(), move(string));
  27. }
  28. }