Fix compilation for gcc 4.3+. Patch by Lei Zhang.

Review URL: http://codereview.chromium.org/113621

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2004 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
kasperl@chromium.org 2009-05-20 06:42:12 +00:00
parent 2ab1dedb03
commit b8c09e9590

View File

@ -54,14 +54,15 @@ static Handle<CompilationCacheTable> AllocateTable(int size) {
} }
static Handle<CompilationCacheTable> GetTable(CompilationCache::Entry entry) { static Handle<CompilationCacheTable> GetTable(int index) {
ASSERT(index >= 0 && index < NUMBER_OF_TABLE_ENTRIES);
Handle<CompilationCacheTable> result; Handle<CompilationCacheTable> result;
if (tables[entry]->IsUndefined()) { if (tables[index]->IsUndefined()) {
static const int kInitialCacheSize = 64; static const int kInitialCacheSize = 64;
result = AllocateTable(kInitialCacheSize); result = AllocateTable(kInitialCacheSize);
tables[entry] = *result; tables[index] = *result;
} else { } else {
CompilationCacheTable* table = CompilationCacheTable::cast(tables[entry]); CompilationCacheTable* table = CompilationCacheTable::cast(tables[index]);
result = Handle<CompilationCacheTable>(table); result = Handle<CompilationCacheTable>(table);
} }
return result; return result;
@ -137,8 +138,11 @@ Handle<JSFunction> CompilationCache::LookupScript(Handle<String> source,
Handle<Object> name, Handle<Object> name,
int line_offset, int line_offset,
int column_offset) { int column_offset) {
// Use an int for the generation index, so value range propagation
// in gcc 4.3+ won't assume it can only go up to LAST_ENTRY when in
// fact it can go up to SCRIPT + NUMBER_OF_SCRIPT_GENERATIONS.
int generation = SCRIPT;
Object* result = NULL; Object* result = NULL;
Entry generation = SCRIPT; // First generation.
// Probe the script generation tables. Make sure not to leak handles // Probe the script generation tables. Make sure not to leak handles
// into the caller's handle scope. // into the caller's handle scope.
@ -156,7 +160,7 @@ Handle<JSFunction> CompilationCache::LookupScript(Handle<String> source,
} }
} }
// Go to the next generation. // Go to the next generation.
generation = static_cast<Entry>(generation + 1); generation++;
} }
} }