diff -r dc7d3b7a918c -r 9c544823d090 src/Interpreter.cpp --- a/src/Interpreter.cpp Sat Aug 04 17:51:43 2012 -0700 +++ b/src/Interpreter.cpp Sat Aug 04 19:33:06 2012 -0700 @@ -25,6 +25,7 @@ #include "Reference.h" #include "Strings.h" #include "Environments.h" +#include "Structures.h" #include "Heap-inl.h" using namespace ke; @@ -699,6 +700,17 @@ break; } +case OP_NEWSTRUCT: +{ + Heap::Tenure tenure = (Heap::Tenure)top.pc[1]; + Local map(zone, StructMap::cast(top.fp->code()->map(READ_UINT32(top.pc + 1)))); + top.sp->obj = Struct::New(zone, map, tenure); + if (!top.sp->obj) + goto error; + top.sp++; + break; +} + case OP_SAVELIFO: { unsigned slot = READ_UINT32(top.pc);