| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 49d379aa0b018a977da1d520d4d91c9b3823acfb..9ce00677e22cb88e0fd09cc31241d5dac44fd960 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -11684,6 +11684,26 @@ void HOptimizedGraphBuilder::GenerateIsJSProxy(CallRuntime* call) {
|
| }
|
|
|
|
|
| +void HOptimizedGraphBuilder::GenerateHasFastPackedElements(CallRuntime* call) {
|
| + DCHECK(call->arguments()->length() == 1);
|
| + CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
|
| + HValue* object = Pop();
|
| + HIfContinuation continuation;
|
| + IfBuilder if_fast_packed(this);
|
| + HValue* elements_kind = BuildGetElementsKind(object);
|
| + if_fast_packed.If<HCompareNumericAndBranch>(
|
| + elements_kind, Add<HConstant>(FAST_SMI_ELEMENTS), Token::EQ);
|
| + if_fast_packed.Or();
|
| + if_fast_packed.If<HCompareNumericAndBranch>(
|
| + elements_kind, Add<HConstant>(FAST_ELEMENTS), Token::EQ);
|
| + if_fast_packed.Or();
|
| + if_fast_packed.If<HCompareNumericAndBranch>(
|
| + elements_kind, Add<HConstant>(FAST_DOUBLE_ELEMENTS), Token::EQ);
|
| + if_fast_packed.CaptureContinuation(&continuation);
|
| + return ast_context()->ReturnContinuation(&continuation, call->id());
|
| +}
|
| +
|
| +
|
| void HOptimizedGraphBuilder::GenerateIsNonNegativeSmi(CallRuntime* call) {
|
| return Bailout(kInlinedRuntimeFunctionIsNonNegativeSmi);
|
| }
|
|
|