📄 global.h
字号:
/* * Copyright (c) 1998-2002 Sun Microsystems, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * * Use is subject to license terms. *//*========================================================================= * SYSTEM: KVM * SUBSYSTEM: Global definitions * FILE: global.h * OVERVIEW: Global system-wide definitions. * AUTHOR: Antero Taivalsaari, Sun Labs, 1998 * Many others since then... *=======================================================================*//*========================================================================= * COMMENT: * This file contains declarations that do not belong to any * particular structure or subsystem of the VM. There are many * other additional global variable declarations in other files. *=======================================================================*//*========================================================================= * System include files *=======================================================================*//* The performs per-machine initialization */#include "machine_md.h"/*========================================================================= * Global compile-time constants and typedefs *=======================================================================*/#undef TRUE#undef FALSE#define NIL 0typedef enum { FALSE = 0, TRUE = 1} bool_t;/*========================================================================= * Global data type declarations *=======================================================================*//*========================================================================= * NOTE: These type declarations are not quite as portable as they * could be. It might be useful to declare specific type names for * all Java-specific types (e.g., jint instead of normal int, jlong * instead of long64, and so forth). *=======================================================================*/#define CELL 4 /* Size of a java word (= 4 bytes) */#define log2CELL 2 /* Shift amount equivalent to dividing by CELL */#define SHORTSIZE 2typedef unsigned char BYTE;typedef unsigned long cell; /* Must be 32 bits long! *//*========================================================================= * System-wide structure declarations *=======================================================================*/typedef struct classStruct* CLASS;typedef struct instanceClassStruct* INSTANCE_CLASS;typedef struct arrayClassStruct* ARRAY_CLASS;typedef struct objectStruct* OBJECT;typedef struct instanceStruct* INSTANCE;typedef struct arrayStruct* ARRAY;typedef struct stringInstanceStruct* STRING_INSTANCE;typedef struct throwableInstanceStruct* THROWABLE_INSTANCE;typedef struct internedStringInstanceStruct* INTERNED_STRING_INSTANCE;typedef struct classInstanceStruct* CLASS_INSTANCE;typedef struct byteArrayStruct* BYTEARRAY;typedef struct shortArrayStruct* SHORTARRAY;typedef struct pointerListStruct* POINTERLIST;typedef struct weakPointerListStruct* WEAKPOINTERLIST;typedef struct fieldStruct* FIELD;typedef struct fieldTableStruct* FIELDTABLE;typedef struct methodStruct* METHOD;typedef struct methodTableStruct* METHODTABLE;typedef struct stackMapStruct* STACKMAP;typedef struct icacheStruct* ICACHE;typedef struct chunkStruct* CHUNK;typedef struct staticChunkStruct* STATICCHUNK;typedef struct threadQueue* THREAD;typedef struct javaThreadStruct* JAVATHREAD;typedef struct monitorStruct* MONITOR;typedef struct stackStruct* STACK;typedef struct frameStruct* FRAME;typedef struct exceptionHandlerStruct* HANDLER;typedef struct exceptionHandlerTableStruct* HANDLERTABLE;typedef struct filePointerStruct* FILEPOINTER;typedef union constantPoolEntryStruct* CONSTANTPOOL_ENTRY;typedef struct constantPoolStruct* CONSTANTPOOL;typedef char* BYTES;typedef FILEPOINTER *FILEPOINTER_HANDLE;typedef OBJECT *OBJECT_HANDLE;typedef INSTANCE *INSTANCE_HANDLE;typedef ARRAY *ARRAY_HANDLE;typedef POINTERLIST *POINTERLIST_HANDLE;typedef WEAKPOINTERLIST *WEAKPOINTERLIST_HANDLE;typedef JAVATHREAD *JAVATHREAD_HANDLE;typedef BYTES *BYTES_HANDLE;typedef METHOD *METHOD_HANDLE;typedef FRAME *FRAME_HANDLE;typedef const char* *CONST_CHAR_HANDLE;typedef unsigned char* *UNSIGNED_CHAR_HANDLE;typedef STRING_INSTANCE *STRING_INSTANCE_HANDLE;typedef THROWABLE_INSTANCE *THROWABLE_INSTANCE_HANDLE;typedef THREAD *THREAD_HANDLE;#define ByteSizeToCellSize(n) (((n) + (CELL - 1)) >> log2CELL)#define StructSizeInCells(structName) ((sizeof(struct structName) + 3) >> 2)#define UnionSizeInCells(structName) ((sizeof(union structName) + 3) >> 2)/* Field and Method key types */typedef unsigned short NameKey;typedef unsigned short MethodTypeKey;typedef unsigned short FieldTypeKey;typedef union { struct { unsigned short nameKey; unsigned short typeKey; /* either MethodTypeKey or FieldTypeKey */ } nt; unsigned long i;} NameTypeKey;/* Machines such as the Palm that use something other than FILE* for stdin * and stdout should redefine this in their machine_md.h */#ifndef LOGFILEPTR#define LOGFILEPTR FILE*#endif/*========================================================================= * Locally defined include files *=======================================================================*/#include "messages.h"#include "main.h"#include "long.h"#include "hashtable.h"#include "class.h"#include "garbage.h"#include "interpret.h"#if ENABLE_JAVA_DEBUGGER#include "debuggerStreams.h"#include "debugger.h"#endif /* ENABLE_JAVA_DEBUGGER */#include "thread.h"#include "pool.h"#include "fields.h"#include "frame.h"#include "loader.h"#include "native.h"#include "cache.h"#include "runtime.h"#include "profiling.h"#include "verifier.h"#include "log.h"#include "property.h"/* The network protocol implementations. These *//* are not part of the CLDC Specification. */#include "commProtocol.h"#include "datagramProtocol.h"#include "socketProtocol.h"/*========================================================================= * Miscellaneous global variables *=======================================================================*//* Shared string buffer that is used internally by the VM */extern char str_buffer[];/* Requested heap size when starting the VM from command line */extern long RequestedHeapSize;/*========================================================================= * Global execution modes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -