コード例 #1
0
ファイル: Stack.cs プロジェクト: snowdream1985/JitDemo
        public void Push(int value)
        {
            var oldFirst = first;

            first        = (ValueNode *)(Marshal.AllocHGlobal(sizeof(ValueNode)));
            first->Value = value;
            first->Next  = oldFirst;
        }
コード例 #2
0
ファイル: Stack.cs プロジェクト: snowdream1985/JitDemo
        public void Push(int value)
        {
            var oldFirst = first;

            first        = &data[Count++];
            first->Value = value;
            first->Next  = oldFirst;
        }
コード例 #3
0
ファイル: Stack.cs プロジェクト: snowdream1985/JitDemo
 public PoolBasedValueStack(ValueNode *allocated)
 {
     data  = allocated;
     first = allocated;
 }
コード例 #4
0
 public unsafe void Bootstrap()
 {
     _data      = Enumerable.Range(0, this.Count).Select(x => new Node()).ToArray();
     _allocated = (ValueNode *)Marshal.AllocHGlobal(sizeof(ValueNode) * (this.Count + 1)).ToPointer();
     RuntimeHelpers.PrepareMethod(typeof(Stack).GetMethod("Push", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).MethodHandle);
 }