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

Unified Diff: vm/code_index_table_test.cc

Issue 10082017: Remove code index table. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 8 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
Index: vm/code_index_table_test.cc
===================================================================
--- vm/code_index_table_test.cc (revision 6535)
+++ vm/code_index_table_test.cc (working copy)
@@ -1,156 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/assert.h"
-#include "vm/class_finalizer.h"
-#include "vm/compiler.h"
-#include "vm/object.h"
-#include "vm/pages.h"
-#include "vm/stack_frame.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-// Compiler only implemented on IA32 and x64 now.
-#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
-
-TEST_CASE(CodeIndexTable) {
-#if defined(TARGET_ARCH_IA32)
- const int kLoopCount = 50000;
-#else
- const int kLoopCount = 25000;
-#endif
- const int kScriptSize = 512 * KB;
- const int kNumFunctions = 1024;
- char scriptChars[kScriptSize];
- String& url = String::Handle(String::New("dart-test:CodeIndexTable"));
- String& source = String::Handle();
- Script& script = Script::Handle();
- Library& lib = Library::Handle();
- Class& clsA = Class::Handle();
- Class& clsB = Class::Handle();
- String& function_name = String::Handle();
- Function& function = Function::Handle();
- char buffer[256];
-
- // Get access to the code index table.
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate != NULL);
-
- lib = Library::CoreLibrary();
-
- // Load up class A with 1024 functions.
- int written = OS::SNPrint(scriptChars, kScriptSize, "class A {");
- for (int i = 0; i < kNumFunctions; i++) {
- OS::SNPrint(buffer,
- 256,
- "static foo%d([int i=1,int j=2,int k=3]){return i+j+k;}", i);
- written += OS::SNPrint((scriptChars + written),
- (kScriptSize - written),
- "%s",
- buffer);
- }
- OS::SNPrint((scriptChars + written), (kScriptSize - written), "}");
- source = String::New(scriptChars);
- script = Script::New(url, source, RawScript::kSource);
- EXPECT(CompilerTest::TestCompileScript(lib, script));
- clsA = lib.LookupClass(String::Handle(String::NewSymbol("A")));
- EXPECT(!clsA.IsNull());
- ClassFinalizer::FinalizePendingClasses();
- for (int i = 0; i < kNumFunctions; i++) {
- OS::SNPrint(buffer, 256, "foo%d", i);
- function_name = String::New(buffer);
- function = clsA.LookupStaticFunction(function_name);
- EXPECT(!function.IsNull());
- EXPECT(CompilerTest::TestCompileFunction(function));
- EXPECT(function.HasCode());
- }
-
- // Now load up class B with 1024 functions.
- written = OS::SNPrint(scriptChars, kScriptSize, "class B {");
- // Create one large function.
- OS::SNPrint(buffer, sizeof(buffer), "static moo0([var i=1]) { ");
- written += OS::SNPrint((scriptChars + written),
- (kScriptSize - written),
- "%s",
- buffer);
- // Generate a large function so that the code for this function when
- // compiled will reside in a large page.
- for (int i = 0; i < kLoopCount; i++) {
- OS::SNPrint(buffer, sizeof(buffer), "i = i+i;");
- written += OS::SNPrint((scriptChars + written),
- (kScriptSize - written),
- "%s",
- buffer);
- }
- OS::SNPrint(buffer, sizeof(buffer), "return i; }");
- written += OS::SNPrint((scriptChars + written),
- (kScriptSize - written),
- "%s",
- buffer);
- for (int i = 1; i < kNumFunctions; i++) {
- OS::SNPrint(buffer,
- 256,
- "static moo%d([int i=1,int j=2,int k=3]){return i+j+k;}", i);
- written += OS::SNPrint((scriptChars + written),
- (kScriptSize - written),
- "%s",
- buffer);
- }
- OS::SNPrint((scriptChars + written), (kScriptSize - written), "}");
- url = String::New("dart-test:CodeIndexTable");
- source = String::New(scriptChars);
- script = Script::New(url, source, RawScript::kSource);
- EXPECT(CompilerTest::TestCompileScript(lib, script));
- clsB = lib.LookupClass(String::Handle(String::NewSymbol("B")));
- EXPECT(!clsB.IsNull());
- ClassFinalizer::FinalizePendingClasses();
- for (int i = 0; i < kNumFunctions; i++) {
- OS::SNPrint(buffer, 256, "moo%d", i);
- function_name = String::New(buffer);
- function = clsB.LookupStaticFunction(function_name);
- EXPECT(!function.IsNull());
- EXPECT(CompilerTest::TestCompileFunction(function));
- EXPECT(function.HasCode());
- }
-
- // Now try and access these functions using the code index table.
- Code& code = Code::Handle();
- uword pc;
- OS::SNPrint(buffer, 256, "foo%d", 123);
- function_name = String::New(buffer);
- function = clsA.LookupStaticFunction(function_name);
- EXPECT(!function.IsNull());
- code = function.CurrentCode();
- EXPECT(code.Size() > 16);
- pc = code.EntryPoint() + 16;
- EXPECT(StackFrame::LookupCode(isolate, pc) == code.raw());
-
- OS::SNPrint(buffer, 256, "moo%d", 54);
- function_name = String::New(buffer);
- function = clsB.LookupStaticFunction(function_name);
- EXPECT(!function.IsNull());
- code = function.CurrentCode();
- EXPECT(code.Size() > 16);
- pc = code.EntryPoint() + 16;
- EXPECT(StackFrame::LookupCode(isolate, pc) == code.raw());
-
- // Lookup the large function
- OS::SNPrint(buffer, 256, "moo%d", 0);
- function_name = String::New(buffer);
- function = clsB.LookupStaticFunction(function_name);
- EXPECT(!function.IsNull());
- code = function.CurrentCode();
- EXPECT(code.Size() > 16);
- pc = code.EntryPoint() + 16;
- EXPECT(code.Size() > PageSpace::kPageSize);
- EXPECT(StackFrame::LookupCode(isolate, pc) == code.raw());
- EXPECT(code.Size() > (1 * MB));
- pc = code.EntryPoint() + (1 * MB);
- EXPECT(StackFrame::LookupCode(isolate, pc) == code.raw());
-}
-
-#endif // TARGET_ARCH_IA32 || TARGET_ARCH_X64
-
-} // namespace dart
« no previous file with comments | « vm/code_index_table.cc ('k') | vm/dart.cc » ('j') | vm/find_code_object_test.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698