## ruby.cpp
VALUE rbx_subtend_hidden_global(RbxSubtendHiddenGlobal type) {
NativeMethodEnvironment* env = NativeMethodEnvironment::get();
/* @todo Move these to static */
switch (type) {
case RbxQfalse:
return env->get_handle_global(<false immediate>);
case RbxQtrue:
return env->get_handle_global(<true ...>);
case RbxQnil:
return env->get_handle_global(<nil ...>);
case RbxQundef:
return env->get_handle_global(<undef ...>);
case RbxArray:
return env->get_handle_global(env->state()->globals.array.get());
## ruby.h
/* The immediates. */
#define Qfalse (rbx_subtend_hidden_global(RbxQfalse))
#define Qtrue (rbx_subtend_hidden_global(RbxQtrue))
#define Qnil (rbx_subtend_hidden_global(RbxQnil))
/** The undef object. NEVER EXPOSE THIS TO USER CODE. EVER. */
#define Qundef (rbx_subtend_hidden_global(RbxQundef))
/* Global Class objects */
#define rb_cArray (rbx_subtend_hidden_global(RbxArray))
#define rb_cBignum (rbx_subtend_hidden_global(RbxBignum))