Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index 1c98c9876b7e2afcdaa2979cc54a37e0be8017f9..254bf504fdef7cb940db19557411d42849c4c47d 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -2760,6 +2760,37 @@ void CallStubCompiler::CompileHandlerFrontend(Handle<Object> object, |
eax, holder, ebx, edx, edi, name, &miss); |
break; |
} |
+ |
+ case FLOAT32x4_CHECK: { |
+ Label fast; |
+ // Check that the object is a float32x4. |
+ __ CmpObjectType(edx, FLOAT32x4_TYPE, eax); |
+ __ j(not_equal, &miss); |
+ // Check that the maps starting from the prototype haven't changed. |
+ GenerateDirectLoadGlobalFunctionPrototype( |
+ masm(), Context::FLOAT32x4_FUNCTION_INDEX, eax, &miss); |
+ Handle<Object> prototype(object->GetPrototype(isolate()), isolate()); |
+ CheckPrototypes( |
+ IC::CurrentTypeOf(prototype, isolate()), |
+ eax, holder, ebx, edx, edi, name, &miss); |
+ break; |
+ } |
+ |
+ case INT32x4_CHECK: { |
+ Label fast; |
+ // Check that the object is a int32x4. |
+ __ CmpObjectType(edx, INT32x4_TYPE, eax); |
+ __ j(not_equal, &miss); |
+ // Check that the maps starting from the prototype haven't changed. |
+ GenerateDirectLoadGlobalFunctionPrototype( |
+ masm(), Context::INT32x4_FUNCTION_INDEX, eax, &miss); |
+ Handle<Object> prototype(object->GetPrototype(isolate()), isolate()); |
+ CheckPrototypes( |
+ IC::CurrentTypeOf(prototype, isolate()), |
+ eax, holder, ebx, edx, edi, name, &miss); |
+ break; |
+ } |
+ |
case BOOLEAN_CHECK: { |
GenerateBooleanCheck(edx, &miss); |
// Check that the maps starting from the prototype haven't changed. |