Index: /trunk/ab5.0/abdev/compiler_x64/Compile_Func.cpp
===================================================================
--- /trunk/ab5.0/abdev/compiler_x64/Compile_Func.cpp	(revision 666)
+++ /trunk/ab5.0/abdev/compiler_x64/Compile_Func.cpp	(revision 667)
@@ -12,4 +12,5 @@
 	if( lstrcmpi( FuncName, "AddressOf" ) == 0 )		return FUNC_ADDRESSOF;
 	if( lstrcmpi( FuncName, "SizeOf" ) == 0 )			return FUNC_SIZEOF;
+	if( lstrcmpi( FuncName, "__ClassSizeOf" ) == 0 )			return FUNC_CLASS_SIZEOF;
 	if( lstrcmpi( FuncName, "VarPtr" ) == 0 )			return FUNC_VARPTR;
 	if( lstrcmpi( FuncName, "ObjPtr" ) == 0 )			return FUNC_OBJPTR;
@@ -383,4 +384,17 @@
 	}
 
+	int typeSize = tempType.GetSize();
+
+	//mov rax,size
+	compiler.codeGenerator.op_mov_RV(sizeof(_int64),REG_RAX,typeSize);
+}
+void Opcode_Func_ClassSizeOf( const std::string &typeName )
+{
+	Type tempType;
+	if( !compiler.StringToType( typeName, tempType ) ){
+		compiler.errorMessenger.Output(3,typeName,cp);
+		return;
+	}
+
 	int typeSize = ( tempType.IsObject() ) ?
 		tempType.GetClass().GetSize() : tempType.GetSize();
@@ -573,4 +587,8 @@
 			resultType.SetBasicType( DEF_LONG );
 			break;
+		case FUNC_CLASS_SIZEOF:
+			if( isCallOn ) Opcode_Func_ClassSizeOf(Parameter);
+			resultType.SetBasicType( DEF_LONG );
+			break;
 		case FUNC_VARPTR:
 			Opcode_Func_VarPtr( Parameter, resultType, isCallOn );
Index: /trunk/ab5.0/abdev/compiler_x64/FunctionValue.h
===================================================================
--- /trunk/ab5.0/abdev/compiler_x64/FunctionValue.h	(revision 666)
+++ /trunk/ab5.0/abdev/compiler_x64/FunctionValue.h	(revision 667)
@@ -24,4 +24,5 @@
 #define FUNC_SYSTEM_GET_DEFAULT_CONSTRUCTOR		0x0629
 #define FUNC_SYSTEM_GET_DESTRUCTOR				0x062A
+#define FUNC_CLASS_SIZEOF	0x062B
 
 //ポインタ
