Hi

We are in the process of porting our application from Windows (using the 
Microsoft JScript engine) to Linux (using v8). Our application executes 
JavaScript in multiple separate threads of execution, and requires a large 
number of callbacks (i.e. ~ 200) into our server architecture.

What we are finding is that executing the following statement where 
"global" is an v8::ObjectTemplate with 200 methods takes over 300ms. If we 
do the same with a v8::ObjectTemplate with 2 methods, it takes 40ms. 

        // Create a new context based on the global object template
        v8::Handle<v8::Context> oContext = v8::Context::New( pIsolate, 
NULL, global );

Is there someway of improving the performance of this? 

Currently, I am running each script invocation (i.e. which are on different 
threads in the same process) as a separate v8::Isolation and consequently 
v8::Context. The global object template never changes. Is there away of 
sharing the global template across the threads? I have seen that snapshots 
may help, but the documentation is not very good. Is there any examples as 
the web?

Thanks

Gavin Glynn :)

NB: The full code for my script execution function is as follows:

----------------------------

    // Declare the return value
    DataObjects::DAttributeInstanceValue vResult;

    // Create a v8 isolate object
    v8::Isolate* pIsolate = v8::Isolate::New();

    // Execute the script
    {
        // Lock the v8 isolate object
        v8::Locker oLocker( pIsolate );

        // Create a scope for the v8 isolate object
        v8::Isolate::Scope oIsolateScope( pIsolate );

        // Create a handle scope
        v8::HandleScope oHandleScope( pIsolate );

        // Create a template for the global object where we set the 
built-in global functions.
        v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New( 
pIsolate );

        // Bind the functions to the global object template
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageFilterExecute" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageFilterExecute, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageFilterReset" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageFilterReset, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageFilterAdd" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageFilterAdd, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageFilterStart" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageFilterStart, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VESessionToken" 
), v8::FunctionTemplate::New( pIsolate, LocalSessionToken, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetDocumentFromText" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetDocumentFromText, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEEnablePageObjectActions" ), v8::FunctionTemplate::New( pIsolate, 
LocalEnablePageObjectActions, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEGuid" ), 
v8::FunctionTemplate::New( pIsolate, LocalGuid, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSAddRelationshipSearch" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSAddRelationshipSearch, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeFromIsoFormat" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeFromIsoFormat, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeToIsoFormat" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeToIsoFormat, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetRecordsetFieldByIndex" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetRecordsetFieldByIndex, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetRecordsetField" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetRecordsetField, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEResetRecordset" ), v8::FunctionTemplate::New( pIsolate, 
LocalResetRecordset, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetNextRecordsetRow" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetNextRecordsetRow, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsMoreRecordsetRows" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsMoreRecordsetRows, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetToFirstRecordsetRow" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetToFirstRecordsetRow, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEHasRecordset" 
), v8::FunctionTemplate::New( pIsolate, LocalAccountIsActivated, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VERemoveAllAttributeOptions" ), v8::FunctionTemplate::New( pIsolate, 
LocalRemoveAllAttributeOptions, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VERemoveAttributeOption" ), v8::FunctionTemplate::New( pIsolate, 
LocalRemoveAttributeOption, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAddAttributeOption" ), v8::FunctionTemplate::New( pIsolate, 
LocalAddAttributeOption, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VESingleSpace" 
), v8::FunctionTemplate::New( pIsolate, LocalSingleSpace, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsCurrentUser" 
), v8::FunctionTemplate::New( pIsolate, LocalIsCurrentUser, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetDocumentFileName" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetDocumentFileName, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetDocumentType" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetDocumentType, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsUniqueUserName" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsUniqueUserName, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEResetPasswordForPortal" ), v8::FunctionTemplate::New( pIsolate, 
LocalResetPasswordForPortal, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAllocateAndActivateAccountForPortal" ), v8::FunctionTemplate::New( 
pIsolate, LocalAllocateAndActivateAccountForPortal, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEActivateAccountForPortal" ), v8::FunctionTemplate::New( pIsolate, 
LocalActivateAccountForPortal, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetProcessParameter" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetProcessParameter, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAccountIsActivated" ), v8::FunctionTemplate::New( pIsolate, 
LocalAccountIsActivated, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAccountIsNotActivated" ), v8::FunctionTemplate::New( pIsolate, 
LocalAccountIsNotActivated, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEActivateAccount" ), v8::FunctionTemplate::New( pIsolate, 
LocalActivateAccount, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEActivitiesAreDelegated" ), v8::FunctionTemplate::New( pIsolate, 
LocalActivitiesAreDelegated, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAllocateAccount" ), v8::FunctionTemplate::New( pIsolate, 
LocalAllocateAccount, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAllocateAndActivateAccount" ), v8::FunctionTemplate::New( pIsolate, 
LocalAllocateAndActivateAccount, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAttributeDocumentCopy" ), v8::FunctionTemplate::New( pIsolate, 
LocalAttributeDocumentCopy, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAttributeFormat" ), v8::FunctionTemplate::New( pIsolate, 
LocalAttributeFormat, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAttributeHasValue" ), v8::FunctionTemplate::New( pIsolate, 
LocalAttributeHasValue, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEAttributeModified" ), v8::FunctionTemplate::New( pIsolate, 
LocalAttributeModified, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarCurrentWeek" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarCurrentWeek, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarCurrentYear" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarCurrentYear, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarDate" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarDate, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarDateTime" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarDateTime, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarDay" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarDay, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarDayNumber" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarDayNumber, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarDayOfWeek" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarDayOfWeek, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarDayOfYear" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarDayOfYear, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarDaysSince" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarDaysSince, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarEarliestOf" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarEarliestOf, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarElapsed" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarElapsed, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarEndDate" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarEndDate, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarHour" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarHour, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarIsFirstDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarIsFirstDay, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarIsLastDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarIsLastDay, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarIsWeekday" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarIsWeekday, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarIsWeekend" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarIsWeekend, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarIsWorkDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarIsWorkDay, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarLatestOf" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarLatestOf, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarMinute" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarMinute, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarMonth" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarMonth, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarMonthName" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarMonthName, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarNearWorkDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarNearWorkDay, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarNextWeek" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarNextWeek, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarNextWorkDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarNextWorkDay, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarNextYear" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarNextYear, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarNumberOf" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarNumberOf, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarPrevWorkDay" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarPreviousWeek, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarPreviousWeek" ), v8::FunctionTemplate::New( pIsolate, 
LocalAccountIsActivated, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarPreviousYear" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarPreviousYear, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarSecond" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarSecond, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarStartDate" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarStartDate, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarStartOf" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarStartOf, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarTime" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarTime, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarTimespanOf" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarTimespanOf, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarWeek" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarWeek, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarWeekNumber" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarWeekNumber, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECalendarWeekOfYear" ), v8::FunctionTemplate::New( pIsolate, 
LocalCalendarWeekOfYear, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECalendarYear" 
), v8::FunctionTemplate::New( pIsolate, LocalCalendarYear, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECancel" ), 
v8::FunctionTemplate::New( pIsolate, LocalCancel, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECancelDelegation" ), v8::FunctionTemplate::New( pIsolate, 
LocalCancelDelegation, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VECheckLoop" ), 
v8::FunctionTemplate::New( pIsolate, LocalCheckLoop, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VECopyActivityOutput" ), v8::FunctionTemplate::New( pIsolate, 
LocalCopyActivityOutput, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSAddDependentSearch" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSAddDependentSearch, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSAddSimpleSearch" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSAddSimpleSearch, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSAddWorkflowSearch" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSAddWorkflowSearch, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSIntersectionOperator" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSIntersectionOperator, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSProcessStack" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSProcessStack, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEDSResetStack" 
), v8::FunctionTemplate::New( pIsolate, LocalDSResetStack, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDSUnionOperator" ), v8::FunctionTemplate::New( pIsolate, 
LocalDSUnionOperator, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeAdjust" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeAdjust, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeCompare" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeCompare, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeDifference" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeDifference, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeIsBetween" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeIsBetween, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDateTimeIsEqual" ), v8::FunctionTemplate::New( pIsolate, 
LocalDateTimeIsEqual, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEDateToString" 
), v8::FunctionTemplate::New( pIsolate, LocalDateToString, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDelegateActivities" ), v8::FunctionTemplate::New( pIsolate, 
LocalDelegateActivities, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDeregisterOrganisation" ), v8::FunctionTemplate::New( pIsolate, 
LocalDeregisterOrganisation, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEDoesPackageHaveAnAttribute" ), v8::FunctionTemplate::New( pIsolate, 
LocalDoesPackageHaveAnAttribute, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEEmptyString" 
), v8::FunctionTemplate::New( pIsolate, LocalEmptyString, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEEnablePageObject" ), v8::FunctionTemplate::New( pIsolate, 
LocalEnablePageObject, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEEndLoop" ), 
v8::FunctionTemplate::New( pIsolate, LocalEndLoop, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEExtMethod" ), 
v8::FunctionTemplate::New( pIsolate, LocalExtMethod, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEFireAction" ), 
v8::FunctionTemplate::New( pIsolate, LocalFireAction, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEGet" ), 
v8::FunctionTemplate::New( pIsolate, LocalGet, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetAttributePackageIndex" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetAttributePackageIndex, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEGetList" ), 
v8::FunctionTemplate::New( pIsolate, LocalGetList, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEGetNextAnchor" 
), v8::FunctionTemplate::New( pIsolate, LocalGetNextAnchor, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetNextConditionAnchor" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetNextConditionAnchor, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEGetNextContext" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetNextContext, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEHidePageObject" ), v8::FunctionTemplate::New( pIsolate, 
LocalHidePageObject, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEInactivateAccount" ), v8::FunctionTemplate::New( pIsolate, 
LocalInactivateAccount, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEInternalMethod" ), v8::FunctionTemplate::New( pIsolate, 
LocalInternalMethod, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsAnchorValid" 
), v8::FunctionTemplate::New( pIsolate, LocalIsAnchorValid, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsConditionAnchorValid" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsConditionAnchorValid, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsEqual" ), 
v8::FunctionTemplate::New( pIsolate, LocalIsEqual, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsGreaterThan" 
), v8::FunctionTemplate::New( pIsolate, LocalIsGreaterThan, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsGreaterThanEqual" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsGreaterThanEqual, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsLessThan" ), 
v8::FunctionTemplate::New( pIsolate, LocalIsLessThan, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsLessThanEqual" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsLessThanEqual, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsPackageCreatedInProcess" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsPackageCreatedInProcess, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsPackageRelated" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsPackageRelated, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEIsValueBetween" ), v8::FunctionTemplate::New( pIsolate, 
LocalIsValueBetween, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsValueIn" ), 
v8::FunctionTemplate::New( pIsolate, LocalIsValueIn, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEIsValueLike" 
), v8::FunctionTemplate::New( pIsolate, LocalIsValueLike, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEMathPercentAdjustment" ), v8::FunctionTemplate::New( pIsolate, 
LocalMathPercentAdjustment, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VENewLine" ), 
v8::FunctionTemplate::New( pIsolate, LocalNewLine, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VENow" ), 
v8::FunctionTemplate::New( pIsolate, LocalNow, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEOrganisationIsDeregistered" ), v8::FunctionTemplate::New( pIsolate, 
LocalOrganisationIsDeregistered, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEOrganisationIsRegistered" ), v8::FunctionTemplate::New( pIsolate, 
LocalOrganisationIsRegistered, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEPackageAdd" ), 
v8::FunctionTemplate::New( pIsolate, LocalPackageAdd, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageAddForUpdate" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageAddForUpdate, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageAssociate" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageAssociate, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEPackageRemove" 
), v8::FunctionTemplate::New( pIsolate, LocalPackageRemove, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEPackageSet" ), 
v8::FunctionTemplate::New( pIsolate, LocalPackageSet, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEPackageSet2" 
), v8::FunctionTemplate::New( pIsolate, LocalPackageSet2, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPackageSetInstance" ), v8::FunctionTemplate::New( pIsolate, 
LocalPackageSetInstance, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPercentAdjustment" ), v8::FunctionTemplate::New( pIsolate, 
LocalPercentAdjustment, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEPercentOf" ), 
v8::FunctionTemplate::New( pIsolate, LocalPercentOf, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPreExecuteSetCondition" ), v8::FunctionTemplate::New( pIsolate, 
LocalPreExecuteSetCondition, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEPreExecuteSetExpression" ), v8::FunctionTemplate::New( pIsolate, 
LocalPreExecuteSetExpression, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VERegisterOrganisation" ), v8::FunctionTemplate::New( pIsolate, 
LocalRegisterOrganisation, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEReset" ), 
v8::FunctionTemplate::New( pIsolate, LocalReset, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEResetAnchorList" ), v8::FunctionTemplate::New( pIsolate, 
LocalResetAnchorList, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEResetContextStack" ), v8::FunctionTemplate::New( pIsolate, 
LocalResetContextStack, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEResetPackage" 
), v8::FunctionTemplate::New( pIsolate, LocalResetPackage, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEResetPassword" 
), v8::FunctionTemplate::New( pIsolate, LocalResetPassword, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VEResolveContextStack" ), v8::FunctionTemplate::New( pIsolate, 
LocalResolveContextStack, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VESet" ), 
v8::FunctionTemplate::New( pIsolate, LocalSet, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetActivityOutput" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetActivityOutput, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetAttributeDelta" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetAttributeDelta, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetConditionAnchorResult" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetConditionAnchorResult, v8::External::New( pIsolate, m_pScriptObject 
) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VESetDefault" ), 
v8::FunctionTemplate::New( pIsolate, LocalSetDefault, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetDocumentFileName" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetDocumentFileName, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetDocumentType" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetDocumentType, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetObjectProperty" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetObjectProperty, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetObjectPropertyColor" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetObjectPropertyColor, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VESetRuleResult" 
), v8::FunctionTemplate::New( pIsolate, LocalSetRuleResult, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetToFirstAnchor" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetToFirstAnchor, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetToFirstConditionAnchor" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetToFirstConditionAnchor, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESetToFirstContext" ), v8::FunctionTemplate::New( pIsolate, 
LocalSetToFirstContext, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESimpleCondition" ), v8::FunctionTemplate::New( pIsolate, 
LocalSimpleCondition, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VESimpleExpression" ), v8::FunctionTemplate::New( pIsolate, 
LocalSimpleExpression, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEStartLoop" ), 
v8::FunctionTemplate::New( pIsolate, LocalStartLoop, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEStop" ), 
v8::FunctionTemplate::New( pIsolate, LocalStop, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VETextConcatenateGroup" ), v8::FunctionTemplate::New( pIsolate, 
LocalTextConcatenateGroup, v8::External::New( pIsolate, m_pScriptObject ) ) 
);
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VETextJoinGroup" 
), v8::FunctionTemplate::New( pIsolate, LocalTextJoinGroup, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VETimespanAverage" ), v8::FunctionTemplate::New( pIsolate, 
LocalTimespanAverage, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VETimespanCompare" ), v8::FunctionTemplate::New( pIsolate, 
LocalTimespanCompare, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"VETimespanIsBetween" ), v8::FunctionTemplate::New( pIsolate, 
LocalTimespanIsBetween, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEToday" ), 
v8::FunctionTemplate::New( pIsolate, LocalToday, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEVerify" ), 
v8::FunctionTemplate::New( pIsolate, LocalVerify, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"VEWarn" ), 
v8::FunctionTemplate::New( pIsolate, LocalWarn, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"__addLog" ), 
v8::FunctionTemplate::New( pIsolate, LocalAddLog, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"__getActivityID" 
), v8::FunctionTemplate::New( pIsolate, LocalGetActivityID, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"__getActivityInstanceID" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetActivityInstanceID, v8::External::New( pIsolate, m_pScriptObject ) 
) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"__getAnchorEntityID" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetAnchorEntityID, v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"__getAnchorEntityInstanceID" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetAnchorEntityInstanceID, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"__getAnchorPropertyCollectionID" ), v8::FunctionTemplate::New( pIsolate, 
LocalGetAnchorPropertyCollectionID, v8::External::New( pIsolate, 
m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, 
u8"__getGlobalAnchorEntityInstanceID" ), v8::FunctionTemplate::New( 
pIsolate, LocalGetGlobalAnchorEntityInstanceID, v8::External::New( 
pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"__getSessionID" 
), v8::FunctionTemplate::New( pIsolate, LocalGetSessionID, 
v8::External::New( pIsolate, m_pScriptObject ) ) );
        global->Set( v8::String::NewFromUtf8( pIsolate, u8"__saveLog" ), 
v8::FunctionTemplate::New( pIsolate, LocalSaveLog, v8::External::New( 
pIsolate, m_pScriptObject ) ) );

        // Create a new context based on the global object template
        v8::Handle<v8::Context> oContext = v8::Context::New( pIsolate, 
NULL, global );

        // Create a scope for the v8 context object
        v8::Context::Scope oContextScope( oContext );

        // Create a new v8 try/catch object
        v8::TryCatch oTryCatch;

        // Initialise the scripting engine ready to execute
        v8::Handle<v8::String> oSource = v8::String::NewFromUtf8( pIsolate, 
Utility::ConvertUTF32ToUTF8( sJavaScript ).c_str( ) );

        // Parse the script
        v8::Handle<v8::Script> oScript = v8::Script::Compile( oSource );

        // Confirm the script is empty
        if ( oScript.IsEmpty( ) == true ) {
            // Report the error
            ReportScriptError( pIsolate, &oTryCatch );
        } else {
            // Execute the script
            v8::Handle<v8::Value> result = oScript->Run( );

            // Confirm there is an exception
            if ( oTryCatch.HasCaught( ) == true ) {
                // Report the error
                ReportScriptError( pIsolate, &oTryCatch );
            } else {
                // Confirm the pre-execution state is unknown
                if ( m_lPreExecutionState == Common::PES_None ) {
                    // Confirm there is a result
                    if ( result.IsEmpty( ) == false ) {
                        // Confirm this is a boolean value
                        if ( ( result->IsBoolean( ) == true ) || ( 
result->IsBooleanObject( ) == true ) ) {
                            // Get the boolean value
                            v8::Local<v8::Boolean> bValue = 
result->ToBoolean( );

                            // Set the return value
                            vResult = DataObjects::DAttributeInstanceValue( 
bValue->Value( ) );
                        }

                        // Confirm this is a signed integer value
                        else if ( result->IsInt32( ) == true ) {
                            // Get the numeric value
                            v8::Local<v8::Int32> nValue = result->ToInt32( 
);

                            // Set the return value
                            vResult = DataObjects::DAttributeInstanceValue( 
(long) nValue->Value( ) );
                        }

                        // Confirm this is a unsigned integer value
                        else if ( result->IsUint32( ) == true ) {
                            // Get the numeric value
                            v8::Local<v8::Uint32> nValue = 
result->ToUint32( );

                            // Set the return value
                            vResult = DataObjects::DAttributeInstanceValue( 
(long) nValue->Value( ) );
                        }

                        // Confirm this is a floating point value
                        else if ( ( result->IsNumber( ) == true ) || ( 
result->IsNumberObject( ) == true ) ) {
                            // Get the numeric value
                            v8::Local<v8::Number> nValue = 
result->ToNumber( );

                            // Set the return value
                            vResult = DataObjects::DAttributeInstanceValue( 
nValue->Value( ) );
                        }

                        // Confirm this is a string value
                        else if ( ( result->IsString( ) == true ) || ( 
result->IsStringObject( ) == true ) ) {
                            // Get the string value
                            v8::String::Utf8Value sUnicodeValue( result );

                            // Set the return value
                            vResult = DataObjects::DAttributeInstanceValue( 
Utility::ConvertUTF8ToUTF32( *sUnicodeValue ) );
                        }

                        // Confirm this a date value
                        else if ( result->IsDate( ) == true ) {
                            // Get the date value in milliseconds
                            time_t tmValue = (time_t) result->NumberValue( 
);

                            // Convert the epoch date value to date/time 
string
                            struct tm* pTimeInfo = gmtime( &tmValue );

                            // Set the return value
                            std::ostringstream streamValue;
                            streamValue << std::setfill( '0' )
                                        << std::setw( 4 ) << ( 
pTimeInfo->tm_year + 1900 )
                                        << u8"-"
                                        << std::setw( 2 ) << ( 
pTimeInfo->tm_mon + 1 )
                                        << u8"-"
                                        << std::setw( 2 ) << 
pTimeInfo->tm_mday
                                        << u8" "
                                        << std::setw( 2 ) << 
pTimeInfo->tm_hour
                                        << u8":"
                                        << std::setw( 2 ) << 
pTimeInfo->tm_min
                                        << u8":"
                                        << std::setw( 2 ) << 
pTimeInfo->tm_sec
                                        << u8";"
                                        << std::setw( 2 ) << lTimeZoneID
                                        << u8";"
                                        << std::setw( 2 ) << lCalendarID;
                            vResult = DataObjects::DAttributeInstanceValue( 
Utility::ConvertUTF8ToUTF32( streamValue.str( ) ) );
                        }
                    }
                }
            }
        }
    }

    // Free the v8 isolate object
    pIsolate->Dispose( );

    // Return the result
    return vResult;

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to