11d54e73444e017d3a65234e0f193846f3e27472bIan Rogers/*
21d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * Copyright (C) 2011 The Android Open Source Project
31d54e73444e017d3a65234e0f193846f3e27472bIan Rogers *
41d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * Licensed under the Apache License, Version 2.0 (the "License");
51d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * you may not use this file except in compliance with the License.
61d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * You may obtain a copy of the License at
71d54e73444e017d3a65234e0f193846f3e27472bIan Rogers *
81d54e73444e017d3a65234e0f193846f3e27472bIan Rogers *      http://www.apache.org/licenses/LICENSE-2.0
91d54e73444e017d3a65234e0f193846f3e27472bIan Rogers *
101d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * Unless required by applicable law or agreed to in writing, software
111d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * distributed under the License is distributed on an "AS IS" BASIS,
121d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * See the License for the specific language governing permissions and
141d54e73444e017d3a65234e0f193846f3e27472bIan Rogers * limitations under the License.
151d54e73444e017d3a65234e0f193846f3e27472bIan Rogers */
161d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
171d54e73444e017d3a65234e0f193846f3e27472bIan Rogers#include "space.h"
181d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
191d54e73444e017d3a65234e0f193846f3e27472bIan Rogers#include "base/logging.h"
201d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
211d54e73444e017d3a65234e0f193846f3e27472bIan Rogersnamespace art {
221d54e73444e017d3a65234e0f193846f3e27472bIan Rogersnamespace gc {
231d54e73444e017d3a65234e0f193846f3e27472bIan Rogersnamespace space {
241d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
2502c8cc6d1312a2b55533f02f6369dc7c94672f90Brian CarlstromSpace::Space(const std::string& name, GcRetentionPolicy gc_retention_policy)
2602c8cc6d1312a2b55533f02f6369dc7c94672f90Brian Carlstrom    : name_(name), gc_retention_policy_(gc_retention_policy) { }
271d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
281d54e73444e017d3a65234e0f193846f3e27472bIan Rogersvoid Space::Dump(std::ostream& os) const {
291d54e73444e017d3a65234e0f193846f3e27472bIan Rogers  os << GetName() << ":" << GetGcRetentionPolicy();
301d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}
311d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
321d54e73444e017d3a65234e0f193846f3e27472bIan Rogersstd::ostream& operator<<(std::ostream& os, const Space& space) {
331d54e73444e017d3a65234e0f193846f3e27472bIan Rogers  space.Dump(os);
341d54e73444e017d3a65234e0f193846f3e27472bIan Rogers  return os;
351d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}
361d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
371d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
381d54e73444e017d3a65234e0f193846f3e27472bIan RogersDiscontinuousSpace::DiscontinuousSpace(const std::string& name,
391d54e73444e017d3a65234e0f193846f3e27472bIan Rogers                                       GcRetentionPolicy gc_retention_policy) :
401d54e73444e017d3a65234e0f193846f3e27472bIan Rogers    Space(name, gc_retention_policy),
411d54e73444e017d3a65234e0f193846f3e27472bIan Rogers    live_objects_(new accounting::SpaceSetMap("large live objects")),
421d54e73444e017d3a65234e0f193846f3e27472bIan Rogers    mark_objects_(new accounting::SpaceSetMap("large marked objects")) {
431d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}
441d54e73444e017d3a65234e0f193846f3e27472bIan Rogers
451d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}  // namespace space
461d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}  // namespace gc
471d54e73444e017d3a65234e0f193846f3e27472bIan Rogers}  // namespace art
48