Exemplo n.º 1
0
Handle<Script> Factory::NewScript(Handle<String> source) {
  // Generate id for this script.
  int id;
  if (Heap::last_script_id()->IsUndefined()) {
    // Script ids start from one.
    id = 1;
  } else {
    // Increment id, wrap when positive smi is exhausted.
    id = Smi::cast(Heap::last_script_id())->value();
    id++;
    if (!Smi::IsValid(id)) {
      id = 0;
    }
  }
  Heap::SetLastScriptId(Smi::FromInt(id));

  // Create and initialize script object.
  Handle<Proxy> wrapper = Factory::NewProxy(0, TENURED);
  Handle<Script> script = Handle<Script>::cast(NewStruct(SCRIPT_TYPE));
  script->set_source(*source);
  script->set_name(Heap::undefined_value());
  script->set_id(Heap::last_script_id());
  script->set_line_offset(Smi::FromInt(0));
  script->set_column_offset(Smi::FromInt(0));
  script->set_data(Heap::undefined_value());
  script->set_context_data(Heap::undefined_value());
  script->set_type(Smi::FromInt(Script::TYPE_NORMAL));
  script->set_compilation_type(Smi::FromInt(Script::COMPILATION_TYPE_HOST));
  script->set_wrapper(*wrapper);
  script->set_line_ends(Heap::undefined_value());
  script->set_eval_from_function(Heap::undefined_value());
  script->set_eval_from_instructions_offset(Smi::FromInt(0));

  return script;
}
Exemplo n.º 2
0
void minit_vsapsv()
{
	if( vsapServEnv == 0 ){
		vsapServEnv = NewStruct(VsapServEnv);
		bind_exlock = -1;
		bind_nlisten = -1;
	}
}
Exemplo n.º 3
0
void SetImplicitArgs(TArray<PType *> *args, TArray<DWORD> *argflags, TArray<FName> *argnames, PStruct *cls, DWORD funcflags, int useflags)
{
	// Must be called before adding any other arguments.
	assert(args == nullptr || args->Size() == 0);
	assert(argflags == nullptr || argflags->Size() == 0);

	if (funcflags & VARF_Method)
	{
		// implied self pointer
		if (args != nullptr)		args->Push(NewPointer(cls)); 
		if (argflags != nullptr)	argflags->Push(VARF_Implicit | VARF_ReadOnly);
		if (argnames != nullptr)	argnames->Push(NAME_self);
	}
	if (funcflags & VARF_Action)
	{
		// implied caller and callingstate pointers
		if (args != nullptr)
		{
			// Special treatment for weapons and CustomInventory flagged functions: 'self' is not the defining class but the actual user of the item, so this pointer must be of type 'Actor'
			if (useflags & (SUF_WEAPON|SUF_ITEM))
			{
				args->Insert(0, NewPointer(RUNTIME_CLASS(AActor)));	// this must go in before the real pointer to the containing class.
			}
			else
			{
				args->Push(NewPointer(cls));
			}
			args->Push(NewPointer(NewStruct("FStateParamInfo", nullptr)));
		}
		if (argflags != nullptr)
		{
			argflags->Push(VARF_Implicit | VARF_ReadOnly);
			argflags->Push(VARF_Implicit | VARF_ReadOnly);
		}
		if (argnames != nullptr)
		{
			argnames->Push(NAME_invoker);
			argnames->Push(NAME_stateinfo);
		}
	}
}
Exemplo n.º 4
0
/*
 *	CLIENT
 */
#define FOR_CONNECT	1
#define FOR_ACCEPT	2

#define FOR_HTCONNECT	0x10
#define FOR_HTBIND	0x20
#define FOR_HTACCEPT	0x40
#define FOR_HTALL	(FOR_HTCONNECT|FOR_HTBIND|FOR_HTACCEPT)

typedef struct {
  const	char   *r_host;
	int	r_port;
  const	char   *r_hostport;
	char	r_methods; /* CONNECT, ACCEPT */
  const	char   *r_hosts; /* remote client/server hosts to be relayed ? */
} ServerV;
typedef struct {
	ServerV ve_serverV[8];
	int	ve_serverX;
  const	char   *ve_Socknames[256]; /**/
  const	char   *ve_Peernames[256]; /**/
} VsapClntEnv;
static VsapClntEnv *vsapClntEnv;
#define serverV		vsapClntEnv->ve_serverV
#define serverX		vsapClntEnv->ve_serverX
#define Socknames	vsapClntEnv->ve_Socknames
#define Peernames	vsapClntEnv->ve_Peernames


#ifndef OPT_S /*{*/
void minit_vsapcl(){
	if( vsapClntEnv == 0 )
		vsapClntEnv = NewStruct(VsapClntEnv);
}
Exemplo n.º 5
0
void minit_icache()
{
	if( iCacheEnv == 0 )
		iCacheEnv = NewStruct(ICacheEnv);
}
Exemplo n.º 6
0
Handle<AccessorInfo> Factory::NewAccessorInfo() {
  Handle<AccessorInfo> info =
      Handle<AccessorInfo>::cast(NewStruct(ACCESSOR_INFO_TYPE));
  info->set_flag(0);  // Must clear the flag, it was initialized as undefined.
  return info;
}