Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: src/compilation-cache.cc

Issue 40007: Disable the compilation caching for scripts to make it... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compilation-cache.h ('k') | src/compiler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compilation-cache.cc
===================================================================
--- src/compilation-cache.cc (revision 1404)
+++ src/compilation-cache.cc (working copy)
@@ -60,31 +60,8 @@
}
-// We only re-use a cached function for some script source code if the
-// script originates from the same places. This is to avoid issues
-// when reporting errors, etc.
-static bool HasOrigin(Handle<JSFunction> boilerplate,
- Handle<Object> name,
- int line_offset,
- int column_offset) {
- Handle<Script> script =
- Handle<Script>(Script::cast(boilerplate->shared()->script()));
- // If the script name isn't set, the boilerplate script should have
- // an undefined name to have the same origin.
- if (name.is_null()) {
- return script->name()->IsUndefined();
- }
- // Do the fast bailout checks first.
- if (line_offset != script->line_offset()->value()) return false;
- if (column_offset != script->column_offset()->value()) return false;
- // Check that both names are strings. If not, no match.
- if (!name->IsString() || !script->name()->IsString()) return false;
- // Compare the two name strings for equality.
- return String::cast(*name)->Equals(String::cast(script->name()));
-}
-
-
static Handle<JSFunction> Lookup(Handle<String> source,
+ Handle<Context> context,
CompilationCache::Entry entry) {
// Make sure not to leak the table into the surrounding handle
// scope. Otherwise, we risk keeping old tables around even after
@@ -92,7 +69,7 @@
Object* result;
{ HandleScope scope;
Handle<CompilationCacheTable> table = GetTable(entry);
- result = table->Lookup(*source);
+ result = table->LookupEval(*source, *context);
}
if (result->IsJSFunction()) {
return Handle<JSFunction>(JSFunction::cast(result));
@@ -102,21 +79,20 @@
}
-static Handle<JSFunction> Lookup(Handle<String> source,
- Handle<Context> context,
- CompilationCache::Entry entry) {
+static Handle<FixedArray> Lookup(Handle<String> source,
+ JSRegExp::Flags flags) {
// Make sure not to leak the table into the surrounding handle
// scope. Otherwise, we risk keeping old tables around even after
// having cleared the cache.
Object* result;
{ HandleScope scope;
- Handle<CompilationCacheTable> table = GetTable(entry);
- result = table->LookupEval(*source, *context);
+ Handle<CompilationCacheTable> table = GetTable(CompilationCache::REGEXP);
+ result = table->LookupRegExp(*source, flags);
}
- if (result->IsJSFunction()) {
- return Handle<JSFunction>(JSFunction::cast(result));
+ if (result->IsFixedArray()) {
+ return Handle<FixedArray>(FixedArray::cast(result));
} else {
- return Handle<JSFunction>::null();
+ return Handle<FixedArray>::null();
}
}
@@ -125,16 +101,10 @@
Handle<Object> name,
int line_offset,
int column_offset) {
- Handle<JSFunction> result = Lookup(source, SCRIPT);
- if (result.is_null()) {
- Counters::compilation_cache_misses.Increment();
- } else if (HasOrigin(result, name, line_offset, column_offset)) {
- Counters::compilation_cache_hits.Increment();
- } else {
- result = Handle<JSFunction>::null();
- Counters::compilation_cache_misses.Increment();
- }
- return result;
+ // TODO(xxx): Start caching scripts again but make it local to a
+ // global context to avoid sharing code between independent
+ // environments.
+ return Handle<JSFunction>::null();
}
@@ -152,20 +122,31 @@
}
-void CompilationCache::PutFunction(Handle<String> source,
- Entry entry,
- Handle<JSFunction> boilerplate) {
- HandleScope scope;
- ASSERT(boilerplate->IsBoilerplate());
- Handle<CompilationCacheTable> table = GetTable(entry);
- CALL_HEAP_FUNCTION_VOID(table->Put(*source, *boilerplate));
+Handle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source,
+ JSRegExp::Flags flags) {
+ Handle<FixedArray> result = Lookup(source, flags);
+ if (result.is_null()) {
+ Counters::compilation_cache_misses.Increment();
+ } else {
+ Counters::compilation_cache_hits.Increment();
+ }
+ return result;
}
-void CompilationCache::PutEvalFunction(Handle<String> source,
- Handle<Context> context,
- Entry entry,
- Handle<JSFunction> boilerplate) {
+void CompilationCache::PutScript(Handle<String> source,
+ Entry entry,
+ Handle<JSFunction> boilerplate) {
+ // TODO(xxx): Start caching scripts again but make it local to a
+ // global context to avoid sharing code between independent
+ // environments.
+}
+
+
+void CompilationCache::PutEval(Handle<String> source,
+ Handle<Context> context,
+ Entry entry,
+ Handle<JSFunction> boilerplate) {
HandleScope scope;
ASSERT(boilerplate->IsBoilerplate());
Handle<CompilationCacheTable> table = GetTable(entry);
@@ -173,20 +154,7 @@
}
-Handle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source,
- JSRegExp::Flags flags) {
- Handle<CompilationCacheTable> table = GetTable(REGEXP);
- Object* result = table->LookupRegExp(*source, flags);
- if (result->IsFixedArray()) {
- Counters::regexp_cache_hits.Increment();
- return Handle<FixedArray>(FixedArray::cast(result));
- } else {
- Counters::regexp_cache_misses.Increment();
- return Handle<FixedArray>();
- }
-}
-
void CompilationCache::PutRegExp(Handle<String> source,
JSRegExp::Flags flags,
Handle<FixedArray> data) {
« no previous file with comments | « src/compilation-cache.h ('k') | src/compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698