mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-24 04:09:10 +03:00
1dc7b74e4e
* [RefC] Suppress code generation for unnecessary arglist wrappers. * [RefC] cleanup dead code of arglist. * Removed Value_Arglist to reduce Closure's allocation overhead. * fix linter error * [RefC] make trampoline() safety. * [RefC] cleanup cStatementsFromANF to keep code simple. * fix linter error * fix linter error * In another time, another galaxy. THE LINTER INVADORS conquaer the all humanity and make them slaves. Under 2024, a only leaved job for every humans is adjusting spaces of source code, or just type gg0vG$== in vim. * [ test ] update golden value * added supports 32 params on closure. * [RefC] [Cleanup] removing duplicate codes. * [RefC] Switch calling conventions based on the number of arguments to avoid limits on the number of arguments and to reduce stack usage. * [RefC] Argument that are too large are placed on the heap, as are closures. * [RefC] use idris2_malloc instead of malloc. * [RefC] [Cleanup] Keep pure things pure. * [RefC] Mapped some special constructors to NULL. This reduces malloc cost and generates simpler code in ConCase. But not work yet. * [RefC] fix merge failure. * [RefC] stringOps.c replace NULL for NIL. * [RefC] cleanup * [RefC] ConstCase now generate simple if-then statements instead of using helpers. This reduces malloc/free costs. * fix indentation * fix whitespaces * [RefC] The name field in Value_Constructor was restored for tycon. But changed to static const*. Hopefully the C compiler will remove the common string constants. The smartest thing to do would be to create a dummy global variable and use its address as a tag, but that would depend on the C compiler to resolve conflicts. * [refc] a big changes of the space * [RefC] Little tricks to reduce temporary variables * spaces * [RefC] fix compiler warnings * [RefC] [test] Perform memory leak analysis, if valgrind is installed. * [RefC] Fix invalid memory read. Fix C compiler warnings. * [RefC] Fix invalid memory read of strSubstr. [test] Perform memory leak analysis, if valgrind is installed. * [test] fix junk line * linter * linter * linter * linter * [RefC] merge with erase_trivial_constuctors * merge w/ erase_trivial_constructors * Revert "merge w/ erase_trivial_constructors" This reverts commitbe593a3715
. * Revert "[RefC] merge with erase_trivial_constuctors" This reverts commit3c21eb45d8
. * merge w/ upstream/main * fix merge failure * rename * fix renaming * [RefC] fix merge fail * [RefC] renamed C functions for safty. * [RefC] cleanup * [RefC] Fix constructor tag of UnconsResult.CHARACTER. --------- Co-authored-by: Mathew Polzin <matt.polzin@gmail.com> Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
25 lines
853 B
C
25 lines
853 B
C
#pragma once
|
|
|
|
#include "cBackend.h"
|
|
#include "casts.h"
|
|
|
|
/* stringLength : String -> Int64!? WTH!. do you have over 4Gbytes text on
|
|
* memory!? */
|
|
#define stringLength(x) (idris2_mkInt64(strlen(((Value_String *)(x))->str)))
|
|
#define head(x) (idris2_cast_String_to_Char(x))
|
|
Value *tail(Value *str);
|
|
Value *reverse(Value *str);
|
|
Value *strIndex(Value *str, Value *i);
|
|
Value *strCons(Value *c, Value *str);
|
|
Value *strAppend(Value *a, Value *b);
|
|
Value *strSubstr(Value *s, Value *start, Value *len);
|
|
char *fastPack(Value *charList);
|
|
Value *fastUnpack(char *str);
|
|
char *fastConcat(Value *strList);
|
|
|
|
Value *stringIteratorNew(char *str);
|
|
Value *onCollectStringIterator(Value_Pointer *ptr, void *null);
|
|
Value *stringIteratorToString(void *a, char *str, Value *it_p,
|
|
Value_Closure *f);
|
|
Value *stringIteratorNext(char *s, Value *it_p);
|