diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/instruction/InstructionSet.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/instruction/InstructionSet.java
index 4faf88dfeb972909ecce0d1961ab1275f50f67b1..976ef32dd287cca4ca91009d8c239ddc0d4e278a 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/instruction/InstructionSet.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/instruction/InstructionSet.java
@@ -629,6 +629,8 @@ public class InstructionSet{
 
       private StoreSpec storeSpec;
 
+      private Constructor<?> constructor;
+
       private ByteCode(Class<?> _class, LoadSpec _loadSpec, StoreSpec _storeSpec, ImmediateSpec _immediate, PopSpec _pop,
             PushSpec _push, Operator _operator) {
          clazz = _class;
@@ -639,6 +641,21 @@ public class InstructionSet{
 
          loadSpec = _loadSpec;
          storeSpec = _storeSpec;
+         if (clazz != null) {
+
+            try {
+               constructor = clazz.getDeclaredConstructor(MethodModel.class, ByteReader.class, boolean.class);
+            } catch (final SecurityException e) {
+               // TODO Auto-generated catch block
+               e.printStackTrace();
+            } catch (final NoSuchMethodException e) {
+               // TODO Auto-generated catch block
+               e.printStackTrace();
+            } catch (final IllegalArgumentException e) {
+               // TODO Auto-generated catch block
+               e.printStackTrace();
+            }
+         }
       }
 
       private ByteCode(Class<?> _class, ImmediateSpec _immediate) {
@@ -731,18 +748,13 @@ public class InstructionSet{
 
       public Instruction newInstruction(MethodModel _methodModel, ByteReader byteReader, boolean _isWide) {
          Instruction newInstruction = null;
-         if (clazz != null) {
-
+         if (constructor != null) {
             try {
-               final Constructor<?> constructor = clazz.getDeclaredConstructor(MethodModel.class, ByteReader.class, boolean.class);
                newInstruction = (Instruction) constructor.newInstance(_methodModel, byteReader, _isWide);
                newInstruction.setLength(byteReader.getOffset() - newInstruction.getThisPC());
             } catch (final SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
-            } catch (final NoSuchMethodException e) {
-               // TODO Auto-generated catch block
-               e.printStackTrace();
             } catch (final IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();