Replace BuildExternalArrayElementAccess() with AddExternalArrayElementAccess().
This is trivial cleanup. All calls to BuildExternalArrayElementAccess() pass the result to AddInstruction(). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/19658004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
e8a7302ec4
commit
44f576ba65
119
src/hydrogen.cc
119
src/hydrogen.cc
@ -1051,59 +1051,6 @@ HValue* HGraphBuilder::BuildCheckMap(HValue* obj,
|
||||
}
|
||||
|
||||
|
||||
HInstruction* HGraphBuilder::BuildExternalArrayElementAccess(
|
||||
HValue* external_elements,
|
||||
HValue* checked_key,
|
||||
HValue* val,
|
||||
HValue* dependency,
|
||||
ElementsKind elements_kind,
|
||||
bool is_store) {
|
||||
Zone* zone = this->zone();
|
||||
if (is_store) {
|
||||
ASSERT(val != NULL);
|
||||
switch (elements_kind) {
|
||||
case EXTERNAL_PIXEL_ELEMENTS: {
|
||||
val = Add<HClampToUint8>(val);
|
||||
break;
|
||||
}
|
||||
case EXTERNAL_BYTE_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
||||
case EXTERNAL_SHORT_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
||||
case EXTERNAL_INT_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_INT_ELEMENTS: {
|
||||
break;
|
||||
}
|
||||
case EXTERNAL_FLOAT_ELEMENTS:
|
||||
case EXTERNAL_DOUBLE_ELEMENTS:
|
||||
break;
|
||||
case FAST_SMI_ELEMENTS:
|
||||
case FAST_ELEMENTS:
|
||||
case FAST_DOUBLE_ELEMENTS:
|
||||
case FAST_HOLEY_SMI_ELEMENTS:
|
||||
case FAST_HOLEY_ELEMENTS:
|
||||
case FAST_HOLEY_DOUBLE_ELEMENTS:
|
||||
case DICTIONARY_ELEMENTS:
|
||||
case NON_STRICT_ARGUMENTS_ELEMENTS:
|
||||
UNREACHABLE();
|
||||
break;
|
||||
}
|
||||
return new(zone) HStoreKeyed(external_elements, checked_key,
|
||||
val, elements_kind);
|
||||
} else {
|
||||
ASSERT(val == NULL);
|
||||
HLoadKeyed* load =
|
||||
new(zone) HLoadKeyed(
|
||||
external_elements, checked_key, dependency, elements_kind);
|
||||
if (FLAG_opt_safe_uint32_operations &&
|
||||
elements_kind == EXTERNAL_UNSIGNED_INT_ELEMENTS) {
|
||||
graph()->RecordUint32Instruction(load);
|
||||
}
|
||||
return load;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HValue* HGraphBuilder::BuildCheckForCapacityGrow(HValue* object,
|
||||
HValue* elements,
|
||||
ElementsKind kind,
|
||||
@ -1286,10 +1233,8 @@ HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess(
|
||||
HValue* bounds_check = negative_checker.If<HCompareNumericAndBranch>(
|
||||
key, graph()->GetConstant0(), Token::GTE);
|
||||
negative_checker.Then();
|
||||
HInstruction* result = BuildExternalArrayElementAccess(
|
||||
external_elements, key, val, bounds_check,
|
||||
elements_kind, is_store);
|
||||
AddInstruction(result);
|
||||
HInstruction* result = AddExternalArrayElementAccess(
|
||||
external_elements, key, val, bounds_check, elements_kind, is_store);
|
||||
negative_checker.ElseDeopt();
|
||||
length_checker.End();
|
||||
return result;
|
||||
@ -1298,9 +1243,9 @@ HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess(
|
||||
checked_key = Add<HBoundsCheck>(key, length);
|
||||
HLoadExternalArrayPointer* external_elements =
|
||||
Add<HLoadExternalArrayPointer>(elements);
|
||||
return AddInstruction(BuildExternalArrayElementAccess(
|
||||
external_elements, checked_key, val, mapcheck,
|
||||
elements_kind, is_store));
|
||||
return AddExternalArrayElementAccess(
|
||||
external_elements, checked_key, val,
|
||||
mapcheck, elements_kind, is_store);
|
||||
}
|
||||
}
|
||||
ASSERT(fast_smi_only_elements ||
|
||||
@ -1435,6 +1380,56 @@ HInnerAllocatedObject* HGraphBuilder::BuildJSArrayHeader(HValue* array,
|
||||
}
|
||||
|
||||
|
||||
HInstruction* HGraphBuilder::AddExternalArrayElementAccess(
|
||||
HValue* external_elements,
|
||||
HValue* checked_key,
|
||||
HValue* val,
|
||||
HValue* dependency,
|
||||
ElementsKind elements_kind,
|
||||
bool is_store) {
|
||||
if (is_store) {
|
||||
ASSERT(val != NULL);
|
||||
switch (elements_kind) {
|
||||
case EXTERNAL_PIXEL_ELEMENTS: {
|
||||
val = Add<HClampToUint8>(val);
|
||||
break;
|
||||
}
|
||||
case EXTERNAL_BYTE_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
||||
case EXTERNAL_SHORT_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
||||
case EXTERNAL_INT_ELEMENTS:
|
||||
case EXTERNAL_UNSIGNED_INT_ELEMENTS: {
|
||||
break;
|
||||
}
|
||||
case EXTERNAL_FLOAT_ELEMENTS:
|
||||
case EXTERNAL_DOUBLE_ELEMENTS:
|
||||
break;
|
||||
case FAST_SMI_ELEMENTS:
|
||||
case FAST_ELEMENTS:
|
||||
case FAST_DOUBLE_ELEMENTS:
|
||||
case FAST_HOLEY_SMI_ELEMENTS:
|
||||
case FAST_HOLEY_ELEMENTS:
|
||||
case FAST_HOLEY_DOUBLE_ELEMENTS:
|
||||
case DICTIONARY_ELEMENTS:
|
||||
case NON_STRICT_ARGUMENTS_ELEMENTS:
|
||||
UNREACHABLE();
|
||||
break;
|
||||
}
|
||||
return Add<HStoreKeyed>(external_elements, checked_key, val, elements_kind);
|
||||
} else {
|
||||
ASSERT(val == NULL);
|
||||
HLoadKeyed* load = Add<HLoadKeyed>(external_elements, checked_key,
|
||||
dependency, elements_kind);
|
||||
if (FLAG_opt_safe_uint32_operations &&
|
||||
elements_kind == EXTERNAL_UNSIGNED_INT_ELEMENTS) {
|
||||
graph()->RecordUint32Instruction(load);
|
||||
}
|
||||
return load;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HInstruction* HGraphBuilder::AddFastElementAccess(
|
||||
HValue* elements,
|
||||
HValue* checked_key,
|
||||
@ -5721,9 +5716,9 @@ HValue* HOptimizedGraphBuilder::HandlePolymorphicElementAccess(
|
||||
checked_key = Add<HBoundsCheck>(key, length);
|
||||
HLoadExternalArrayPointer* external_elements =
|
||||
Add<HLoadExternalArrayPointer>(elements);
|
||||
access = AddInstruction(BuildExternalArrayElementAccess(
|
||||
access = AddExternalArrayElementAccess(
|
||||
external_elements, checked_key, val,
|
||||
mapcompare, elements_kind, is_store));
|
||||
mapcompare, elements_kind, is_store);
|
||||
}
|
||||
*has_side_effects |= access->HasObservableSideEffects();
|
||||
// The caller will use has_side_effects and add a correct Simulate.
|
||||
|
@ -1046,14 +1046,6 @@ class HGraphBuilder {
|
||||
HValue* BuildCheckMap(HValue* obj, Handle<Map> map);
|
||||
|
||||
// Building common constructs
|
||||
HInstruction* BuildExternalArrayElementAccess(
|
||||
HValue* external_elements,
|
||||
HValue* checked_key,
|
||||
HValue* val,
|
||||
HValue* dependency,
|
||||
ElementsKind elements_kind,
|
||||
bool is_store);
|
||||
|
||||
HValue* BuildCheckForCapacityGrow(HValue* object,
|
||||
HValue* elements,
|
||||
ElementsKind kind,
|
||||
@ -1094,6 +1086,14 @@ class HGraphBuilder {
|
||||
HObjectAccess access,
|
||||
Representation representation);
|
||||
|
||||
HInstruction* AddExternalArrayElementAccess(
|
||||
HValue* external_elements,
|
||||
HValue* checked_key,
|
||||
HValue* val,
|
||||
HValue* dependency,
|
||||
ElementsKind elements_kind,
|
||||
bool is_store);
|
||||
|
||||
HInstruction* AddFastElementAccess(
|
||||
HValue* elements,
|
||||
HValue* checked_key,
|
||||
|
Loading…
Reference in New Issue
Block a user