jcov.h

来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 147 行

H
147
字号
/* * @(#)jcov.h	1.28 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * */#ifndef _JCOV_H#define _JCOV_H#include "jvmpi.h"#include "jcov_types.h"#include "jcov_hash.h"#include "jcov_md.h"#define MAX_PATH_LEN   1024#define JCOV_FILE_MAJOR_VER 2#define JCOV_FILE_MINOR_VER 0#define CRT_STATEMENT       0x0001#define CRT_BLOCK           0x0002#define CRT_ASSIGNMENT      0x0004#define CRT_FLOW_CONTROLLER 0x0008#define CRT_FLOW_TARGET     0x0010#define CRT_INVOKE          0x0020#define CRT_CREATE          0x0040#define CRT_BRANCH_TRUE     0x0080#define CRT_BRANCH_FALSE    0x0100typedef struct jcov_list_t_ {    void *elem;    struct jcov_list_t_ *next;} jcov_list_t;typedef struct {    UINT16 pc;         /* starting pc for this item                  */    UINT8  type;       /* item type                                  */    UINT8  instr_type; /* type of the first instruction in this item */    UINT32 where_line; /* line in source file or range_start         */    UINT32 where_pos;  /* position in source file or range_end       */    UINT32 count;      /* execution counter                          */} cov_item_t;typedef struct {    UINT16 pc_start;  /* starting pc for this item                    */    UINT16 pc_end;    /* ending pc for this item                      */    INT32  rng_start; /* line/position in the source code range start */    INT32  rng_end;   /* line/position in the source code range end   */    UINT16 flags;     /* item type bits (block, flow target, etc)     */} crt_entry_t;typedef struct {    jobjectID    id;           /* class ID                           */    jobjectID    id_sav;       /* class ID before moving on heap     */    char         *name;        /* class name                         */    char         *src_name;    /* src file name                      */    char         *timestamp;   /* timestamp as generated by compiler */    SSIZE_T      num_methods;  /* number of methods                  */    JVMPI_Method *methods;     /* methods                            */    UINT16       access_flags; /* access flags                       */    INT8         data_type;    /* type of gathered jcov data         */    INT8         unloaded;     /* true when class is unloaded        */} jcov_class_t;typedef struct {    jmethodID     id;            /* method ID                                          */    char          *name;         /* method name                                        */    char          *signature;    /* method signature                                   */    UINT16        access_flags;  /* access flags                                       */    int           *pc_cache;     /* keeps map of pc <-> cov_item correspondence        */    SSIZE_T       pc_cache_size; /* size of the map (is equal to method's code length) */    cov_item_t    *covtable;     /* coverage table                                     */    SSIZE_T       covtable_size; /* coverage table size                                */    jcov_class_t  *class;        /* class object defining this method                  */} jcov_method_t;typedef struct {    char          *name;          /* class name                             */    char          *src_name;      /* src file name                          */    char          *timestamp;     /* timestamp as generated by compiler     */    INT8          data_type;      /* type of gathered jcov data             */    UINT16        access_flags;   /* access flags                           */    jcov_method_t **method_cache; /* place to store methods of hooked class */    SSIZE_T       methods_total;  /* number of methods in cache             */} jcov_hooked_class_t;typedef struct {    JNIEnv      *id;                 /* thread ID                                           */    jcov_hash_t *hooked_class_table; /* keeps the hooked class' (name, src_name, timestamp) */} jcov_thread_t;/* range of values of cov_item_t.type - * as generated by compiler */enum {    CT_METHOD = 1,    CT_FICT_METHOD,    CT_BLOCK,    CT_FICT_RET,    CT_CASE,    CT_SWITCH_WO_DEF,    CT_BRANCH_TRUE,    CT_BRANCH_FALSE};/* range of values of cov_item_t.instr_type */enum {    INSTR_ANY = 0,    INSTR_IF,    INSTR_LOOKUPSW,    INSTR_TABLESW};#define CALL(f) (jvmpi_interface->f)#define INT32_AT(buf, off) (INT32)(buf[off] << 24 | buf[off+1] << 16 | buf[off+2] << 8 | buf[off+3])#define INT16_AT(buf, off) (INT16)(buf[off] << 8 | buf[off+1])extern JVMPI_Interface *jvmpi_interface;extern jcov_hash_t *class_key_table;extern jcov_hash_t *class_id_table;extern jcov_hash_t *method_table;extern jcov_hash_t *class_filt_table;extern long memory_allocated;#endif /* _JCOV_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?