以下の6つの機能を分離し、簡単に切り替えられるようにしたい。
- OSからのメモリアロケータ
 
- OSからメモリアロケートする部分のAPI
 
- Rubyのヒープ管理
 
- ヒープの設定を保持
 
| // XXX should be standard (and named clone, after Java?) | |
| Object.prototype.copy = function () { | |
| let o = {} | |
| for (let i in this) | |
| o[i] = this[i] | |
| return o | |
| } | |
| // Containment testing for arrays and strings that should be coherent with their iterator. | |
| Array.prototype.contains = String.prototype.contains = function (e) { | 
| # | |
| # A fatal error has been detected by the Java Runtime Environment: | |
| # | |
| # SIGSEGV (0xb) at pc=0x00007f943ff492ad, pid=13265, tid=1116805440 | |
| # | |
| # JRE version: 6.0_32-b05 | |
| # Java VM: OpenJDK (Taobao) 64-Bit Server VM (20.0-b12-internal mixed mode linux-amd64 compressed oops) | |
| # Problematic frame: | |
| # J java.lang.Object.<init>()V | |
| # | 
| Program: | |
| class Program | |
| { | |
| string myString; | |
| private Program() | |
| { | |
| myString = "foo"; | |
| } | 
| Program: | |
| class Program | |
| { | |
| string myString; | |
| private Program() | |
| { | |
| myString = "foo"; | |
| } | 
| Table of names of MemoryManagerMXBean and MemoryPoolMXBean instances under | |
| different GC algorithms in Oracle HotSpot VM. Memory managers list the pools | |
| they manage in square brackets; memory pools show their maximum sizes for -Xmx200M setting. | |
| $ java -version | |
| java version "1.6.0_24" | |
| Java(TM) SE Runtime Environment (build 1.6.0_24-b07) | |
| Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) | |
| SerialGC: | 
| AbstractInterpreter::_code : StubQueue * = 0xb49150c0 | |
| _stub_buffer : 0xb6f7a6c0 | |
| _number_of_stubs: 0x103 | |
| Codelet @ 0xb6f7a6c0 128 -1 0xffffffff 0x10c81a1: "slow signature handler" | |
| Dump of assembler code from 0xb6f7a6e0 to 0xb6f7a740: | |
| 0xb6f7a6e0: mov %esp,%ecx | |
| 0xb6f7a6e2: call 0xb6f7a6ec | |
| 0xb6f7a6e7: jmp 0xb6f7a73f | |
| 0xb6f7a6ec: push %ecx | |
| 0xb6f7a6ed: push %edi | 
| #!/bin/sh | |
| # This script is for building the hsx/hotspot-comp branch in isolation. | |
| # | |
| # Prerequisites: | |
| # * appropriate build tools | |
| # * a working Sun Java 6 build (i.e. JDK6) is available at: | |
| # HOME/java/re/j2se/1.6.0/latest/binaries/linux-[i586/amd64] | |
| # * a working Sun Java 7 build (i.e. JDK7) is available at: | |
| # HOME/java/re/j2se/1.7.0/latest/binaries/linux-[i586/amd64] | |
| # HOME/java/re/j2se/1.7.0/promoted/latest/binaries/linux-[i586/amd64] | 
| package com.headius.indy.examples; | |
| import java.lang.invoke.MethodHandle; | |
| import static java.lang.invoke.MethodHandles.*; | |
| import static java.lang.invoke.MethodType.*; | |
| import java.lang.invoke.MutableCallSite; | |
| public class IndyLoop { | |
| public static void main(String[] args) throws Throwable { | |
| // method handle loop adds up numbers from 1 to args[0].to_i | 
| let inline name (x : ^T) = (^T : (member Name : string) (x)) | |
| let inline age (x : ^T) = (^T : (member Age : int) (x)) | |
| let inline nameAndAge x = (name x, age x) | |
| type Person(name : string, age : int) = | |
| member __.Name = name | |
| member __.Age = age | |
| type Employee(name : string, age : int, employeeId : string) = | |
| member __.Name = name |