thread isolate for files starting with 'b' and 'c'
R=svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/23729006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
42598f962c
commit
675ac2660d
@ -61,7 +61,7 @@ class CodeGenerator: public AstVisitor {
|
|||||||
// Print the code after compiling it.
|
// Print the code after compiling it.
|
||||||
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
||||||
|
|
||||||
static bool ShouldGenerateLog(Expression* type);
|
static bool ShouldGenerateLog(Isolate* isolate, Expression* type);
|
||||||
|
|
||||||
static void SetFunctionInfo(Handle<JSFunction> fun,
|
static void SetFunctionInfo(Handle<JSFunction> fun,
|
||||||
FunctionLiteral* lit,
|
FunctionLiteral* lit,
|
||||||
|
@ -3312,7 +3312,7 @@ void FullCodeGenerator::EmitLog(CallRuntime* expr) {
|
|||||||
// 2 (array): Arguments to the format string.
|
// 2 (array): Arguments to the format string.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
ASSERT_EQ(args->length(), 3);
|
ASSERT_EQ(args->length(), 3);
|
||||||
if (CodeGenerator::ShouldGenerateLog(args->at(0))) {
|
if (CodeGenerator::ShouldGenerateLog(isolate(), args->at(0))) {
|
||||||
VisitForStackValue(args->at(1));
|
VisitForStackValue(args->at(1));
|
||||||
VisitForStackValue(args->at(2));
|
VisitForStackValue(args->at(2));
|
||||||
__ CallRuntime(Runtime::kLog, 2);
|
__ CallRuntime(Runtime::kLog, 2);
|
||||||
|
@ -1717,9 +1717,8 @@ void Builtins::InitBuiltinFunctionTable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Builtins::SetUp(bool create_heap_objects) {
|
void Builtins::SetUp(Isolate* isolate, bool create_heap_objects) {
|
||||||
ASSERT(!initialized_);
|
ASSERT(!initialized_);
|
||||||
Isolate* isolate = Isolate::Current();
|
|
||||||
Heap* heap = isolate->heap();
|
Heap* heap = isolate->heap();
|
||||||
|
|
||||||
// Create a scope for the handles in the builtins.
|
// Create a scope for the handles in the builtins.
|
||||||
|
@ -292,7 +292,7 @@ class Builtins {
|
|||||||
|
|
||||||
// Generate all builtin code objects. Should be called once during
|
// Generate all builtin code objects. Should be called once during
|
||||||
// isolate initialization.
|
// isolate initialization.
|
||||||
void SetUp(bool create_heap_objects);
|
void SetUp(Isolate* isolate, bool create_heap_objects);
|
||||||
void TearDown();
|
void TearDown();
|
||||||
|
|
||||||
// Garbage collection support.
|
// Garbage collection support.
|
||||||
|
@ -217,8 +217,8 @@ bool CodeStubGraphBuilderBase::BuildGraph() {
|
|||||||
template <class Stub>
|
template <class Stub>
|
||||||
class CodeStubGraphBuilder: public CodeStubGraphBuilderBase {
|
class CodeStubGraphBuilder: public CodeStubGraphBuilderBase {
|
||||||
public:
|
public:
|
||||||
explicit CodeStubGraphBuilder(Stub* stub)
|
explicit CodeStubGraphBuilder(Isolate* isolate, Stub* stub)
|
||||||
: CodeStubGraphBuilderBase(Isolate::Current(), stub) {}
|
: CodeStubGraphBuilderBase(isolate, stub) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual HValue* BuildCodeStub() {
|
virtual HValue* BuildCodeStub() {
|
||||||
@ -285,8 +285,7 @@ Handle<Code> HydrogenCodeStub::GenerateLightweightMissCode(Isolate* isolate) {
|
|||||||
|
|
||||||
|
|
||||||
template <class Stub>
|
template <class Stub>
|
||||||
static Handle<Code> DoGenerateCode(Stub* stub) {
|
static Handle<Code> DoGenerateCode(Isolate* isolate, Stub* stub) {
|
||||||
Isolate* isolate = Isolate::Current();
|
|
||||||
CodeStub::Major major_key =
|
CodeStub::Major major_key =
|
||||||
static_cast<HydrogenCodeStub*>(stub)->MajorKey();
|
static_cast<HydrogenCodeStub*>(stub)->MajorKey();
|
||||||
CodeStubInterfaceDescriptor* descriptor =
|
CodeStubInterfaceDescriptor* descriptor =
|
||||||
@ -302,7 +301,7 @@ static Handle<Code> DoGenerateCode(Stub* stub) {
|
|||||||
ASSERT(descriptor->stack_parameter_count_ == NULL);
|
ASSERT(descriptor->stack_parameter_count_ == NULL);
|
||||||
return stub->GenerateLightweightMissCode(isolate);
|
return stub->GenerateLightweightMissCode(isolate);
|
||||||
}
|
}
|
||||||
CodeStubGraphBuilder<Stub> builder(stub);
|
CodeStubGraphBuilder<Stub> builder(isolate, stub);
|
||||||
LChunk* chunk = OptimizeGraph(builder.CreateGraph());
|
LChunk* chunk = OptimizeGraph(builder.CreateGraph());
|
||||||
return chunk->Codegen();
|
return chunk->Codegen();
|
||||||
}
|
}
|
||||||
@ -334,8 +333,8 @@ HValue* CodeStubGraphBuilder<ToNumberStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ToNumberStub::GenerateCode() {
|
Handle<Code> ToNumberStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -401,8 +400,8 @@ HValue* CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> FastCloneShallowArrayStub::GenerateCode() {
|
Handle<Code> FastCloneShallowArrayStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -448,8 +447,8 @@ HValue* CodeStubGraphBuilder<FastCloneShallowObjectStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> FastCloneShallowObjectStub::GenerateCode() {
|
Handle<Code> FastCloneShallowObjectStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -494,8 +493,8 @@ HValue* CodeStubGraphBuilder<CreateAllocationSiteStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> CreateAllocationSiteStub::GenerateCode() {
|
Handle<Code> CreateAllocationSiteStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -509,8 +508,8 @@ HValue* CodeStubGraphBuilder<KeyedLoadFastElementStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> KeyedLoadFastElementStub::GenerateCode() {
|
Handle<Code> KeyedLoadFastElementStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -524,8 +523,8 @@ HValue* CodeStubGraphBuilder<LoadFieldStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> LoadFieldStub::GenerateCode() {
|
Handle<Code> LoadFieldStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -539,8 +538,8 @@ HValue* CodeStubGraphBuilder<KeyedLoadFieldStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> KeyedLoadFieldStub::GenerateCode() {
|
Handle<Code> KeyedLoadFieldStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -555,8 +554,8 @@ HValue* CodeStubGraphBuilder<KeyedStoreFastElementStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> KeyedStoreFastElementStub::GenerateCode() {
|
Handle<Code> KeyedStoreFastElementStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -574,8 +573,8 @@ HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> TransitionElementsKindStub::GenerateCode() {
|
Handle<Code> TransitionElementsKindStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
HValue* CodeStubGraphBuilderBase::BuildArrayConstructor(
|
HValue* CodeStubGraphBuilderBase::BuildArrayConstructor(
|
||||||
@ -709,8 +708,8 @@ HValue* CodeStubGraphBuilder<ArrayNoArgumentConstructorStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ArrayNoArgumentConstructorStub::GenerateCode() {
|
Handle<Code> ArrayNoArgumentConstructorStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -724,8 +723,9 @@ HValue* CodeStubGraphBuilder<ArraySingleArgumentConstructorStub>::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ArraySingleArgumentConstructorStub::GenerateCode() {
|
Handle<Code> ArraySingleArgumentConstructorStub::GenerateCode(
|
||||||
return DoGenerateCode(this);
|
Isolate* isolate) {
|
||||||
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -738,8 +738,8 @@ HValue* CodeStubGraphBuilder<ArrayNArgumentsConstructorStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode() {
|
Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -751,8 +751,9 @@ HValue* CodeStubGraphBuilder<InternalArrayNoArgumentConstructorStub>::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> InternalArrayNoArgumentConstructorStub::GenerateCode() {
|
Handle<Code> InternalArrayNoArgumentConstructorStub::GenerateCode(
|
||||||
return DoGenerateCode(this);
|
Isolate* isolate) {
|
||||||
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -764,8 +765,9 @@ HValue* CodeStubGraphBuilder<InternalArraySingleArgumentConstructorStub>::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> InternalArraySingleArgumentConstructorStub::GenerateCode() {
|
Handle<Code> InternalArraySingleArgumentConstructorStub::GenerateCode(
|
||||||
return DoGenerateCode(this);
|
Isolate* isolate) {
|
||||||
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -777,8 +779,9 @@ HValue* CodeStubGraphBuilder<InternalArrayNArgumentsConstructorStub>::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode() {
|
Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode(
|
||||||
return DoGenerateCode(this);
|
Isolate* isolate) {
|
||||||
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -803,8 +806,8 @@ HValue* CodeStubGraphBuilder<CompareNilICStub>::BuildCodeInitializedStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> CompareNilICStub::GenerateCode() {
|
Handle<Code> CompareNilICStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -822,8 +825,8 @@ HValue* CodeStubGraphBuilder<ToBooleanStub>::BuildCodeInitializedStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ToBooleanStub::GenerateCode() {
|
Handle<Code> ToBooleanStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -871,8 +874,8 @@ HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> StoreGlobalStub::GenerateCode() {
|
Handle<Code> StoreGlobalStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -906,8 +909,8 @@ HValue* CodeStubGraphBuilder<ElementsTransitionAndStoreStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> ElementsTransitionAndStoreStub::GenerateCode() {
|
Handle<Code> ElementsTransitionAndStoreStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1096,8 +1099,8 @@ HValue* CodeStubGraphBuilder<FastNewClosureStub>::BuildCodeStub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> FastNewClosureStub::GenerateCode() {
|
Handle<Code> FastNewClosureStub::GenerateCode(Isolate* isolate) {
|
||||||
return DoGenerateCode(this);
|
return DoGenerateCode(isolate, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ CodeStubInterfaceDescriptor::CodeStubInterfaceDescriptor()
|
|||||||
function_mode_(NOT_JS_FUNCTION_STUB_MODE),
|
function_mode_(NOT_JS_FUNCTION_STUB_MODE),
|
||||||
register_params_(NULL),
|
register_params_(NULL),
|
||||||
deoptimization_handler_(NULL),
|
deoptimization_handler_(NULL),
|
||||||
miss_handler_(IC_Utility(IC::kUnreachable), Isolate::Current()),
|
miss_handler_(),
|
||||||
has_miss_handler_(false) { }
|
has_miss_handler_(false) { }
|
||||||
|
|
||||||
|
|
||||||
@ -93,8 +93,7 @@ Handle<Code> CodeStub::GetCodeCopyFromTemplate(Isolate* isolate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Code> PlatformCodeStub::GenerateCode() {
|
Handle<Code> PlatformCodeStub::GenerateCode(Isolate* isolate) {
|
||||||
Isolate* isolate = Isolate::Current();
|
|
||||||
Factory* factory = isolate->factory();
|
Factory* factory = isolate->factory();
|
||||||
|
|
||||||
// Generate the new code.
|
// Generate the new code.
|
||||||
@ -144,7 +143,7 @@ Handle<Code> CodeStub::GetCode(Isolate* isolate) {
|
|||||||
{
|
{
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
Handle<Code> new_object = GenerateCode();
|
Handle<Code> new_object = GenerateCode(isolate);
|
||||||
new_object->set_major_key(MajorKey());
|
new_object->set_major_key(MajorKey());
|
||||||
FinishCode(new_object);
|
FinishCode(new_object);
|
||||||
RecordCodeGeneration(*new_object, isolate);
|
RecordCodeGeneration(*new_object, isolate);
|
||||||
|
@ -205,7 +205,7 @@ class CodeStub BASE_EMBEDDED {
|
|||||||
static bool CanUseFPRegisters();
|
static bool CanUseFPRegisters();
|
||||||
|
|
||||||
// Generates the assembler code for the stub.
|
// Generates the assembler code for the stub.
|
||||||
virtual Handle<Code> GenerateCode() = 0;
|
virtual Handle<Code> GenerateCode(Isolate* isolate) = 0;
|
||||||
|
|
||||||
|
|
||||||
// Returns whether the code generated for this stub needs to be allocated as
|
// Returns whether the code generated for this stub needs to be allocated as
|
||||||
@ -263,7 +263,7 @@ class CodeStub BASE_EMBEDDED {
|
|||||||
class PlatformCodeStub : public CodeStub {
|
class PlatformCodeStub : public CodeStub {
|
||||||
public:
|
public:
|
||||||
// Retrieve the code for the stub. Generate the code if needed.
|
// Retrieve the code for the stub. Generate the code if needed.
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual Code::Kind GetCodeKind() const { return Code::STUB; }
|
virtual Code::Kind GetCodeKind() const { return Code::STUB; }
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ class HydrogenCodeStub : public CodeStub {
|
|||||||
CodeStubInterfaceDescriptor* descriptor) = 0;
|
CodeStubInterfaceDescriptor* descriptor) = 0;
|
||||||
|
|
||||||
// Retrieve the code for the stub. Generate the code if needed.
|
// Retrieve the code for the stub. Generate the code if needed.
|
||||||
virtual Handle<Code> GenerateCode() = 0;
|
virtual Handle<Code> GenerateCode(Isolate* isolate) = 0;
|
||||||
|
|
||||||
virtual int NotMissMinorKey() = 0;
|
virtual int NotMissMinorKey() = 0;
|
||||||
|
|
||||||
@ -453,7 +453,7 @@ class ToNumberStub: public HydrogenCodeStub {
|
|||||||
public:
|
public:
|
||||||
ToNumberStub() { }
|
ToNumberStub() { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -471,7 +471,7 @@ class FastNewClosureStub : public HydrogenCodeStub {
|
|||||||
: language_mode_(language_mode),
|
: language_mode_(language_mode),
|
||||||
is_generator_(is_generator) { }
|
is_generator_(is_generator) { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -539,7 +539,7 @@ class StoreGlobalStub : public HydrogenCodeStub {
|
|||||||
IsConstantBits::encode(is_constant);
|
IsConstantBits::encode(is_constant);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -621,7 +621,7 @@ class FastCloneShallowArrayStub : public HydrogenCodeStub {
|
|||||||
return LAST_ELEMENTS_KIND;
|
return LAST_ELEMENTS_KIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -661,7 +661,7 @@ class FastCloneShallowObjectStub : public HydrogenCodeStub {
|
|||||||
|
|
||||||
int length() const { return length_; }
|
int length() const { return length_; }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -681,7 +681,7 @@ class CreateAllocationSiteStub : public HydrogenCodeStub {
|
|||||||
public:
|
public:
|
||||||
explicit CreateAllocationSiteStub() { }
|
explicit CreateAllocationSiteStub() { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual bool IsPregenerated() { return true; }
|
virtual bool IsPregenerated() { return true; }
|
||||||
|
|
||||||
@ -898,7 +898,7 @@ class LoadFieldStub: public HandlerStub {
|
|||||||
Initialize(Code::LOAD_IC, inobject, index, representation);
|
Initialize(Code::LOAD_IC, inobject, index, representation);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -967,7 +967,7 @@ class KeyedLoadFieldStub: public LoadFieldStub {
|
|||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
CodeStubInterfaceDescriptor* descriptor);
|
CodeStubInterfaceDescriptor* descriptor);
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual CodeStub::Major MajorKey() { return KeyedLoadField; }
|
virtual CodeStub::Major MajorKey() { return KeyedLoadField; }
|
||||||
@ -1238,7 +1238,7 @@ class CompareNilICStub : public HydrogenCodeStub {
|
|||||||
|
|
||||||
virtual Code::Kind GetCodeKind() const { return Code::COMPARE_NIL_IC; }
|
virtual Code::Kind GetCodeKind() const { return Code::COMPARE_NIL_IC; }
|
||||||
|
|
||||||
Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual Code::ExtraICState GetExtraICState() {
|
virtual Code::ExtraICState GetExtraICState() {
|
||||||
return NilValueField::encode(nil_value_) |
|
return NilValueField::encode(nil_value_) |
|
||||||
@ -1763,7 +1763,7 @@ class KeyedLoadFastElementStub : public HydrogenCodeStub {
|
|||||||
return ElementsKindBits::decode(bit_field_);
|
return ElementsKindBits::decode(bit_field_);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -1803,7 +1803,7 @@ class KeyedStoreFastElementStub : public HydrogenCodeStub {
|
|||||||
return StoreModeBits::decode(bit_field_);
|
return StoreModeBits::decode(bit_field_);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -1838,7 +1838,7 @@ class TransitionElementsKindStub : public HydrogenCodeStub {
|
|||||||
return ToKindBits::decode(bit_field_);
|
return ToKindBits::decode(bit_field_);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -1934,7 +1934,7 @@ class ArrayNoArgumentConstructorStub : public ArrayConstructorStubBase {
|
|||||||
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -1956,7 +1956,7 @@ class ArraySingleArgumentConstructorStub : public ArrayConstructorStubBase {
|
|||||||
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -1978,7 +1978,7 @@ class ArrayNArgumentsConstructorStub : public ArrayConstructorStubBase {
|
|||||||
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
: ArrayConstructorStubBase(kind, context_mode, override_mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -2021,7 +2021,7 @@ class InternalArrayNoArgumentConstructorStub : public
|
|||||||
explicit InternalArrayNoArgumentConstructorStub(ElementsKind kind)
|
explicit InternalArrayNoArgumentConstructorStub(ElementsKind kind)
|
||||||
: InternalArrayConstructorStubBase(kind) { }
|
: InternalArrayConstructorStubBase(kind) { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -2040,7 +2040,7 @@ class InternalArraySingleArgumentConstructorStub : public
|
|||||||
explicit InternalArraySingleArgumentConstructorStub(ElementsKind kind)
|
explicit InternalArraySingleArgumentConstructorStub(ElementsKind kind)
|
||||||
: InternalArrayConstructorStubBase(kind) { }
|
: InternalArrayConstructorStubBase(kind) { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -2059,7 +2059,7 @@ class InternalArrayNArgumentsConstructorStub : public
|
|||||||
explicit InternalArrayNArgumentsConstructorStub(ElementsKind kind)
|
explicit InternalArrayNArgumentsConstructorStub(ElementsKind kind)
|
||||||
: InternalArrayConstructorStubBase(kind) { }
|
: InternalArrayConstructorStubBase(kind) { }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
@ -2148,7 +2148,7 @@ class ToBooleanStub: public HydrogenCodeStub {
|
|||||||
bool UpdateStatus(Handle<Object> object);
|
bool UpdateStatus(Handle<Object> object);
|
||||||
Types GetTypes() { return types_; }
|
Types GetTypes() { return types_; }
|
||||||
|
|
||||||
virtual Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
virtual void InitializeInterfaceDescriptor(
|
virtual void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
CodeStubInterfaceDescriptor* descriptor);
|
CodeStubInterfaceDescriptor* descriptor);
|
||||||
@ -2208,7 +2208,7 @@ class ElementsTransitionAndStoreStub : public HydrogenCodeStub {
|
|||||||
bool is_jsarray() const { return is_jsarray_; }
|
bool is_jsarray() const { return is_jsarray_; }
|
||||||
KeyedAccessStoreMode store_mode() const { return store_mode_; }
|
KeyedAccessStoreMode store_mode() const { return store_mode_; }
|
||||||
|
|
||||||
Handle<Code> GenerateCode();
|
virtual Handle<Code> GenerateCode(Isolate* isolate);
|
||||||
|
|
||||||
void InitializeInterfaceDescriptor(
|
void InitializeInterfaceDescriptor(
|
||||||
Isolate* isolate,
|
Isolate* isolate,
|
||||||
|
@ -124,7 +124,7 @@ Handle<Code> CodeGenerator::MakeCodeEpilogue(MacroAssembler* masm,
|
|||||||
void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) {
|
void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) {
|
||||||
#ifdef ENABLE_DISASSEMBLER
|
#ifdef ENABLE_DISASSEMBLER
|
||||||
AllowDeferredHandleDereference allow_deference_for_print_code;
|
AllowDeferredHandleDereference allow_deference_for_print_code;
|
||||||
bool print_code = Isolate::Current()->bootstrapper()->IsActive()
|
bool print_code = info->isolate()->bootstrapper()->IsActive()
|
||||||
? FLAG_print_builtin_code
|
? FLAG_print_builtin_code
|
||||||
: (FLAG_print_code ||
|
: (FLAG_print_code ||
|
||||||
(info->IsStub() && FLAG_print_code_stubs) ||
|
(info->IsStub() && FLAG_print_code_stubs) ||
|
||||||
@ -171,9 +171,8 @@ void CodeGenerator::PrintCode(Handle<Code> code, CompilationInfo* info) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CodeGenerator::ShouldGenerateLog(Expression* type) {
|
bool CodeGenerator::ShouldGenerateLog(Isolate* isolate, Expression* type) {
|
||||||
ASSERT(type != NULL);
|
ASSERT(type != NULL);
|
||||||
Isolate* isolate = Isolate::Current();
|
|
||||||
if (!isolate->logger()->is_logging() &&
|
if (!isolate->logger()->is_logging() &&
|
||||||
!isolate->cpu_profiler()->is_profiling()) {
|
!isolate->cpu_profiler()->is_profiling()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -845,7 +845,7 @@ static bool InstallFullCode(CompilationInfo* info) {
|
|||||||
// version of the function right away - unless the debugger is
|
// version of the function right away - unless the debugger is
|
||||||
// active as it makes no sense to compile optimized code then.
|
// active as it makes no sense to compile optimized code then.
|
||||||
if (FLAG_always_opt &&
|
if (FLAG_always_opt &&
|
||||||
!Isolate::Current()->DebuggerHasBreakPoints()) {
|
!info->isolate()->DebuggerHasBreakPoints()) {
|
||||||
CompilationInfoWithZone optimized(function);
|
CompilationInfoWithZone optimized(function);
|
||||||
optimized.SetOptimizing(BailoutId::None());
|
optimized.SetOptimizing(BailoutId::None());
|
||||||
return Compiler::CompileLazy(&optimized);
|
return Compiler::CompileLazy(&optimized);
|
||||||
|
@ -74,7 +74,7 @@ Context* Context::native_context() {
|
|||||||
|
|
||||||
// During bootstrapping, the global object might not be set and we
|
// During bootstrapping, the global object might not be set and we
|
||||||
// have to search the context chain to find the native context.
|
// have to search the context chain to find the native context.
|
||||||
ASSERT(Isolate::Current()->bootstrapper()->IsActive());
|
ASSERT(this->GetIsolate()->bootstrapper()->IsActive());
|
||||||
Context* current = this;
|
Context* current = this;
|
||||||
while (!current->IsNativeContext()) {
|
while (!current->IsNativeContext()) {
|
||||||
JSFunction* closure = JSFunction::cast(current->closure());
|
JSFunction* closure = JSFunction::cast(current->closure());
|
||||||
@ -352,10 +352,9 @@ bool Context::IsBootstrappingOrValidParentContext(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Context::IsBootstrappingOrGlobalObject(Object* object) {
|
bool Context::IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object) {
|
||||||
// During bootstrapping we allow all objects to pass as global
|
// During bootstrapping we allow all objects to pass as global
|
||||||
// objects. This is necessary to fix circular dependencies.
|
// objects. This is necessary to fix circular dependencies.
|
||||||
Isolate* isolate = Isolate::Current();
|
|
||||||
return isolate->heap()->gc_state() != Heap::NOT_IN_GC ||
|
return isolate->heap()->gc_state() != Heap::NOT_IN_GC ||
|
||||||
isolate->bootstrapper()->IsActive() ||
|
isolate->bootstrapper()->IsActive() ||
|
||||||
object->IsGlobalObject();
|
object->IsGlobalObject();
|
||||||
|
@ -370,7 +370,7 @@ class Context: public FixedArray {
|
|||||||
|
|
||||||
GlobalObject* global_object() {
|
GlobalObject* global_object() {
|
||||||
Object* result = get(GLOBAL_OBJECT_INDEX);
|
Object* result = get(GLOBAL_OBJECT_INDEX);
|
||||||
ASSERT(IsBootstrappingOrGlobalObject(result));
|
ASSERT(IsBootstrappingOrGlobalObject(this->GetIsolate(), result));
|
||||||
return reinterpret_cast<GlobalObject*>(result);
|
return reinterpret_cast<GlobalObject*>(result);
|
||||||
}
|
}
|
||||||
void set_global_object(GlobalObject* object) {
|
void set_global_object(GlobalObject* object) {
|
||||||
@ -508,7 +508,7 @@ class Context: public FixedArray {
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// Bootstrapping-aware type checks.
|
// Bootstrapping-aware type checks.
|
||||||
static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid);
|
static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid);
|
||||||
static bool IsBootstrappingOrGlobalObject(Object* object);
|
static bool IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
STATIC_CHECK(kHeaderSize == Internals::kContextHeaderSize);
|
STATIC_CHECK(kHeaderSize == Internals::kContextHeaderSize);
|
||||||
|
@ -41,7 +41,7 @@ StatsTable::StatsTable()
|
|||||||
|
|
||||||
|
|
||||||
int* StatsCounter::FindLocationInStatsTable() const {
|
int* StatsCounter::FindLocationInStatsTable() const {
|
||||||
return Isolate::Current()->stats_table()->FindLocation(name_);
|
return isolate_->stats_table()->FindLocation(name_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,8 +116,8 @@ class StatsTable {
|
|||||||
class StatsCounter {
|
class StatsCounter {
|
||||||
public:
|
public:
|
||||||
StatsCounter() { }
|
StatsCounter() { }
|
||||||
explicit StatsCounter(const char* name)
|
explicit StatsCounter(Isolate* isolate, const char* name)
|
||||||
: name_(name), ptr_(NULL), lookup_done_(false) { }
|
: isolate_(isolate), name_(name), ptr_(NULL), lookup_done_(false) { }
|
||||||
|
|
||||||
// Sets the counter to a specific value.
|
// Sets the counter to a specific value.
|
||||||
void Set(int value) {
|
void Set(int value) {
|
||||||
@ -175,6 +175,7 @@ class StatsCounter {
|
|||||||
private:
|
private:
|
||||||
int* FindLocationInStatsTable() const;
|
int* FindLocationInStatsTable() const;
|
||||||
|
|
||||||
|
Isolate* isolate_;
|
||||||
const char* name_;
|
const char* name_;
|
||||||
int* ptr_;
|
int* ptr_;
|
||||||
bool lookup_done_;
|
bool lookup_done_;
|
||||||
|
@ -53,7 +53,7 @@ class CodeGenerator {
|
|||||||
// Print the code after compiling it.
|
// Print the code after compiling it.
|
||||||
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
||||||
|
|
||||||
static bool ShouldGenerateLog(Expression* type);
|
static bool ShouldGenerateLog(Isolate* isolate, Expression* type);
|
||||||
|
|
||||||
static bool RecordPositions(MacroAssembler* masm,
|
static bool RecordPositions(MacroAssembler* masm,
|
||||||
int pos,
|
int pos,
|
||||||
|
@ -3266,7 +3266,7 @@ void FullCodeGenerator::EmitLog(CallRuntime* expr) {
|
|||||||
// 2 (array): Arguments to the format string.
|
// 2 (array): Arguments to the format string.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
ASSERT_EQ(args->length(), 3);
|
ASSERT_EQ(args->length(), 3);
|
||||||
if (CodeGenerator::ShouldGenerateLog(args->at(0))) {
|
if (CodeGenerator::ShouldGenerateLog(isolate(), args->at(0))) {
|
||||||
VisitForStackValue(args->at(1));
|
VisitForStackValue(args->at(1));
|
||||||
VisitForStackValue(args->at(2));
|
VisitForStackValue(args->at(2));
|
||||||
__ CallRuntime(Runtime::kLog, 2);
|
__ CallRuntime(Runtime::kLog, 2);
|
||||||
|
@ -2239,7 +2239,7 @@ bool Isolate::Init(Deserializer* des) {
|
|||||||
InitializeThreadLocal();
|
InitializeThreadLocal();
|
||||||
|
|
||||||
bootstrapper_->Initialize(create_heap_objects);
|
bootstrapper_->Initialize(create_heap_objects);
|
||||||
builtins_.SetUp(create_heap_objects);
|
builtins_.SetUp(this, create_heap_objects);
|
||||||
|
|
||||||
// Only preallocate on the first initialization.
|
// Only preallocate on the first initialization.
|
||||||
if (FLAG_preallocate_message_memory && preallocated_message_space_ == NULL) {
|
if (FLAG_preallocate_message_memory && preallocated_message_space_ == NULL) {
|
||||||
|
@ -49,31 +49,31 @@ Counters::Counters(Isolate* isolate) {
|
|||||||
#undef HM
|
#undef HM
|
||||||
|
|
||||||
#define SC(name, caption) \
|
#define SC(name, caption) \
|
||||||
name##_ = StatsCounter("c:" #caption);
|
name##_ = StatsCounter(isolate, "c:" #caption);
|
||||||
|
|
||||||
STATS_COUNTER_LIST_1(SC)
|
STATS_COUNTER_LIST_1(SC)
|
||||||
STATS_COUNTER_LIST_2(SC)
|
STATS_COUNTER_LIST_2(SC)
|
||||||
#undef SC
|
#undef SC
|
||||||
|
|
||||||
#define SC(name) \
|
#define SC(name) \
|
||||||
count_of_##name##_ = StatsCounter("c:" "V8.CountOf_" #name); \
|
count_of_##name##_ = StatsCounter(isolate, "c:" "V8.CountOf_" #name); \
|
||||||
size_of_##name##_ = StatsCounter("c:" "V8.SizeOf_" #name);
|
size_of_##name##_ = StatsCounter(isolate, "c:" "V8.SizeOf_" #name);
|
||||||
INSTANCE_TYPE_LIST(SC)
|
INSTANCE_TYPE_LIST(SC)
|
||||||
#undef SC
|
#undef SC
|
||||||
|
|
||||||
#define SC(name) \
|
#define SC(name) \
|
||||||
count_of_CODE_TYPE_##name##_ = \
|
count_of_CODE_TYPE_##name##_ = \
|
||||||
StatsCounter("c:" "V8.CountOf_CODE_TYPE-" #name); \
|
StatsCounter(isolate, "c:" "V8.CountOf_CODE_TYPE-" #name); \
|
||||||
size_of_CODE_TYPE_##name##_ = \
|
size_of_CODE_TYPE_##name##_ = \
|
||||||
StatsCounter("c:" "V8.SizeOf_CODE_TYPE-" #name);
|
StatsCounter(isolate, "c:" "V8.SizeOf_CODE_TYPE-" #name);
|
||||||
CODE_KIND_LIST(SC)
|
CODE_KIND_LIST(SC)
|
||||||
#undef SC
|
#undef SC
|
||||||
|
|
||||||
#define SC(name) \
|
#define SC(name) \
|
||||||
count_of_FIXED_ARRAY_##name##_ = \
|
count_of_FIXED_ARRAY_##name##_ = \
|
||||||
StatsCounter("c:" "V8.CountOf_FIXED_ARRAY-" #name); \
|
StatsCounter(isolate, "c:" "V8.CountOf_FIXED_ARRAY-" #name); \
|
||||||
size_of_FIXED_ARRAY_##name##_ = \
|
size_of_FIXED_ARRAY_##name##_ = \
|
||||||
StatsCounter("c:" "V8.SizeOf_FIXED_ARRAY-" #name);
|
StatsCounter(isolate, "c:" "V8.SizeOf_FIXED_ARRAY-" #name);
|
||||||
FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(SC)
|
FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(SC)
|
||||||
#undef SC
|
#undef SC
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ class CodeGenerator: public AstVisitor {
|
|||||||
// Print the code after compiling it.
|
// Print the code after compiling it.
|
||||||
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
static void PrintCode(Handle<Code> code, CompilationInfo* info);
|
||||||
|
|
||||||
static bool ShouldGenerateLog(Expression* type);
|
static bool ShouldGenerateLog(Isolate* isolate, Expression* type);
|
||||||
|
|
||||||
static bool RecordPositions(MacroAssembler* masm,
|
static bool RecordPositions(MacroAssembler* masm,
|
||||||
int pos,
|
int pos,
|
||||||
|
@ -3243,7 +3243,7 @@ void FullCodeGenerator::EmitLog(CallRuntime* expr) {
|
|||||||
// 2 (array): Arguments to the format string.
|
// 2 (array): Arguments to the format string.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
ASSERT_EQ(args->length(), 3);
|
ASSERT_EQ(args->length(), 3);
|
||||||
if (CodeGenerator::ShouldGenerateLog(args->at(0))) {
|
if (CodeGenerator::ShouldGenerateLog(isolate(), args->at(0))) {
|
||||||
VisitForStackValue(args->at(1));
|
VisitForStackValue(args->at(1));
|
||||||
VisitForStackValue(args->at(2));
|
VisitForStackValue(args->at(2));
|
||||||
__ CallRuntime(Runtime::kLog, 2);
|
__ CallRuntime(Runtime::kLog, 2);
|
||||||
|
Loading…
Reference in New Issue
Block a user