blob: e865498c7d45ea466a7efbac9d9fc532d882238d [file] [log] [blame]
// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The common functionality when building with internal or external natives.
#include "src/heap/heap.h"
#include "src/objects-inl.h"
#include "src/snapshot/natives.h"
namespace v8 {
namespace internal {
NativesExternalStringResource::NativesExternalStringResource(NativeType type,
int index)
: type_(type), index_(index) {
Vector<const char> source;
DCHECK_LE(0, index);
switch (type_) {
case CORE:
DCHECK(index < Natives::GetBuiltinsCount());
source = Natives::GetScriptSource(index);
break;
case EXTRAS:
DCHECK(index < ExtraNatives::GetBuiltinsCount());
source = ExtraNatives::GetScriptSource(index);
break;
case EXPERIMENTAL_EXTRAS:
DCHECK(index < ExperimentalExtraNatives::GetBuiltinsCount());
source = ExperimentalExtraNatives::GetScriptSource(index);
break;
default:
UNREACHABLE();
}
data_ = source.start();
length_ = source.length();
}
} // namespace internal
} // namespace v8