preparing to produce debug information
This commit is contained in:
		| @ -1164,7 +1164,7 @@ hcl_logufmt (hcl, HCL_LOG_WARN, fmt, ustr, 0x6789); | ||||
| #if 0 | ||||
| // TODO: change the option name | ||||
| // in the INTERACTIVE mode, the compiler generates MAKE_FUNCTION for lambda functions. | ||||
| // in the non-INTERACTIVE mode, the compiler generates MAKE_CONTEXT for lambda functions. | ||||
| // in the non-INTERACTIVE mode, the compiler generates MAKE_BLOCK for lambda functions. | ||||
| { | ||||
| 	hcl_bitmask_t trait; | ||||
| 	hcl_getoption (hcl, HCL_TRAIT, &trait); | ||||
|  | ||||
| @ -1807,10 +1807,10 @@ static int __activate_function (hcl_t* hcl, hcl_oop_function_t rcv_func, hcl_ooi | ||||
| 	hcl_ooi_t local_ntmprs, i; | ||||
|  | ||||
| 	/* | ||||
| 	 * (defun sum (x) | ||||
| 	 *     (if (< x 2) 1 | ||||
| 	 *      else (+ x (sum (- x 1))))) | ||||
| 	 * (printf ">>>> %d\n" (sum 10)) | ||||
| 	  (defun sum (x) | ||||
| 	      (if (< x 2) 1 | ||||
| 	       else (+ x (sum (- x 1))))) | ||||
| 	  (printf ">>>> %d\n" (sum 10)) | ||||
| 	 */ | ||||
|  | ||||
| 	/* the receiver must be a function */ | ||||
| @ -3645,6 +3645,7 @@ hcl_oop_t hcl_execute (hcl_t* hcl) | ||||
| 	#endif | ||||
| 	} | ||||
|  | ||||
| 	/* create a virtual function object that hold the bytes codes generated */ | ||||
| 	func = make_function(hcl, hcl->code.lit.len, hcl->code.bc.ptr, hcl->code.bc.len); | ||||
| 	if (HCL_UNLIKELY(!func)) return HCL_NULL; | ||||
|  | ||||
|  | ||||
| @ -532,7 +532,7 @@ struct hcl_fpdec_t | ||||
| #define HCL_FUNCTION_GET_CODE_BYTE(m) HCL_OBJ_GET_TRAILER_BYTE(m) | ||||
| #define HCL_FUNCTION_GET_CODE_SIZE(m) HCL_OBJ_GET_TRAILER_SIZE(m) | ||||
|  | ||||
| #define HCL_FUNCTION_NAMED_INSTVARS 3   /* this excludes literal frames and byte codes */ | ||||
| #define HCL_FUNCTION_NAMED_INSTVARS 4   /* this excludes literal frames and byte codes */ | ||||
| typedef struct hcl_function_t hcl_function_t; | ||||
| typedef struct hcl_function_t* hcl_oop_function_t; | ||||
|  | ||||
| @ -552,6 +552,8 @@ struct hcl_function_t | ||||
| 	hcl_oop_t nargs;  /* smooi. number of arguments */ | ||||
| 	hcl_oop_context_t home; /* home context. nil for the initial function */ | ||||
|  | ||||
| 	hcl_oop_t dbgi_file_offset; | ||||
|  | ||||
| 	/* == variable indexed part == */ | ||||
| 	hcl_oop_t literal_frame[1]; /* it stores literals. it may not exist */ | ||||
|  | ||||
| @ -838,7 +840,6 @@ enum hcl_dbgi_type_t | ||||
| 	HCL_DBGI_TYPE_CODE_FILE    = 0, | ||||
| 	HCL_DBGI_TYPE_CODE_CLASS   = 1, | ||||
| 	HCL_DBGI_TYPE_CODE_TEXT    = 2, | ||||
| 	/* TODO: interface? etc? */ | ||||
| 	HCL_DBGI_TYPE_CODE_METHOD  = 3, /* method instruction location information */ | ||||
|  | ||||
| 	/* low 8 bits */ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user