MIPS: Implement structural function and array types
Port r20817 (e7a84c1) Original commit message: Just wanted to add two constructors to a datatype, how ugly can it get? BUG= R=plind44@gmail.com Review URL: https://codereview.chromium.org/240463004 Patch from Balazs Kilvady <kilvadyb@homejinni.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20822 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
fe3e57068e
commit
4635a12525
@ -417,7 +417,7 @@ void StoreStubCompiler::GenerateStoreTransition(MacroAssembler* masm,
|
|||||||
} else if (representation.IsHeapObject()) {
|
} else if (representation.IsHeapObject()) {
|
||||||
HeapType* field_type = descriptors->GetFieldType(descriptor);
|
HeapType* field_type = descriptors->GetFieldType(descriptor);
|
||||||
if (field_type->IsClass()) {
|
if (field_type->IsClass()) {
|
||||||
__ CheckMap(value_reg, scratch1, field_type->AsClass(),
|
__ CheckMap(value_reg, scratch1, field_type->AsClass()->Map(),
|
||||||
miss_label, DO_SMI_CHECK);
|
miss_label, DO_SMI_CHECK);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(HeapType::Any()->Is(field_type));
|
ASSERT(HeapType::Any()->Is(field_type));
|
||||||
@ -587,7 +587,7 @@ void StoreStubCompiler::GenerateStoreField(MacroAssembler* masm,
|
|||||||
} else if (representation.IsHeapObject()) {
|
} else if (representation.IsHeapObject()) {
|
||||||
HeapType* field_type = lookup->GetFieldType();
|
HeapType* field_type = lookup->GetFieldType();
|
||||||
if (field_type->IsClass()) {
|
if (field_type->IsClass()) {
|
||||||
__ CheckMap(value_reg, scratch1, field_type->AsClass(),
|
__ CheckMap(value_reg, scratch1, field_type->AsClass()->Map(),
|
||||||
miss_label, DO_SMI_CHECK);
|
miss_label, DO_SMI_CHECK);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(HeapType::Any()->Is(field_type));
|
ASSERT(HeapType::Any()->Is(field_type));
|
||||||
@ -838,7 +838,9 @@ Register StubCompiler::CheckPrototypes(Handle<HeapType> type,
|
|||||||
int depth = 0;
|
int depth = 0;
|
||||||
|
|
||||||
Handle<JSObject> current = Handle<JSObject>::null();
|
Handle<JSObject> current = Handle<JSObject>::null();
|
||||||
if (type->IsConstant()) current = Handle<JSObject>::cast(type->AsConstant());
|
if (type->IsConstant()) {
|
||||||
|
current = Handle<JSObject>::cast(type->AsConstant()->Value());
|
||||||
|
}
|
||||||
Handle<JSObject> prototype = Handle<JSObject>::null();
|
Handle<JSObject> prototype = Handle<JSObject>::null();
|
||||||
Handle<Map> current_map = receiver_map;
|
Handle<Map> current_map = receiver_map;
|
||||||
Handle<Map> holder_map(holder->map());
|
Handle<Map> holder_map(holder->map());
|
||||||
|
Loading…
Reference in New Issue
Block a user