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

Unified Diff: vm/ic_stubs.h

Issue 8379013: Implement new inline cache. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 9 years, 2 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 | « vm/ic_data.h ('k') | vm/ic_stubs_arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/ic_stubs.h
===================================================================
--- vm/ic_stubs.h (revision 700)
+++ vm/ic_stubs.h (working copy)
@@ -1,70 +0,0 @@
-// Copyright (c) 2011, 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.
-// Class for handling inline cache stubs
-//
-// The initial target of an instance call is the resolving and patching runtime
-// function 'ResolvePatchInstanceCall'. It resolves and compiles the
-// target function and patches the instance call to jump to it
-// via an inline cache stub.
-// The inline cache stub checks receiver's class for a distinct set of classes
-// and jumps to the appropriate target.
-// An inline-cache-miss occurs if none of the classes match. As a consequence
-// the old IC stub is replaced with a new one that adds the class check
-// and target for the most recently seen receiver.
-
-#ifndef VM_IC_STUBS_H_
-#define VM_IC_STUBS_H_
-
-#include "vm/allocation.h"
-#include "vm/growable_array.h"
-
-namespace dart {
-
-// Forward declarations.
-class Class;
-class Code;
-class Function;
-class RawCode;
-
-class ICStubs : public AllStatic {
- public:
- // Returns an IC stub that jumps to targets' entry points if the receiver
- // matches a class contained in 'classes' array.
- static RawCode* GetICStub(const GrowableArray<const Class*>& classes,
- const GrowableArray<const Function*>& targets);
-
- // Identify classes and their targets contained in the IC stub.
- // 'ic_entry_point' is the start of the IC stubs. 'classes' and 'targets'
- // are the implemented (class, target) tuples.
- // Returns false if the entry_point does not point to an IC stub.
- static bool RecognizeICStub(uword ic_entry_point,
- GrowableArray<const Class*>* classes,
- GrowableArray<const Function*>* targets);
-
- // Replace all 'from' targets with 'to' targets.
- static void PatchTargets(uword ic_entry_point, uword from, uword to);
-
- // Locate a class within the array. Return -1 if class object in 'cls'
- // is not in the array.
- // TODO(srdjan): Remove from ICStubs interface.
- static int IndexOfClass(const GrowableArray<const Class*>& classes,
- const Class& cls);
-
- private:
- static RawCode* FindInCode(const Code& target,
- const GrowableArray<const Class*>& classes);
- static void AppendICStubToTargets(
- const GrowableArray<const Function*>& targets,
- const GrowableArray<const Class*>& classes,
- const Code& ic_stub);
- static bool ParseICStub(uword ic_entry_point,
- GrowableArray<const Class*>* classes,
- GrowableArray<const Function*>* targets,
- uword from,
- uword to);
-};
-
-} // namespace dart
-
-#endif // VM_IC_STUBS_H_
« no previous file with comments | « vm/ic_data.h ('k') | vm/ic_stubs_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698