X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fv8%2Fsrc%2Fhydrogen.cc;h=ee607084fb73d9170039a932d0f2371be1e759e9;hb=40cf3eb6f8987f5a8d1c627f8ef6ff9bd571c97d;hp=e24af9ad345947e478562b141d0621ab4729a342;hpb=42dcc1327bbd3f24706b73963db769f667a58196;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/v8/src/hydrogen.cc b/src/v8/src/hydrogen.cc index e24af9a..ee60708 100644 --- a/src/v8/src/hydrogen.cc +++ b/src/v8/src/hydrogen.cc @@ -8888,7 +8888,33 @@ HValue* HOptimizedGraphBuilder::BuildAllocateFixedTypedArray( Add(elements, HObjectAccess::ForFixedArrayLength(), length); + HValue* filler = Add(static_cast(0)); + if (IsFixedFloat32x4ElementsKind(fixed_elements_kind)) { + if (CPU::SupportsSIMD128InCrankshaft()) { + filler = AddUncasted(kFloat32x4Zero); + } else { + HValue* size = Add(Float32x4::kSize); + filler = Add(size, HType::Tagged(), NOT_TENURED, + Float32x4::kInstanceType); + AddStoreMapConstant(filler, isolate()->factory()->float32x4_map()); + HValue* zero = Add(static_cast(0.0)); + Add(filler, HObjectAccess::ForSIMD128XYLanes(), zero); + Add(filler, HObjectAccess::ForSIMD128ZWLanes(), zero); + } + } else if (IsFixedInt32x4ElementsKind(fixed_elements_kind)) { + if (CPU::SupportsSIMD128InCrankshaft()) { + filler = AddUncasted(kInt32x4Zero); + } else { + HValue* size = Add(Int32x4::kSize); + filler = Add(size, HType::Tagged(), NOT_TENURED, + Int32x4::kInstanceType); + AddStoreMapConstant(filler, isolate()->factory()->int32x4_map()); + HValue* zero = Add(static_cast(0.0)); + Add(filler, HObjectAccess::ForSIMD128XYLanes(), zero); + Add(filler, HObjectAccess::ForSIMD128ZWLanes(), zero); + } + } { LoopBuilder builder(this, context(), LoopBuilder::kPostIncrement);