From 678d51be89f3a348feeac21e35fbde648f81b880 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Thu, 7 Apr 2011 18:46:56 +0000
Subject: [PATCH 3/4] vm_method.c: ephemeral classes do not write/expire cache

---
 vm_method.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/vm_method.c b/vm_method.c
index 2087371..a771992 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -85,6 +85,10 @@ rb_clear_cache_by_class(VALUE klass)
 {
     struct cache_entry *ent, *end;
 
+    /* ephemeral class does not write to cache */
+    if (FL_TEST(klass, RCLASS_EPHEMERAL))
+	return;
+
     rb_vm_change_state();
 
     if (!ruby_running)
@@ -417,8 +421,9 @@ rb_method_entry_get_without_cache(VALUE klass, ID id)
 {
     rb_method_entry_t *me = search_method(klass, id);
 
-    if (ruby_running) {
+    if (ruby_running && ! FL_TEST(klass, RCLASS_EPHEMERAL)) {
 	struct cache_entry *ent;
+
 	ent = cache + EXPR1(klass, id);
 	ent->klass = klass;
 
