| Index: runtime/vm/stub_code.cc
|
| diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
|
| index ad51097eadca0879c4cbbed0e24ee6a97866933d..4282dc4bc64638e853808c53192ce7df730320c8 100644
|
| --- a/runtime/vm/stub_code.cc
|
| +++ b/runtime/vm/stub_code.cc
|
| @@ -38,14 +38,6 @@ void StubEntry::VisitObjectPointers(ObjectPointerVisitor* visitor) {
|
| }
|
|
|
|
|
| -StubCode::~StubCode() {
|
| -#define STUB_CODE_DELETER(name) \
|
| - delete name##_entry_;
|
| - STUB_CODE_LIST(STUB_CODE_DELETER);
|
| -#undef STUB_CODE_DELETER
|
| -}
|
| -
|
| -
|
| #define STUB_CODE_GENERATE(name) \
|
| code ^= Generate("_stub_"#name, StubCode::Generate##name##Stub); \
|
| name##_entry_ = new StubEntry(code);
|
| @@ -58,48 +50,19 @@ void StubCode::InitOnce() {
|
| }
|
|
|
|
|
| -void StubCode::GenerateStubsFor(Isolate* init) {
|
| - // Generate all the other stubs.
|
| - Code& code = Code::Handle();
|
| - STUB_CODE_LIST(STUB_CODE_GENERATE);
|
| -}
|
| -
|
| #undef STUB_CODE_GENERATE
|
|
|
|
|
| -void StubCode::Init(Isolate* isolate) {
|
| - StubCode* stubs = new StubCode(isolate);
|
| - isolate->set_stub_code(stubs);
|
| - isolate->stub_code()->GenerateStubsFor(isolate);
|
| -}
|
| +void StubCode::Init(Isolate* isolate) { }
|
|
|
|
|
| void StubCode::VisitObjectPointers(ObjectPointerVisitor* visitor) {
|
| - // The current isolate is needed as part of the macro.
|
| - Isolate* isolate = Isolate::Current();
|
| - StubCode* stubs = isolate->stub_code();
|
| - if (stubs == NULL) return;
|
| - StubEntry* entry;
|
| -#define STUB_CODE_VISIT_OBJECT_POINTER(name) \
|
| - entry = stubs->name##_entry(); \
|
| - if (entry != NULL) { \
|
| - entry->VisitObjectPointers(visitor); \
|
| - }
|
| -
|
| - STUB_CODE_LIST(STUB_CODE_VISIT_OBJECT_POINTER);
|
| -#undef STUB_CODE_VISIT_OBJECT_POINTER
|
| }
|
|
|
|
|
| bool StubCode::InInvocationStub(uword pc) {
|
| - return InInvocationStubForIsolate(Isolate::Current(), pc);
|
| -}
|
| -
|
| -
|
| -bool StubCode::InInvocationStubForIsolate(Isolate* isolate, uword pc) {
|
| - StubCode* stub_code = isolate->stub_code();
|
| - uword entry = stub_code->InvokeDartCodeEntryPoint();
|
| - uword size = stub_code->InvokeDartCodeSize();
|
| + uword entry = StubCode::InvokeDartCodeEntryPoint();
|
| + uword size = StubCode::InvokeDartCodeSize();
|
| return (pc >= entry) && (pc < (entry + size));
|
| }
|
|
|
| @@ -111,30 +74,21 @@ bool StubCode::InJumpToExceptionHandlerStub(uword pc) {
|
| }
|
|
|
|
|
| -RawCode* StubCode::GetAllocateArrayStub() {
|
| - const Class& array_cls = Class::Handle(isolate_,
|
| - isolate_->object_store()->array_class());
|
| - return GetAllocationStubForClass(array_cls);
|
| -}
|
| -
|
| -
|
| RawCode* StubCode::GetAllocationStubForClass(const Class& cls) {
|
| Isolate* isolate = Isolate::Current();
|
| const Error& error = Error::Handle(isolate, cls.EnsureIsFinalized(isolate));
|
| ASSERT(error.IsNull());
|
| + if (cls.id() == kArrayCid) {
|
| + return AllocateArray_entry()->code();
|
| + }
|
| Code& stub = Code::Handle(isolate, cls.allocation_stub());
|
| if (stub.IsNull()) {
|
| Assembler assembler;
|
| const char* name = cls.ToCString();
|
| uword patch_code_offset = 0;
|
| uword entry_patch_offset = 0;
|
| - if (cls.id() == kArrayCid) {
|
| - StubCode::GeneratePatchableAllocateArrayStub(
|
| - &assembler, &entry_patch_offset, &patch_code_offset);
|
| - } else {
|
| - StubCode::GenerateAllocationStubForClass(
|
| - &assembler, cls, &entry_patch_offset, &patch_code_offset);
|
| - }
|
| + StubCode::GenerateAllocationStubForClass(
|
| + &assembler, cls, &entry_patch_offset, &patch_code_offset);
|
| stub ^= Code::FinalizeCode(name, &assembler);
|
| stub.set_owner(cls);
|
| cls.set_allocation_stub(stub);
|
| @@ -195,18 +149,7 @@ const char* StubCode::NameOfStub(uword entry_point) {
|
| return ""#name; \
|
| }
|
| VM_STUB_CODE_LIST(VM_STUB_CODE_TESTER);
|
| -
|
| -#define STUB_CODE_TESTER(name) \
|
| - if ((isolate->stub_code()->name##_entry() != NULL) && \
|
| - (entry_point == isolate->stub_code()->name##EntryPoint())) { \
|
| - return ""#name; \
|
| - }
|
| - Isolate* isolate = Isolate::Current();
|
| - if ((isolate != NULL) && (isolate->stub_code() != NULL)) {
|
| - STUB_CODE_LIST(STUB_CODE_TESTER);
|
| - }
|
| #undef VM_STUB_CODE_TESTER
|
| -#undef STUB_CODE_TESTER
|
| return NULL;
|
| }
|
|
|
|
|