Rename NumberInfo to TypeInfo.

Since we add more type (StringType, PrimitiveType) the name
NumberInfo does not make sense anymore.

Review URL: http://codereview.chromium.org/1207006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 4cd39f12
......@@ -295,7 +295,7 @@ void VirtualFrame::EmitPop(Register reg) {
void VirtualFrame::EmitPush(Register reg) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(NumberInfo::Unknown()));
elements_.Add(FrameElement::MemoryElement(TypeInfo::Unknown()));
stack_pointer_++;
__ push(reg);
}
......
......@@ -69,7 +69,7 @@ class VirtualFrame : public ZoneObject {
// Create a duplicate of an existing valid frame element.
FrameElement CopyElementAt(int index,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
// The number of elements on the virtual frame.
int element_count() { return elements_.length(); }
......@@ -344,7 +344,7 @@ class VirtualFrame : public ZoneObject {
void EmitPushMultiple(int count, int src_regs);
// Push an element on the virtual frame.
inline void Push(Register reg, NumberInfo info = NumberInfo::Unknown());
inline void Push(Register reg, TypeInfo info = TypeInfo::Unknown());
inline void Push(Handle<Object> value);
inline void Push(Smi* value);
......@@ -364,8 +364,8 @@ class VirtualFrame : public ZoneObject {
// the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x).
inline void Nip(int num_dropped);
inline void SetTypeForLocalAt(int index, NumberInfo info);
inline void SetTypeForParamAt(int index, NumberInfo info);
inline void SetTypeForLocalAt(int index, TypeInfo info);
inline void SetTypeForParamAt(int index, TypeInfo info);
private:
static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset;
......
......@@ -31,7 +31,7 @@
#include "ast.h"
#include "code-stubs.h"
#include "runtime.h"
#include "number-info.h"
#include "type-info.h"
// Include the declaration of the architecture defined class CodeGenerator.
// The contract to the shared code is that the the CodeGenerator is a subclass
......
......@@ -28,7 +28,7 @@
#ifndef V8_FRAME_ELEMENT_H_
#define V8_FRAME_ELEMENT_H_
#include "number-info-inl.h"
#include "type-info-inl.h"
#include "macro-assembler.h"
#include "zone.h"
......@@ -54,19 +54,19 @@ class FrameElement BASE_EMBEDDED {
SYNCED
};
inline NumberInfo number_info() {
// Copied elements do not have number info. Instead
inline TypeInfo type_info() {
// Copied elements do not have type info. Instead
// we have to inspect their backing element in the frame.
ASSERT(!is_copy());
return NumberInfo::FromInt(NumberInfoField::decode(value_));
return TypeInfo::FromInt(TypeInfoField::decode(value_));
}
inline void set_number_info(NumberInfo info) {
// Copied elements do not have number info. Instead
inline void set_type_info(TypeInfo info) {
// Copied elements do not have type info. Instead
// we have to inspect their backing element in the frame.
ASSERT(!is_copy());
value_ = value_ & ~NumberInfoField::mask();
value_ = value_ | NumberInfoField::encode(info.ToInt());
value_ = value_ & ~TypeInfoField::mask();
value_ = value_ | TypeInfoField::encode(info.ToInt());
}
// The default constructor creates an invalid frame element.
......@@ -74,7 +74,7 @@ class FrameElement BASE_EMBEDDED {
value_ = TypeField::encode(INVALID)
| CopiedField::encode(false)
| SyncedField::encode(false)
| NumberInfoField::encode(NumberInfo::Uninitialized().ToInt())
| TypeInfoField::encode(TypeInfo::Uninitialized().ToInt())
| DataField::encode(0);
}
......@@ -85,7 +85,7 @@ class FrameElement BASE_EMBEDDED {
}
// Factory function to construct an in-memory frame element.
static FrameElement MemoryElement(NumberInfo info) {
static FrameElement MemoryElement(TypeInfo info) {
FrameElement result(MEMORY, no_reg, SYNCED, info);
return result;
}
......@@ -93,7 +93,7 @@ class FrameElement BASE_EMBEDDED {
// Factory function to construct an in-register frame element.
static FrameElement RegisterElement(Register reg,
SyncFlag is_synced,
NumberInfo info) {
TypeInfo info) {
return FrameElement(REGISTER, reg, is_synced, info);
}
......@@ -101,7 +101,7 @@ class FrameElement BASE_EMBEDDED {
// compile time.
static FrameElement ConstantElement(Handle<Object> value,
SyncFlag is_synced) {
NumberInfo info = NumberInfo::TypeFromValue(value);
TypeInfo info = TypeInfo::TypeFromValue(value);
FrameElement result(value, is_synced, info);
return result;
}
......@@ -218,20 +218,20 @@ class FrameElement BASE_EMBEDDED {
FrameElement(Type type,
Register reg,
SyncFlag is_synced,
NumberInfo info) {
TypeInfo info) {
value_ = TypeField::encode(type)
| CopiedField::encode(false)
| SyncedField::encode(is_synced != NOT_SYNCED)
| NumberInfoField::encode(info.ToInt())
| TypeInfoField::encode(info.ToInt())
| DataField::encode(reg.code_ > 0 ? reg.code_ : 0);
}
// Used to construct constant elements.
FrameElement(Handle<Object> value, SyncFlag is_synced, NumberInfo info) {
FrameElement(Handle<Object> value, SyncFlag is_synced, TypeInfo info) {
value_ = TypeField::encode(CONSTANT)
| CopiedField::encode(false)
| SyncedField::encode(is_synced != NOT_SYNCED)
| NumberInfoField::encode(info.ToInt())
| TypeInfoField::encode(info.ToInt())
| DataField::encode(ConstantList()->length());
ConstantList()->Add(value);
}
......@@ -262,7 +262,7 @@ class FrameElement BASE_EMBEDDED {
class CopiedField: public BitField<bool, 3, 1> {};
class SyncedField: public BitField<bool, 4, 1> {};
class UntaggedInt32Field: public BitField<bool, 5, 1> {};
class NumberInfoField: public BitField<int, 6, 6> {};
class TypeInfoField: public BitField<int, 6, 6> {};
class DataField: public BitField<uint32_t, 12, 32 - 12> {};
friend class VirtualFrame;
......
This diff is collapsed.
......@@ -656,7 +656,7 @@ class CodeGenerator: public AstVisitor {
void CodeForDoWhileConditionPosition(DoWhileStatement* stmt);
void CodeForSourcePosition(int pos);
void SetTypeForStackSlot(Slot* slot, NumberInfo info);
void SetTypeForStackSlot(Slot* slot, TypeInfo info);
#ifdef DEBUG
// True if the registers are valid for entry to a block. There should
......@@ -740,7 +740,7 @@ class GenericBinaryOpStub: public CodeStub {
GenericBinaryOpStub(Token::Value op,
OverwriteMode mode,
GenericBinaryFlags flags,
NumberInfo operands_type)
TypeInfo operands_type)
: op_(op),
mode_(mode),
flags_(flags),
......@@ -763,7 +763,7 @@ class GenericBinaryOpStub: public CodeStub {
args_in_registers_(ArgsInRegistersBits::decode(key)),
args_reversed_(ArgsReversedBits::decode(key)),
use_sse3_(SSE3Bits::decode(key)),
static_operands_type_(NumberInfo::ExpandedRepresentation(
static_operands_type_(TypeInfo::ExpandedRepresentation(
StaticTypeInfoBits::decode(key))),
runtime_operands_type_(runtime_operands_type),
name_(NULL) {
......@@ -790,7 +790,7 @@ class GenericBinaryOpStub: public CodeStub {
bool use_sse3_;
// Number type information of operands, determined by code generator.
NumberInfo static_operands_type_;
TypeInfo static_operands_type_;
// Operand type information determined at runtime.
BinaryOpIC::TypeInfo runtime_operands_type_;
......@@ -802,7 +802,7 @@ class GenericBinaryOpStub: public CodeStub {
#ifdef DEBUG
void Print() {
PrintF("GenericBinaryOpStub %d (op %s), "
"(mode %d, flags %d, registers %d, reversed %d, number_info %s)\n",
"(mode %d, flags %d, registers %d, reversed %d, type_info %s)\n",
MinorKey(),
Token::String(op_),
static_cast<int>(mode_),
......
......@@ -1130,7 +1130,7 @@ void FullCodeGenerator::EmitBinaryOp(Token::Value op,
GenericBinaryOpStub stub(op,
NO_OVERWRITE,
NO_GENERIC_BINARY_FLAGS,
NumberInfo::Unknown());
TypeInfo::Unknown());
__ CallStub(&stub);
Apply(context, eax);
}
......@@ -1745,7 +1745,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
GenericBinaryOpStub stub(expr->binary_op(),
NO_OVERWRITE,
NO_GENERIC_BINARY_FLAGS,
NumberInfo::Unknown());
TypeInfo::Unknown());
stub.GenerateCall(masm(), eax, Smi::FromInt(1));
__ bind(&done);
......
......@@ -75,7 +75,7 @@ void Result::ToRegister() {
Immediate(handle()));
}
// This result becomes a copy of the fresh one.
fresh.set_number_info(number_info());
fresh.set_type_info(type_info());
*this = fresh;
}
ASSERT(is_register());
......@@ -122,7 +122,7 @@ void Result::ToRegister(Register target) {
}
}
}
fresh.set_number_info(number_info());
fresh.set_type_info(type_info());
fresh.set_untagged_int32(is_untagged_int32());
*this = fresh;
} else if (is_register() && reg().is(target)) {
......
......@@ -162,7 +162,7 @@ void VirtualFrame::MakeMergable() {
if (element.is_constant() || element.is_copy()) {
if (element.is_synced()) {
// Just spill.
elements_[i] = FrameElement::MemoryElement(NumberInfo::Unknown());
elements_[i] = FrameElement::MemoryElement(TypeInfo::Unknown());
} else {
// Allocate to a register.
FrameElement backing_element; // Invalid if not a copy.
......@@ -174,7 +174,7 @@ void VirtualFrame::MakeMergable() {
elements_[i] =
FrameElement::RegisterElement(fresh.reg(),
FrameElement::NOT_SYNCED,
NumberInfo::Unknown());
TypeInfo::Unknown());
Use(fresh.reg(), i);
// Emit a move.
......@@ -207,7 +207,7 @@ void VirtualFrame::MakeMergable() {
// The copy flag is not relied on before the end of this loop,
// including when registers are spilled.
elements_[i].clear_copied();
elements_[i].set_number_info(NumberInfo::Unknown());
elements_[i].set_type_info(TypeInfo::Unknown());
}
}
}
......@@ -597,12 +597,12 @@ int VirtualFrame::InvalidateFrameSlotAt(int index) {
elements_[new_backing_index] =
FrameElement::RegisterElement(backing_reg,
FrameElement::SYNCED,
original.number_info());
original.type_info());
} else {
elements_[new_backing_index] =
FrameElement::RegisterElement(backing_reg,
FrameElement::NOT_SYNCED,
original.number_info());
original.type_info());
}
// Update the other copies.
for (int i = new_backing_index + 1; i < element_count(); i++) {
......@@ -634,7 +634,7 @@ void VirtualFrame::TakeFrameSlotAt(int index) {
FrameElement new_element =
FrameElement::RegisterElement(fresh.reg(),
FrameElement::NOT_SYNCED,
original.number_info());
original.type_info());
Use(fresh.reg(), element_count());
elements_.Add(new_element);
__ mov(fresh.reg(), Operand(ebp, fp_relative(index)));
......@@ -796,7 +796,7 @@ void VirtualFrame::UntaggedPushFrameSlotAt(int index) {
FrameElement new_element =
FrameElement::RegisterElement(fresh_reg,
FrameElement::NOT_SYNCED,
original.number_info());
original.type_info());
new_element.set_untagged_int32(true);
Use(fresh_reg, element_count());
fresh.Unuse(); // BreakTarget does not handle a live Result well.
......@@ -808,7 +808,7 @@ void VirtualFrame::UntaggedPushFrameSlotAt(int index) {
__ mov(fresh_reg, Operand(ebp, fp_relative(index)));
}
// Now convert the value to int32, or bail out.
if (original.number_info().IsSmi()) {
if (original.type_info().IsSmi()) {
__ SmiUntag(fresh_reg);
// Pushing the element is completely done.
} else {
......@@ -819,7 +819,7 @@ void VirtualFrame::UntaggedPushFrameSlotAt(int index) {
__ jmp(&done);
__ bind(&not_smi);
if (!original.number_info().IsNumber()) {
if (!original.type_info().IsNumber()) {
__ cmp(FieldOperand(fresh_reg, HeapObject::kMapOffset),
Factory::heap_number_map());
cgen()->unsafe_bailout_->Branch(not_equal);
......@@ -1151,11 +1151,11 @@ Result VirtualFrame::Pop() {
ASSERT(element.is_untagged_int32() == cgen()->in_safe_int32_mode());
// Get number type information of the result.
NumberInfo info;
TypeInfo info;
if (!element.is_copy()) {
info = element.number_info();
info = element.type_info();
} else {
info = elements_[element.index()].number_info();
info = elements_[element.index()].type_info();
}
bool pop_needed = (stack_pointer_ == index);
......@@ -1165,7 +1165,7 @@ Result VirtualFrame::Pop() {
Result temp = cgen()->allocator()->Allocate();
ASSERT(temp.is_valid());
__ pop(temp.reg());
temp.set_number_info(info);
temp.set_type_info(info);
temp.set_untagged_int32(element.is_untagged_int32());
return temp;
}
......@@ -1198,7 +1198,7 @@ Result VirtualFrame::Pop() {
FrameElement new_element =
FrameElement::RegisterElement(temp.reg(),
FrameElement::SYNCED,
element.number_info());
element.type_info());
// Preserve the copy flag on the element.
if (element.is_copied()) new_element.set_copied();
elements_[index] = new_element;
......@@ -1233,7 +1233,7 @@ void VirtualFrame::EmitPop(Operand operand) {
}
void VirtualFrame::EmitPush(Register reg, NumberInfo info) {
void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -1241,7 +1241,7 @@ void VirtualFrame::EmitPush(Register reg, NumberInfo info) {
}
void VirtualFrame::EmitPush(Operand operand, NumberInfo info) {
void VirtualFrame::EmitPush(Operand operand, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -1249,7 +1249,7 @@ void VirtualFrame::EmitPush(Operand operand, NumberInfo info) {
}
void VirtualFrame::EmitPush(Immediate immediate, NumberInfo info) {
void VirtualFrame::EmitPush(Immediate immediate, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......
......@@ -28,7 +28,7 @@
#ifndef V8_IA32_VIRTUAL_FRAME_IA32_H_
#define V8_IA32_VIRTUAL_FRAME_IA32_H_
#include "number-info.h"
#include "type-info.h"
#include "register-allocator.h"
#include "scopes.h"
......@@ -84,7 +84,7 @@ class VirtualFrame: public ZoneObject {
// Create a duplicate of an existing valid frame element.
FrameElement CopyElementAt(int index,
NumberInfo info = NumberInfo::Uninitialized());
TypeInfo info = TypeInfo::Uninitialized());
// The number of elements on the virtual frame.
int element_count() { return elements_.length(); }
......@@ -398,14 +398,14 @@ class VirtualFrame: public ZoneObject {
// Push an element on top of the expression stack and emit a
// corresponding push instruction.
void EmitPush(Register reg,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(Operand operand,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(Immediate immediate,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
// Push an element on the virtual frame.
inline void Push(Register reg, NumberInfo info = NumberInfo::Unknown());
inline void Push(Register reg, TypeInfo info = TypeInfo::Unknown());
inline void Push(Handle<Object> value);
inline void Push(Smi* value);
......@@ -417,7 +417,7 @@ class VirtualFrame: public ZoneObject {
// This assert will trigger if you try to push the same value twice.
ASSERT(result->is_valid());
if (result->is_register()) {
Push(result->reg(), result->number_info());
Push(result->reg(), result->type_info());
} else {
ASSERT(result->is_constant());
Push(result->handle());
......@@ -447,8 +447,8 @@ class VirtualFrame: public ZoneObject {
}
// Update the type information of a variable frame element directly.
inline void SetTypeForLocalAt(int index, NumberInfo info);
inline void SetTypeForParamAt(int index, NumberInfo info);
inline void SetTypeForLocalAt(int index, TypeInfo info);
inline void SetTypeForParamAt(int index, TypeInfo info);
private:
static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset;
......
......@@ -46,7 +46,7 @@ void JumpTarget::InitializeEntryElement(int index, FrameElement* target) {
entry_frame_->elements_[target->index()].set_copied();
}
if (direction_ == BIDIRECTIONAL && !target->is_copy()) {
element->set_number_info(NumberInfo::Unknown());
element->set_type_info(TypeInfo::Unknown());
}
}
......
......@@ -107,8 +107,8 @@ void JumpTarget::ComputeEntryFrame() {
// We overwrite the number information of one of the incoming frames.
// This is safe because we only use the frame for emitting merge code.
// The number information of incoming frames is not used anymore.
element->set_number_info(NumberInfo::Combine(element->number_info(),
other->number_info()));
element->set_type_info(TypeInfo::Combine(element->type_info(),
other->type_info()));
}
}
elements[i] = element;
......@@ -135,7 +135,7 @@ void JumpTarget::ComputeEntryFrame() {
FrameElement* target = elements[index];
if (target == NULL) {
entry_frame_->elements_.Add(
FrameElement::MemoryElement(NumberInfo::Uninitialized()));
FrameElement::MemoryElement(TypeInfo::Uninitialized()));
} else {
entry_frame_->elements_.Add(*target);
InitializeEntryElement(index, target);
......@@ -152,19 +152,19 @@ void JumpTarget::ComputeEntryFrame() {
RegisterFile candidate_registers;
int best_count = kMinInt;
int best_reg_num = RegisterAllocator::kInvalidRegister;
NumberInfo info = NumberInfo::Uninitialized();
TypeInfo info = TypeInfo::Uninitialized();
for (int j = 0; j < reaching_frames_.length(); j++) {
FrameElement element = reaching_frames_[j]->elements_[i];
if (direction_ == BIDIRECTIONAL) {
info = NumberInfo::Unknown();
info = TypeInfo::Unknown();
} else if (!element.is_copy()) {
info = NumberInfo::Combine(info, element.number_info());
info = TypeInfo::Combine(info, element.type_info());
} else {
// New elements will not be copies, so get number information from
// backing element in the reaching frame.
info = NumberInfo::Combine(info,
reaching_frames_[j]->elements_[element.index()].number_info());
info = TypeInfo::Combine(info,
reaching_frames_[j]->elements_[element.index()].type_info());
}
is_synced = is_synced && element.is_synced();
if (element.is_register() && !entry_frame_->is_used(element.reg())) {
......@@ -189,7 +189,7 @@ void JumpTarget::ComputeEntryFrame() {
if (is_synced) {
// Already recorded as a memory element.
// Set combined number info.
entry_frame_->elements_[i].set_number_info(info);
entry_frame_->elements_[i].set_type_info(info);
continue;
}
......@@ -211,12 +211,12 @@ void JumpTarget::ComputeEntryFrame() {
Register reg = RegisterAllocator::ToRegister(best_reg_num);
entry_frame_->elements_[i] =
FrameElement::RegisterElement(reg, FrameElement::NOT_SYNCED,
NumberInfo::Uninitialized());
TypeInfo::Uninitialized());
if (is_copied) entry_frame_->elements_[i].set_copied();
entry_frame_->set_register_location(reg, i);
}
// Set combined number info.
entry_frame_->elements_[i].set_number_info(info);
entry_frame_->elements_[i].set_type_info(info);
}
}
......@@ -225,7 +225,7 @@ void JumpTarget::ComputeEntryFrame() {
if (direction_ == BIDIRECTIONAL) {
for (int i = 0; i < length; ++i) {
if (!entry_frame_->elements_[i].is_copy()) {
ASSERT(entry_frame_->elements_[i].number_info().IsUnknown());
ASSERT(entry_frame_->elements_[i].type_info().IsUnknown());
}
}
}
......
......@@ -104,36 +104,36 @@ void RegisterAllocator::Unuse(Register reg) {
}
NumberInfo Result::number_info() const {
TypeInfo Result::type_info() const {
ASSERT(is_valid());
return NumberInfo::FromInt(NumberInfoField::decode(value_));
return TypeInfo::FromInt(TypeInfoField::decode(value_));
}
void Result::set_number_info(NumberInfo info) {
void Result::set_type_info(TypeInfo info) {
ASSERT(is_valid());
value_ &= ~NumberInfoField::mask();
value_ |= NumberInfoField::encode(info.ToInt());
value_ &= ~TypeInfoField::mask();
value_ |= TypeInfoField::encode(info.ToInt());
}
bool Result::is_number() const {
return number_info().IsNumber();
return type_info().IsNumber();
}
bool Result::is_smi() const {
return number_info().IsSmi();
return type_info().IsSmi();
}
bool Result::is_integer32() const {
return number_info().IsInteger32();
return type_info().IsInteger32();
}
bool Result::is_double() const {
return number_info().IsDouble();
return type_info().IsDouble();
}
} } // namespace v8::internal
......
......@@ -38,11 +38,11 @@ namespace internal {
// Result implementation.
Result::Result(Register reg, NumberInfo info) {
Result::Result(Register reg, TypeInfo info) {
ASSERT(reg.is_valid() && !RegisterAllocator::IsReserved(reg));
CodeGeneratorScope::Current()->allocator()->Use(reg);
value_ = TypeField::encode(REGISTER)
| NumberInfoField::encode(info.ToInt())
| TypeInfoField::encode(info.ToInt())
| DataField::encode(reg.code_);
}
......
......@@ -29,7 +29,7 @@
#define V8_REGISTER_ALLOCATOR_H_
#include "macro-assembler.h"
#include "number-info-inl.h"
#include "type-info-inl.h"
#if V8_TARGET_ARCH_IA32
#include "ia32/register-allocator-ia32.h"
......@@ -65,13 +65,13 @@ class Result BASE_EMBEDDED {
Result() { invalidate(); }
// Construct a register Result.
explicit Result(Register reg, NumberInfo info = NumberInfo::Unknown());
explicit Result(Register reg, TypeInfo info = TypeInfo::Unknown());
// Construct a Result whose value is a compile-time constant.
explicit Result(Handle<Object> value) {
NumberInfo info = NumberInfo::TypeFromValue(value);
TypeInfo info = TypeInfo::TypeFromValue(value);
value_ = TypeField::encode(CONSTANT)
| NumberInfoField::encode(info.ToInt())
| TypeInfoField::encode(info.ToInt())
| IsUntaggedInt32Field::encode(false)
| DataField::encode(ConstantList()->length());
ConstantList()->Add(value);
......@@ -103,8 +103,8 @@ class Result BASE_EMBEDDED {
void invalidate() { value_ = TypeField::encode(INVALID); }
inline NumberInfo number_info() const;
inline void set_number_info(NumberInfo info);
inline TypeInfo type_info() const;
inline void set_type_info(TypeInfo info);
inline bool is_number() const;
inline bool is_smi() const;
inline bool is_integer32() const;
......@@ -155,7 +155,7 @@ class Result BASE_EMBEDDED {
// Declare BitFields with template parameters <type, start, size>.
class TypeField: public BitField<Type, 0, 2> {};
class NumberInfoField : public BitField<int, 2, 6> {};
class TypeInfoField : public BitField<int, 2, 6> {};
class IsUntaggedInt32Field : public BitField<bool, 8, 1> {};
class DataField: public BitField<uint32_t, 9, 32 - 9> {};
......
......@@ -25,26 +25,26 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef V8_NUMBER_INFO_INL_H_
#define V8_NUMBER_INFO_INL_H_
#ifndef V8_TYPE_INFO_INL_H_
#define V8_TYPE_INFO_INL_H_
#include "number-info.h"
#include "type-info.h"
#include "objects-inl.h"
namespace v8 {
namespace internal {
NumberInfo NumberInfo::TypeFromValue(Handle<Object> value) {
NumberInfo info;
TypeInfo TypeInfo::TypeFromValue(Handle<Object> value) {
TypeInfo info;
if (value->IsSmi()) {
info = NumberInfo::Smi();
info = TypeInfo::Smi();
} else if (value->IsHeapNumber()) {
info = NumberInfo::IsInt32Double(HeapNumber::cast(*value)->value())
? NumberInfo::Integer32()
: NumberInfo::Double();
info = TypeInfo::IsInt32Double(HeapNumber::cast(*value)->value())
? TypeInfo::Integer32()
: TypeInfo::Double();
} else {
info = NumberInfo::Unknown();
info = TypeInfo::Unknown();
}
return info;
}
......@@ -52,4 +52,4 @@ NumberInfo NumberInfo::TypeFromValue(Handle<Object> value) {
} } // namespace v8::internal
#endif // V8_NUMBER_INFO_INL_H_
#endif // V8_TYPE_INFO_INL_H_
......@@ -25,8 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef V8_NUMBER_INFO_H_
#define V8_NUMBER_INFO_H_
#ifndef V8_TYPE_INFO_H_
#define V8_TYPE_INFO_H_
#include "globals.h"
......@@ -45,25 +45,25 @@ namespace internal {
// | / /
// Uninitialized.
class NumberInfo {
class TypeInfo {
public:
NumberInfo() { }
TypeInfo() { }
static inline NumberInfo Unknown();
static inline TypeInfo Unknown();
// We know it's a primitive type.
static inline NumberInfo Primitive();
static inline TypeInfo Primitive();
// We know it's a number of some sort.
static inline NumberInfo Number();
static inline TypeInfo Number();
// We know it's signed or unsigned 32 bit integer.
static inline NumberInfo Integer32();
static inline TypeInfo Integer32();
// We know it's a Smi.
static inline NumberInfo Smi();
static inline TypeInfo Smi();
// We know it's a heap number.
static inline NumberInfo Double();
static inline TypeInfo Double();
// We know it's a string.
static inline NumberInfo String();
static inline TypeInfo String();
// We haven't started collecting info yet.
static inline NumberInfo Uninitialized();
static inline TypeInfo Uninitialized();
// Return compact representation. Very sensitive to enum values below!
// Compacting drops information about primtive types and strings types.
......@@ -78,7 +78,7 @@ class NumberInfo {
}
// Decode compact representation. Very sensitive to enum values below!
static NumberInfo ExpandedRepresentation(int three_bit_representation) {
static TypeInfo ExpandedRepresentation(int three_bit_representation) {
Type t = static_cast<Type>(three_bit_representation >= 6 ?
three_bit_representation + 2 :
three_bit_representation);
......@@ -88,14 +88,14 @@ class NumberInfo {
t == kInteger32Type ||
t == kSmiType ||
t == kDoubleType);
return NumberInfo(t);
return TypeInfo(t);
}
int ToInt() {
return type_;
}
static NumberInfo FromInt(int bit_representation) {
static TypeInfo FromInt(int bit_representation) {
Type t = static_cast<Type>(bit_representation);
ASSERT(t == kUnknownType ||
t == kPrimitiveType ||
......@@ -104,12 +104,12 @@ class NumberInfo {
t == kSmiType ||
t == kDoubleType ||
t == kStringType);
return NumberInfo(t);
return TypeInfo(t);
}
// Return the weakest (least precise) common type.
static NumberInfo Combine(NumberInfo a, NumberInfo b) {
return NumberInfo(static_cast<Type>(a.type_ & b.type_));
static TypeInfo Combine(TypeInfo a, TypeInfo b) {
return TypeInfo(static_cast<Type>(a.type_ & b.type_));
}
......@@ -130,7 +130,7 @@ class NumberInfo {
return false;
}
static inline NumberInfo TypeFromValue(Handle<Object> value);
static inline TypeInfo TypeFromValue(Handle<Object> value);
inline bool IsUnknown() {
return type_ == kUnknownType;
......@@ -189,51 +189,51 @@ class NumberInfo {
kStringType = 0x30, // 110000
kUninitializedType = 0x3f // 111111
};
explicit inline NumberInfo(Type t) : type_(t) { }
explicit inline TypeInfo(Type t) : type_(t) { }
Type type_;
};
NumberInfo NumberInfo::Unknown() {
return NumberInfo(kUnknownType);
TypeInfo TypeInfo::Unknown() {
return TypeInfo(kUnknownType);
}
NumberInfo NumberInfo::Primitive() {
return NumberInfo(kPrimitiveType);
TypeInfo TypeInfo::Primitive() {
return TypeInfo(kPrimitiveType);
}
NumberInfo NumberInfo::Number() {
return NumberInfo(kNumberType);
TypeInfo TypeInfo::Number() {
return TypeInfo(kNumberType);
}
NumberInfo NumberInfo::Integer32() {
return NumberInfo(kInteger32Type);
TypeInfo TypeInfo::Integer32() {
return TypeInfo(kInteger32Type);
}
NumberInfo NumberInfo::Smi() {
return NumberInfo(kSmiType);
TypeInfo TypeInfo::Smi() {
return TypeInfo(kSmiType);
}
NumberInfo NumberInfo::Double() {
return NumberInfo(kDoubleType);
TypeInfo TypeInfo::Double() {
return TypeInfo(kDoubleType);
}
NumberInfo NumberInfo::String() {
return NumberInfo(kStringType);
TypeInfo TypeInfo::String() {
return TypeInfo(kStringType);
}
NumberInfo NumberInfo::Uninitialized() {
return NumberInfo(kUninitializedType);
TypeInfo TypeInfo::Uninitialized() {
return TypeInfo(kUninitializedType);
}
} } // namespace v8::internal
#endif // V8_NUMBER_INFO_H_
#endif // V8_TYPE_INFO_H_
......@@ -40,7 +40,7 @@ VirtualFrame::VirtualFrame()
: elements_(parameter_count() + local_count() + kPreallocatedElements),
stack_pointer_(parameter_count() + 1) { // 0-based index of TOS.
for (int i = 0; i <= stack_pointer_; i++) {
elements_.Add(FrameElement::MemoryElement(NumberInfo::Unknown()));
elements_.Add(FrameElement::MemoryElement(TypeInfo::Unknown()));
}
for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
register_locations_[i] = kIllegalIndex;
......@@ -65,7 +65,7 @@ void VirtualFrame::PushFrameSlotAt(int index) {
}
void VirtualFrame::Push(Register reg, NumberInfo info) {
void VirtualFrame::Push(Register reg, TypeInfo info) {
if (is_used(reg)) {
int index = register_location(reg);
FrameElement element = CopyElementAt(index, info);
......@@ -120,13 +120,13 @@ bool VirtualFrame::Equals(VirtualFrame* other) {
}
void VirtualFrame::SetTypeForLocalAt(int index, NumberInfo info) {
elements_[local0_index() + index].set_number_info(info);
void VirtualFrame::SetTypeForLocalAt(int index, TypeInfo info) {
elements_[local0_index() + index].set_type_info(info);
}
void VirtualFrame::SetTypeForParamAt(int index, NumberInfo info) {
elements_[param0_index() + index].set_number_info(info);
void VirtualFrame::SetTypeForParamAt(int index, TypeInfo info) {
elements_[param0_index() + index].set_type_info(info);
}
......
......@@ -43,7 +43,7 @@ namespace internal {
// not conflict with the existing type information and must be equally or
// more precise. The default parameter value kUninitialized means that there
// is no additional information.
FrameElement VirtualFrame::CopyElementAt(int index, NumberInfo info) {
FrameElement VirtualFrame::CopyElementAt(int index, TypeInfo info) {
ASSERT(index >= 0);
ASSERT(index < element_count());
......@@ -74,14 +74,14 @@ FrameElement VirtualFrame::CopyElementAt(int index, NumberInfo info) {
result.set_index(index);
elements_[index].set_copied();
// Update backing element's number information.
NumberInfo existing = elements_[index].number_info();
TypeInfo existing = elements_[index].type_info();
ASSERT(!existing.IsUninitialized());
// Assert that the new type information (a) does not conflict with the
// existing one and (b) is equally or more precise.
ASSERT((info.ToInt() & existing.ToInt()) == existing.ToInt());
ASSERT((info.ToInt() | existing.ToInt()) == info.ToInt());
elements_[index].set_number_info(!info.IsUninitialized()
elements_[index].set_type_info(!info.IsUninitialized()
? info
: existing);
break;
......@@ -104,7 +104,7 @@ void VirtualFrame::Adjust(int count) {
ASSERT(stack_pointer_ == element_count() - 1);
for (int i = 0; i < count; i++) {
elements_.Add(FrameElement::MemoryElement(NumberInfo::Unknown()));
elements_.Add(FrameElement::MemoryElement(TypeInfo::Unknown()));
}
stack_pointer_ += count;
}
......@@ -152,11 +152,11 @@ void VirtualFrame::SpillElementAt(int index) {
SyncElementAt(index);
// Number type information is preserved.
// Copies get their number information from their backing element.
NumberInfo info;
TypeInfo info;
if (!elements_[index].is_copy()) {
info = elements_[index].number_info();
info = elements_[index].type_info();
} else {
info = elements_[elements_[index].index()].number_info();
info = elements_[elements_[index].index()].type_info();
}
// The element is now in memory. Its copied flag is preserved.
FrameElement new_element = FrameElement::MemoryElement(info);
......@@ -318,7 +318,7 @@ void VirtualFrame::SetElementAt(int index, Result* value) {
elements_[frame_index] =
FrameElement::RegisterElement(value->reg(),
FrameElement::NOT_SYNCED,
value->number_info());
value->type_info());
}
} else {
ASSERT(value->is_constant());
......
......@@ -4368,7 +4368,7 @@ void CodeGenerator::ToBoolean(ControlDestination* dest) {
if (value.is_number()) {
Comment cmnt(masm_, "ONLY_NUMBER");
// Fast case if NumberInfo indicates only numbers.
// Fast case if TypeInfo indicates only numbers.
if (FLAG_debug_code) {
__ AbortIfNotNumber(value.reg(), "ToBoolean operand is not a number.");
}
......@@ -5291,8 +5291,8 @@ void CodeGenerator::GenericBinaryOperation(Token::Value op,
}
// Get number type of left and right sub-expressions.
NumberInfo operands_type =
NumberInfo::Combine(left.number_info(), right.number_info());
TypeInfo operands_type =
TypeInfo::Combine(left.type_info(), right.type_info());
Result answer;
if (left_is_non_smi_constant || right_is_non_smi_constant) {
......@@ -5324,13 +5324,13 @@ void CodeGenerator::GenericBinaryOperation(Token::Value op,
}
}
// Set NumberInfo of result according to the operation performed.
// Set TypeInfo of result according to the operation performed.
// We rely on the fact that smis have a 32 bit payload on x64.
ASSERT(kSmiValueSize == 32);
NumberInfo result_type = NumberInfo::Unknown();
TypeInfo result_type = TypeInfo::Unknown();
switch (op) {
case Token::COMMA:
result_type = right.number_info();
result_type = right.type_info();
break;
case Token::OR:
case Token::AND:
......@@ -5341,37 +5341,37 @@ void CodeGenerator::GenericBinaryOperation(Token::Value op,
case Token::BIT_XOR:
case Token::BIT_AND:
// Result is always a smi.
result_type = NumberInfo::Smi();
result_type = TypeInfo::Smi();
break;
case Token::SAR:
case Token::SHL:
// Result is always a smi.
result_type = NumberInfo::Smi();
result_type = TypeInfo::Smi();
break;
case Token::SHR:
// Result of x >>> y is always a smi if y >= 1, otherwise a number.
result_type = (right.is_constant() && right.handle()->IsSmi()
&& Smi::cast(*right.handle())->value() >= 1)
? NumberInfo::Smi()
: NumberInfo::Number();
? TypeInfo::Smi()
: TypeInfo::Number();
break;
case Token::ADD:
// Result could be a string or a number. Check types of inputs.
result_type = operands_type.IsNumber()
? NumberInfo::Number()
: NumberInfo::Unknown();
? TypeInfo::Number()
: TypeInfo::Unknown();
break;
case Token::SUB:
case Token::MUL:
case Token::DIV:
case Token::MOD:
// Result is always a number.
result_type = NumberInfo::Number();
result_type = TypeInfo::Number();
break;
default:
UNREACHABLE();
}
answer.set_number_info(result_type);
answer.set_type_info(result_type);
frame_->Push(&answer);
}
......
......@@ -667,7 +667,7 @@ class GenericBinaryOpStub: public CodeStub {
GenericBinaryOpStub(Token::Value op,
OverwriteMode mode,
GenericBinaryFlags flags,
NumberInfo operands_type = NumberInfo::Unknown())
TypeInfo operands_type = TypeInfo::Unknown())
: op_(op),
mode_(mode),
flags_(flags),
......@@ -687,7 +687,7 @@ class GenericBinaryOpStub: public CodeStub {
args_in_registers_(ArgsInRegistersBits::decode(key)),
args_reversed_(ArgsReversedBits::decode(key)),
use_sse3_(SSE3Bits::decode(key)),
static_operands_type_(NumberInfo::ExpandedRepresentation(
static_operands_type_(TypeInfo::ExpandedRepresentation(
StaticTypeInfoBits::decode(key))),
runtime_operands_type_(type_info),
name_(NULL) {
......@@ -714,7 +714,7 @@ class GenericBinaryOpStub: public CodeStub {
bool use_sse3_;
// Number type information of operands, determined by code generator.
NumberInfo static_operands_type_;
TypeInfo static_operands_type_;
// Operand type information determined at runtime.
BinaryOpIC::TypeInfo runtime_operands_type_;
......
......@@ -44,7 +44,7 @@ void Result::ToRegister() {
ASSERT(fresh.is_valid());
CodeGeneratorScope::Current()->masm()->Move(fresh.reg(), handle());
// This result becomes a copy of the fresh one.
fresh.set_number_info(number_info());
fresh.set_type_info(type_info());
*this = fresh;
}
ASSERT(is_register());
......@@ -62,7 +62,7 @@ void Result::ToRegister(Register target) {
ASSERT(is_constant());
CodeGeneratorScope::Current()->masm()->Move(fresh.reg(), handle());
}
fresh.set_number_info(number_info());
fresh.set_type_info(type_info());
*this = fresh;
} else if (is_register() && reg().is(target)) {
ASSERT(CodeGeneratorScope::Current()->has_valid_frame());
......
......@@ -177,7 +177,7 @@ void VirtualFrame::EmitPop(const Operand& operand) {
}
void VirtualFrame::EmitPush(Register reg, NumberInfo info) {
void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -185,7 +185,7 @@ void VirtualFrame::EmitPush(Register reg, NumberInfo info) {
}
void VirtualFrame::EmitPush(const Operand& operand, NumberInfo info) {
void VirtualFrame::EmitPush(const Operand& operand, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -193,7 +193,7 @@ void VirtualFrame::EmitPush(const Operand& operand, NumberInfo info) {
}
void VirtualFrame::EmitPush(Immediate immediate, NumberInfo info) {
void VirtualFrame::EmitPush(Immediate immediate, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -203,7 +203,7 @@ void VirtualFrame::EmitPush(Immediate immediate, NumberInfo info) {
void VirtualFrame::EmitPush(Smi* smi_value) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(NumberInfo::Smi()));
elements_.Add(FrameElement::MemoryElement(TypeInfo::Smi()));
stack_pointer_++;
__ Push(smi_value);
}
......@@ -211,14 +211,14 @@ void VirtualFrame::EmitPush(Smi* smi_value) {
void VirtualFrame::EmitPush(Handle<Object> value) {
ASSERT(stack_pointer_ == element_count() - 1);
NumberInfo info = NumberInfo::TypeFromValue(value);
TypeInfo info = TypeInfo::TypeFromValue(value);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
__ Push(value);
}
void VirtualFrame::EmitPush(Heap::RootListIndex index, NumberInfo info) {
void VirtualFrame::EmitPush(Heap::RootListIndex index, TypeInfo info) {
ASSERT(stack_pointer_ == element_count() - 1);
elements_.Add(FrameElement::MemoryElement(info));
stack_pointer_++;
......@@ -292,12 +292,12 @@ int VirtualFrame::InvalidateFrameSlotAt(int index) {
elements_[new_backing_index] =
FrameElement::RegisterElement(backing_reg,
FrameElement::SYNCED,
original.number_info());
original.type_info());
} else {
elements_[new_backing_index] =
FrameElement::RegisterElement(backing_reg,
FrameElement::NOT_SYNCED,
original.number_info());
original.type_info());
}
// Update the other copies.
for (int i = new_backing_index + 1; i < element_count(); i++) {
......@@ -329,7 +329,7 @@ void VirtualFrame::TakeFrameSlotAt(int index) {
FrameElement new_element =
FrameElement::RegisterElement(fresh.reg(),
FrameElement::NOT_SYNCED,
original.number_info());
original.type_info());
Use(fresh.reg(), element_count());
elements_.Add(new_element);
__ movq(fresh.reg(), Operand(rbp, fp_relative(index)));
......@@ -475,7 +475,7 @@ void VirtualFrame::MakeMergable() {
if (element.is_constant() || element.is_copy()) {
if (element.is_synced()) {
// Just spill.
elements_[i] = FrameElement::MemoryElement(NumberInfo::Unknown());
elements_[i] = FrameElement::MemoryElement(TypeInfo::Unknown());
} else {
// Allocate to a register.
FrameElement backing_element; // Invalid if not a copy.
......@@ -487,7 +487,7 @@ void VirtualFrame::MakeMergable() {
elements_[i] =
FrameElement::RegisterElement(fresh.reg(),
FrameElement::NOT_SYNCED,
NumberInfo::Unknown());
TypeInfo::Unknown());
Use(fresh.reg(), i);
// Emit a move.
......@@ -516,7 +516,7 @@ void VirtualFrame::MakeMergable() {
// The copy flag is not relied on before the end of this loop,
// including when registers are spilled.
elements_[i].clear_copied();
elements_[i].set_number_info(NumberInfo::Unknown());
elements_[i].set_type_info(TypeInfo::Unknown());
}
}
}
......@@ -723,11 +723,11 @@ Result VirtualFrame::Pop() {
ASSERT(element.is_valid());
// Get number type information of the result.
NumberInfo info;
TypeInfo info;
if (!element.is_copy()) {
info = element.number_info();
info = element.type_info();
} else {
info = elements_[element.index()].number_info();
info = elements_[element.index()].type_info();
}
bool pop_needed = (stack_pointer_ == index);
......@@ -737,7 +737,7 @@ Result VirtualFrame::Pop() {
Result temp = cgen()->allocator()->Allocate();
ASSERT(temp.is_valid());
__ pop(temp.reg());
temp.set_number_info(info);
temp.set_type_info(info);
return temp;
}
......@@ -767,7 +767,7 @@ Result VirtualFrame::Pop() {
FrameElement new_element =
FrameElement::RegisterElement(temp.reg(),
FrameElement::SYNCED,
element.number_info());
element.type_info());
// Preserve the copy flag on the element.
if (element.is_copied()) new_element.set_copied();
elements_[index] = new_element;
......
......@@ -28,7 +28,7 @@
#ifndef V8_X64_VIRTUAL_FRAME_X64_H_
#define V8_X64_VIRTUAL_FRAME_X64_H_
#include "number-info.h"
#include "type-info.h"
#include "register-allocator.h"
#include "scopes.h"
......@@ -83,7 +83,7 @@ class VirtualFrame : public ZoneObject {
// Create a duplicate of an existing valid frame element.
FrameElement CopyElementAt(int index,
NumberInfo info = NumberInfo::Uninitialized());
TypeInfo info = TypeInfo::Uninitialized());
// The number of elements on the virtual frame.
int element_count() { return elements_.length(); }
......@@ -383,19 +383,19 @@ class VirtualFrame : public ZoneObject {
// Push an element on top of the expression stack and emit a
// corresponding push instruction.
void EmitPush(Register reg,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(const Operand& operand,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(Heap::RootListIndex index,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(Immediate immediate,
NumberInfo info = NumberInfo::Unknown());
TypeInfo info = TypeInfo::Unknown());
void EmitPush(Smi* value);
// Uses kScratchRegister, emits appropriate relocation info.
void EmitPush(Handle<Object> value);
// Push an element on the virtual frame.
inline void Push(Register reg, NumberInfo info = NumberInfo::Unknown());
inline void Push(Register reg, TypeInfo info = TypeInfo::Unknown());
inline void Push(Handle<Object> value);
inline void Push(Smi* value);
......@@ -403,7 +403,7 @@ class VirtualFrame : public ZoneObject {
// frame).
void Push(Result* result) {
if (result->is_register()) {
Push(result->reg(), result->number_info());
Push(result->reg(), result->type_info());
} else {
ASSERT(result->is_constant());
Push(result->handle());
......@@ -416,8 +416,8 @@ class VirtualFrame : public ZoneObject {
// the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x).
inline void Nip(int num_dropped);
inline void SetTypeForLocalAt(int index, NumberInfo info);
inline void SetTypeForParamAt(int index, NumberInfo info);
inline void SetTypeForLocalAt(int index, TypeInfo info);
inline void SetTypeForParamAt(int index, TypeInfo info);
private:
static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset;
......
......@@ -330,8 +330,6 @@
'../../src/messages.cc',
'../../src/messages.h',
'../../src/natives.h',
'../../src/number-info-inl.h',
'../../src/number-info.h',
'../../src/objects-debug.cc',
'../../src/objects-inl.h',
'../../src/objects.cc',
......@@ -388,6 +386,8 @@
'../../src/token.h',
'../../src/top.cc',
'../../src/top.h',
'../../src/type-info-inl.h',
'../../src/type-info.h',
'../../src/unicode-inl.h',
'../../src/unicode.cc',
'../../src/unicode.h',
......
......@@ -688,14 +688,6 @@
RelativePath="..\..\src\natives.h"
>
</File>
<File
RelativePath="..\..\src\number-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\number-info.h"
>
</File>
<File
RelativePath="..\..\src\objects-debug.cc"
>
......@@ -936,6 +928,14 @@
RelativePath="..\..\src\top.h"
>
</File>
<File
RelativePath="..\..\src\type-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\type-info.h"
>
</File>
<File
RelativePath="..\..\src\unicode-inl.h"
>
......
......@@ -668,14 +668,6 @@
RelativePath="..\..\src\natives.h"
>
</File>
<File
RelativePath="..\..\src\number-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\number-info.h"
>
</File>
<File
RelativePath="..\..\src\objects-debug.cc"
>
......@@ -924,6 +916,14 @@
RelativePath="..\..\src\top.h"
>
</File>
<File
RelativePath="..\..\src\type-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\type-info.h"
>
</File>
<File
RelativePath="..\..\src\unicode-inl.h"
>
......
......@@ -665,14 +665,6 @@
RelativePath="..\..\src\natives.h"
>
</File>
<File
RelativePath="..\..\src\number-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\number-info.h"
>
</File>
<File
RelativePath="..\..\src\objects-debug.cc"
>
......@@ -913,6 +905,14 @@
RelativePath="..\..\src\top.h"
>
</File>
<File
RelativePath="..\..\src\type-info-inl.h"
>
</File>
<File
RelativePath="..\..\src\type-info.h"
>
</File>
<File
RelativePath="..\..\src\unicode-inl.h"
>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment