diff -r c4b1341297e5 -r ba85a47ee414 src/StringPool.cpp --- a/src/StringPool.cpp Mon Jun 10 00:46:29 2013 +0100 +++ b/src/StringPool.cpp Mon Jun 10 01:04:43 2013 +0100 @@ -1,72 +1,72 @@ -/* - * Copyright (C) 2012 David Anderson - * - * This file is part of JITCraft. - * - * JITCraft is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) - * any later version. - * - * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * JITCraft. If not, see http://www.gnu.org/licenses/. - */ -#include "Zone.h" -#include "StringPool.h" -#include "Strings.h" -#include "Spaces.h" -#include "Spaces-inl.h" -#include "Heap-inl.h" - -using namespace ke; - -StringPool::StringPool(Zone *zone) - : zone_(zone), - set_(ZoneAllocatorPolicy()) -{ -} - -StringPool::~StringPool() -{ -} - -bool -StringPool::initialize() -{ - if (!set_.init(32)) - return false; - return true; -} - -String * -StringPool::add(const char *str, size_t length) -{ - StringSet::Insert i = set_.findForAdd(CharsAndLength(str, length)); - if (i.found()) - return *i; - - Local obj(zone_, String::New(zone_, str, length, Heap::Tenure_Old)); - if (!obj) - return NULL; - - set_.add(i, obj); - return obj; -} - -void -StringPool::sweep() -{ - for (StringSet::iterator i(&set_); !i.empty(); i.next()) { - String *obj = *i; - MarkBit bits = HeapChunk::GetMarkBit(obj); - if (HeapChunk::IsWhite(bits)) - i.erase(); - else - assert(HeapChunk::IsBlack(bits)); - } - set_.checkDensity(); -} +/* + * Copyright (C) 2012 David Anderson + * + * This file is part of JITCraft. + * + * JITCraft is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * JITCraft. If not, see http://www.gnu.org/licenses/. + */ +#include "Zone.h" +#include "StringPool.h" +#include "Strings.h" +#include "Spaces.h" +#include "Spaces-inl.h" +#include "Heap-inl.h" + +using namespace ke; + +StringPool::StringPool(Zone *zone) + : zone_(zone), + set_(ZoneAllocatorPolicy()) +{ +} + +StringPool::~StringPool() +{ +} + +bool +StringPool::initialize() +{ + if (!set_.init(32)) + return false; + return true; +} + +String * +StringPool::add(const char *str, size_t length) +{ + StringSet::Insert i = set_.findForAdd(CharsAndLength(str, length)); + if (i.found()) + return *i; + + Local obj(zone_, String::New(zone_, str, length, Heap::Tenure_Old)); + if (!obj) + return NULL; + + set_.add(i, obj); + return obj; +} + +void +StringPool::sweep() +{ + for (StringSet::iterator i(&set_); !i.empty(); i.next()) { + String *obj = *i; + MarkBit bits = HeapChunk::GetMarkBit(obj); + if (HeapChunk::IsWhite(bits)) + i.erase(); + else + assert(HeapChunk::IsBlack(bits)); + } + set_.checkDensity(); +}