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

Unified Diff: runtime/vm/deopt_instructions.cc

Issue 982873004: Thread/Isolate refactoring: new(Isolate) -> new(Zone) (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 9 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 | « runtime/vm/deopt_instructions.h ('k') | runtime/vm/flow_graph.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/deopt_instructions.cc
===================================================================
--- runtime/vm/deopt_instructions.cc (revision 44266)
+++ runtime/vm/deopt_instructions.cc (working copy)
@@ -10,6 +10,7 @@
#include "vm/locations.h"
#include "vm/parser.h"
#include "vm/stack_frame.h"
+#include "vm/thread.h"
namespace dart {
@@ -38,7 +39,7 @@
num_args_(0),
deopt_reason_(ICData::kDeoptUnknown),
deopt_flags_(0),
- isolate_(Isolate::Current()),
+ thread_(Thread::Current()),
deferred_slots_(NULL),
deferred_objects_count_(0),
deferred_objects_(NULL) {
@@ -338,8 +339,8 @@
RawArray* DeoptContext::DestFrameAsArray() {
ASSERT(dest_frame_ != NULL && dest_frame_is_allocated_);
const Array& dest_array =
- Array::Handle(isolate(), Array::New(dest_frame_size_));
- PassiveObject& obj = PassiveObject::Handle(isolate());
+ Array::Handle(zone(), Array::New(dest_frame_size_));
+ PassiveObject& obj = PassiveObject::Handle(zone());
for (intptr_t i = 0; i < dest_frame_size_; i++) {
obj = reinterpret_cast<RawObject*>(dest_frame_[i]);
dest_array.SetAt(i, obj);
@@ -371,12 +372,12 @@
virtual DeoptInstr::Kind kind() const { return kRetAddress; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd ", %" Pd "", object_table_index_, deopt_id_);
}
void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) {
- Code& code = Code::Handle(deopt_context->isolate());
+ Code& code = Code::Handle(deopt_context->zone());
code ^= deopt_context->ObjectAt(object_table_index_);
ASSERT(!code.IsNull());
uword continue_at_pc = code.GetPcForDeoptId(deopt_id_,
@@ -433,13 +434,13 @@
virtual DeoptInstr::Kind kind() const { return kConstant; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd "", object_table_index_);
}
void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) {
const PassiveObject& obj = PassiveObject::Handle(
- deopt_context->isolate(), deopt_context->ObjectAt(object_table_index_));
+ deopt_context->zone(), deopt_context->ObjectAt(object_table_index_));
*reinterpret_cast<RawObject**>(dest_addr) = obj.raw();
}
@@ -522,7 +523,7 @@
virtual DeoptInstr::Kind kind() const { return kMintPair; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%s,%s",
lo_.ToCString(),
hi_.ToCString());
@@ -635,12 +636,12 @@
virtual DeoptInstr::Kind kind() const { return kPcMarker; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd "", object_table_index_);
}
void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) {
- Code& code = Code::Handle(deopt_context->isolate());
+ Code& code = Code::Handle(deopt_context->zone());
code ^= deopt_context->ObjectAt(object_table_index_);
if (code.IsNull()) {
// Callee's PC marker is not used (pc of Deoptimize stub). Set to 0.
@@ -648,7 +649,7 @@
return;
}
const Function& function =
- Function::Handle(deopt_context->isolate(), code.function());
+ Function::Handle(deopt_context->zone(), code.function());
ASSERT(function.HasCode());
const intptr_t pc_marker =
code.EntryPoint() + Assembler::EntryPointToPcMarkerOffset();
@@ -689,12 +690,12 @@
virtual DeoptInstr::Kind kind() const { return kPp; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd "", object_table_index_);
}
void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) {
- Code& code = Code::Handle(deopt_context->isolate());
+ Code& code = Code::Handle(deopt_context->zone());
code ^= deopt_context->ObjectAt(object_table_index_);
ASSERT(!code.IsNull());
const intptr_t pp = reinterpret_cast<intptr_t>(code.ObjectPool());
@@ -786,7 +787,7 @@
virtual DeoptInstr::Kind kind() const { return kSuffix; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd ":%" Pd, info_number_, suffix_length_);
}
@@ -825,7 +826,7 @@
virtual DeoptInstr::Kind kind() const { return kMaterializedObjectRef; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"#%" Pd "", index_);
}
@@ -856,7 +857,7 @@
virtual DeoptInstr::Kind kind() const { return kMaterializeObject; }
virtual const char* ArgumentsToCString() const {
- return Isolate::Current()->current_zone()->PrintToString(
+ return Thread::Current()->zone()->PrintToString(
"%" Pd "", field_count_);
}
@@ -1023,13 +1024,13 @@
};
-DeoptInfoBuilder::DeoptInfoBuilder(Isolate* isolate, const intptr_t num_args)
- : isolate_(isolate),
+DeoptInfoBuilder::DeoptInfoBuilder(Zone* zone, const intptr_t num_args)
+ : zone_(zone),
instructions_(),
object_table_(GrowableObjectArray::Handle(
GrowableObjectArray::New(Heap::kOld))),
num_args_(num_args),
- trie_root_(new(isolate) TrieNode()),
+ trie_root_(new(zone) TrieNode()),
current_info_number_(0),
frame_start_(-1),
materializations_() {
@@ -1094,7 +1095,7 @@
const intptr_t object_table_index = FindOrAddObjectInTable(code);
ASSERT(dest_index == FrameSize());
instructions_.Add(
- new(isolate()) DeoptRetAddressInstr(object_table_index, deopt_id));
+ new(zone()) DeoptRetAddressInstr(object_table_index, deopt_id));
}
@@ -1102,7 +1103,7 @@
intptr_t dest_index) {
intptr_t object_table_index = FindOrAddObjectInTable(code);
ASSERT(dest_index == FrameSize());
- instructions_.Add(new(isolate()) DeoptPcMarkerInstr(object_table_index));
+ instructions_.Add(new(zone()) DeoptPcMarkerInstr(object_table_index));
}
@@ -1110,7 +1111,7 @@
intptr_t dest_index) {
intptr_t object_table_index = FindOrAddObjectInTable(code);
ASSERT(dest_index == FrameSize());
- instructions_.Add(new(isolate()) DeoptPpInstr(object_table_index));
+ instructions_.Add(new(zone()) DeoptPpInstr(object_table_index));
}
@@ -1120,55 +1121,55 @@
DeoptInstr* deopt_instr = NULL;
if (source_loc.IsConstant()) {
intptr_t object_table_index = FindOrAddObjectInTable(source_loc.constant());
- deopt_instr = new(isolate()) DeoptConstantInstr(object_table_index);
+ deopt_instr = new(zone()) DeoptConstantInstr(object_table_index);
} else if (source_loc.IsInvalid() &&
value->definition()->IsMaterializeObject()) {
const intptr_t index = FindMaterialization(
value->definition()->AsMaterializeObject());
ASSERT(index >= 0);
- deopt_instr = new(isolate()) DeoptMaterializedObjectRefInstr(index);
+ deopt_instr = new(zone()) DeoptMaterializedObjectRefInstr(index);
} else {
ASSERT(!source_loc.IsInvalid());
switch (value->definition()->representation()) {
case kTagged:
- deopt_instr = new(isolate()) DeoptWordInstr(
+ deopt_instr = new(zone()) DeoptWordInstr(
ToCpuRegisterSource(source_loc));
break;
case kUnboxedMint: {
if (source_loc.IsPairLocation()) {
PairLocation* pair = source_loc.AsPairLocation();
- deopt_instr = new(isolate()) DeoptMintPairInstr(
+ deopt_instr = new(zone()) DeoptMintPairInstr(
ToCpuRegisterSource(pair->At(0)),
ToCpuRegisterSource(pair->At(1)));
} else {
ASSERT(!source_loc.IsPairLocation());
- deopt_instr = new(isolate()) DeoptMintInstr(
+ deopt_instr = new(zone()) DeoptMintInstr(
ToCpuRegisterSource(source_loc));
}
break;
}
case kUnboxedInt32:
- deopt_instr = new(isolate()) DeoptInt32Instr(
+ deopt_instr = new(zone()) DeoptInt32Instr(
ToCpuRegisterSource(source_loc));
break;
case kUnboxedUint32:
- deopt_instr = new(isolate()) DeoptUint32Instr(
+ deopt_instr = new(zone()) DeoptUint32Instr(
ToCpuRegisterSource(source_loc));
break;
case kUnboxedDouble:
- deopt_instr = new(isolate()) DeoptDoubleInstr(
+ deopt_instr = new(zone()) DeoptDoubleInstr(
ToFpuRegisterSource(source_loc, Location::kDoubleStackSlot));
break;
case kUnboxedFloat32x4:
- deopt_instr = new(isolate()) DeoptFloat32x4Instr(
+ deopt_instr = new(zone()) DeoptFloat32x4Instr(
ToFpuRegisterSource(source_loc, Location::kQuadStackSlot));
break;
case kUnboxedFloat64x2:
- deopt_instr = new(isolate()) DeoptFloat64x2Instr(
+ deopt_instr = new(zone()) DeoptFloat64x2Instr(
ToFpuRegisterSource(source_loc, Location::kQuadStackSlot));
break;
case kUnboxedInt32x4:
- deopt_instr = new(isolate()) DeoptInt32x4Instr(
+ deopt_instr = new(zone()) DeoptInt32x4Instr(
ToFpuRegisterSource(source_loc, Location::kQuadStackSlot));
break;
default:
@@ -1184,19 +1185,19 @@
void DeoptInfoBuilder::AddCallerFp(intptr_t dest_index) {
ASSERT(dest_index == FrameSize());
- instructions_.Add(new(isolate()) DeoptCallerFpInstr());
+ instructions_.Add(new(zone()) DeoptCallerFpInstr());
}
void DeoptInfoBuilder::AddCallerPp(intptr_t dest_index) {
ASSERT(dest_index == FrameSize());
- instructions_.Add(new(isolate()) DeoptCallerPpInstr());
+ instructions_.Add(new(zone()) DeoptCallerPpInstr());
}
void DeoptInfoBuilder::AddCallerPc(intptr_t dest_index) {
ASSERT(dest_index == FrameSize());
- instructions_.Add(new(isolate()) DeoptCallerPcInstr());
+ instructions_.Add(new(zone()) DeoptCallerPcInstr());
}
@@ -1203,7 +1204,7 @@
void DeoptInfoBuilder::AddConstant(const Object& obj, intptr_t dest_index) {
ASSERT(dest_index == FrameSize());
intptr_t object_table_index = FindOrAddObjectInTable(obj);
- instructions_.Add(new(isolate()) DeoptConstantInstr(object_table_index));
+ instructions_.Add(new(zone()) DeoptConstantInstr(object_table_index));
}
@@ -1225,7 +1226,7 @@
}
instructions_.Add(
- new(isolate()) DeoptMaterializeObjectInstr(non_null_fields));
+ new(zone()) DeoptMaterializeObjectInstr(non_null_fields));
for (intptr_t i = 0; i < mat->InputCount(); i++) {
MaterializeObjectInstr* nested_mat = mat->InputAt(i)->definition()->
@@ -1293,7 +1294,7 @@
// than one instruction, we replace it with a single suffix instruction.
if (suffix_length > 1) length -= (suffix_length - 1);
const DeoptInfo& deopt_info =
- DeoptInfo::Handle(isolate(), DeoptInfo::New(length));
+ DeoptInfo::Handle(zone(), DeoptInfo::New(length));
// Write the unshared instructions and build their sub-tree.
TrieNode* node = NULL;
@@ -1302,7 +1303,7 @@
DeoptInstr* instr = instructions_[i];
deopt_info.SetAt(i, instr->kind(), instr->source_index());
TrieNode* child = node;
- node = new(isolate()) TrieNode(instr, current_info_number_);
+ node = new(zone()) TrieNode(instr, current_info_number_);
node->AddChild(child);
}
@@ -1309,7 +1310,7 @@
if (suffix_length > 1) {
suffix->AddChild(node);
DeoptInstr* instr =
- new(isolate()) DeoptSuffixInstr(suffix->info_number(), suffix_length);
+ new(zone()) DeoptSuffixInstr(suffix->info_number(), suffix_length);
deopt_info.SetAt(length - 1, instr->kind(), instr->source_index());
} else {
trie_root_->AddChild(node);
« no previous file with comments | « runtime/vm/deopt_instructions.h ('k') | runtime/vm/flow_graph.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698