$64 GRAYBYTE WORDPRESS FILE MANAGER $84

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.23
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/ruby34/share/ruby/ruby_vm/rjit/

HOME
Current File : /opt/alt/ruby34/share/ruby/ruby_vm/rjit//c_type.rb
require 'fiddle'
require 'fiddle/pack'
require_relative 'c_pointer'

module RubyVM::RJIT
  module CType
    module Struct
      # @param name [String]
      # @param members [Hash{ Symbol => [Integer, RubyVM::RJIT::CType::*] }]
      def self.new(name, sizeof, **members)
        name = members.keys.join('_') if name.empty?
        CPointer.with_class_name('Struct', name) do
          CPointer::Struct.define(sizeof, members)
        end
      end
    end

    module Union
      # @param name [String]
      # @param members [Hash{ Symbol => RubyVM::RJIT::CType::* }]
      def self.new(name, sizeof, **members)
        name = members.keys.join('_') if name.empty?
        CPointer.with_class_name('Union', name) do
          CPointer::Union.define(sizeof, members)
        end
      end
    end

    module Immediate
      # @param fiddle_type [Integer]
      def self.new(fiddle_type)
        name = Fiddle.constants.find do |const|
          const.start_with?('TYPE_') && Fiddle.const_get(const) == fiddle_type.abs
        end&.name
        name = name.delete_prefix('TYPE_')
        if fiddle_type.negative?
          name.prepend('U')
        end
        CPointer.with_class_name('Immediate', name, cache: true) do
          CPointer::Immediate.define(fiddle_type)
        end
      end

      # @param type [String]
      def self.parse(ctype)
        new(Fiddle::Importer.parse_ctype(ctype))
      end

      def self.find(size, signed)
        fiddle_type = TYPE_MAP.fetch(size)
        fiddle_type = -fiddle_type unless signed
        new(fiddle_type)
      end

      TYPE_MAP = Fiddle::PackInfo::SIZE_MAP.map { |type, size| [size, type.abs] }.to_h
      private_constant :TYPE_MAP
    end

    module Bool
      def self.new
        CPointer::Bool
      end
    end

    class Array
      def self.new(&block)
        CPointer.with_class_name('Array', block.object_id.to_s) do
          CPointer::Array.define(block)
        end
      end
    end

    class Pointer
      # This takes a block to avoid "stack level too deep" on a cyclic reference
      # @param block [Proc]
      def self.new(&block)
        CPointer.with_class_name('Pointer', block.object_id.to_s) do
          CPointer::Pointer.define(block)
        end
      end
    end

    module BitField
      # @param width [Integer]
      # @param offset [Integer]
      def self.new(width, offset)
        CPointer.with_class_name('BitField', "#{offset}_#{width}") do
          CPointer::BitField.define(width, offset)
        end
      end
    end

    # Types that are referenced but not part of code generation targets
    Stub = ::Struct.new(:name)

    # Types that it failed to figure out from the header
    Unknown = Module.new
  end
end


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Mar 2025 8.41 AM
root / root
0755
assembler.rb
32.813 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
block.rb
0.555 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
branch_stub.rb
0.858 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
c_pointer.rb
10.678 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
c_type.rb
2.659 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
code_block.rb
2.276 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
compiler.rb
16.716 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
context.rb
11.144 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
entry_stub.rb
0.221 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
exit_compiler.rb
4.826 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
hooks.rb
0.927 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
insn_compiler.rb
204.807 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
instruction.rb
38.663 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
invariants.rb
4.725 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
jit_state.rb
1.96 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
stats.rb
7.4 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
type.rb
5.908 KB
27 Jan 2026 4.00 PM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF