Function: make-symbol

make-symbol is a function defined in alloc.c.

Signature

(make-symbol NAME)

Documentation

Return a newly allocated uninterned symbol whose name is NAME.

Its value is void, and its function definition and property list are nil.

Other relevant functions are documented in the symbol group.

View in manual

Shortdoc

;; symbol
(make-symbol "abc")
    => abc

Source Code

// Defined in /usr/src/emacs/src/alloc.c
{
  Lisp_Object val;

  CHECK_STRING (name);

  MALLOC_BLOCK_INPUT;

  if (symbol_free_list)
    {
      ASAN_UNPOISON_SYMBOL (symbol_free_list);
      XSETSYMBOL (val, symbol_free_list);
      symbol_free_list = symbol_free_list->u.s.next;
    }
  else
    {
      if (symbol_block_index == SYMBOL_BLOCK_SIZE)
	{
	  struct symbol_block *new
	    = lisp_malloc (sizeof *new, false, MEM_TYPE_SYMBOL);
	  ASAN_POISON_SYMBOL_BLOCK (new);
	  new->next = symbol_block;
	  symbol_block = new;
	  symbol_block_index = 0;
	}

      ASAN_UNPOISON_SYMBOL (&symbol_block->symbols[symbol_block_index]);
      XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]);
      symbol_block_index++;
    }

  MALLOC_UNBLOCK_INPUT;

  init_symbol (val, name);
  tally_consing (sizeof (struct Lisp_Symbol));
  symbols_consed++;
  return val;
}