| Index: src/interface-descriptors.cc
|
| diff --git a/src/interface-descriptors.cc b/src/interface-descriptors.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dd0be43ae0a5a0d307fe0854d672e5fad3d8feab
|
| --- /dev/null
|
| +++ b/src/interface-descriptors.cc
|
| @@ -0,0 +1,55 @@
|
| +// Copyright 2012 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.
|
| +
|
| +#include "src/v8.h"
|
| +
|
| +#include "src/interface-descriptors.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +
|
| +InterfaceDescriptor::InterfaceDescriptor() : register_param_count_(-1) {}
|
| +
|
| +
|
| +void InterfaceDescriptor::Initialize(
|
| + int register_parameter_count, Register* registers,
|
| + Representation* register_param_representations,
|
| + PlatformInterfaceDescriptor* platform_descriptor) {
|
| + platform_specific_descriptor_ = platform_descriptor;
|
| + register_param_count_ = register_parameter_count;
|
| +
|
| + // An interface descriptor must have a context register.
|
| + DCHECK(register_parameter_count > 0 && registers[0].is(ContextRegister()));
|
| +
|
| + // InterfaceDescriptor owns a copy of the registers array.
|
| + register_params_.Reset(NewArray<Register>(register_parameter_count));
|
| + for (int i = 0; i < register_parameter_count; i++) {
|
| + register_params_[i] = registers[i];
|
| + }
|
| +
|
| + // If a representations array is specified, then the descriptor owns that as
|
| + // well.
|
| + if (register_param_representations != NULL) {
|
| + register_param_representations_.Reset(
|
| + NewArray<Representation>(register_parameter_count));
|
| + for (int i = 0; i < register_parameter_count; i++) {
|
| + // If there is a context register, the representation must be tagged.
|
| + DCHECK(
|
| + i != 0 ||
|
| + register_param_representations[i].Equals(Representation::Tagged()));
|
| + register_param_representations_[i] = register_param_representations[i];
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +void CallInterfaceDescriptor::Initialize(
|
| + int register_parameter_count, Register* registers,
|
| + Representation* param_representations,
|
| + PlatformInterfaceDescriptor* platform_descriptor) {
|
| + InterfaceDescriptor::Initialize(register_parameter_count, registers,
|
| + param_representations, platform_descriptor);
|
| +}
|
| +}
|
| +} // namespace v8::internal
|
|
|