Commit f2270b2c authored by peter.rybin@gmail.com's avatar peter.rybin@gmail.com

LiveEdit: reflect scope_info moving out of Code

Review URL: http://codereview.chromium.org/3131008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 421db370
...@@ -800,9 +800,10 @@ Debug.LiveEdit = new function() { ...@@ -800,9 +800,10 @@ Debug.LiveEdit = new function() {
this.end_position = raw_array[2]; this.end_position = raw_array[2];
this.param_num = raw_array[3]; this.param_num = raw_array[3];
this.code = raw_array[4]; this.code = raw_array[4];
this.scope_info = raw_array[5]; this.code_scope_info = raw_array[5];
this.outer_index = raw_array[6]; this.scope_info = raw_array[6];
this.shared_function_info = raw_array[7]; this.outer_index = raw_array[7];
this.shared_function_info = raw_array[8];
this.next_sibling_index = null; this.next_sibling_index = null;
this.raw_array = raw_array; this.raw_array = raw_array;
} }
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "compiler.h" #include "compiler.h"
#include "oprofile-agent.h" #include "oprofile-agent.h"
#include "scopes.h" #include "scopes.h"
#include "scopeinfo.h"
#include "global-handles.h" #include "global-handles.h"
#include "debug.h" #include "debug.h"
#include "memory.h" #include "memory.h"
...@@ -500,12 +501,16 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> { ...@@ -500,12 +501,16 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
this->SetSmiValueField(kParamNumOffset_, param_num); this->SetSmiValueField(kParamNumOffset_, param_num);
this->SetSmiValueField(kParentIndexOffset_, parent_index); this->SetSmiValueField(kParentIndexOffset_, parent_index);
} }
void SetFunctionCode(Handle<Code> function_code) { void SetFunctionCode(Handle<Code> function_code,
Handle<JSValue> wrapper = WrapInJSValue(*function_code); Handle<Object> code_scope_info) {
this->SetField(kCodeOffset_, wrapper); Handle<JSValue> code_wrapper = WrapInJSValue(*function_code);
this->SetField(kCodeOffset_, code_wrapper);
Handle<JSValue> scope_wrapper = WrapInJSValue(*code_scope_info);
this->SetField(kCodeScopeInfoOffset_, scope_wrapper);
} }
void SetScopeInfo(Handle<Object> scope_info_array) { void SetOuterScopeInfo(Handle<Object> scope_info_array) {
this->SetField(kScopeInfoOffset_, scope_info_array); this->SetField(kOuterScopeInfoOffset_, scope_info_array);
} }
void SetSharedFunctionInfo(Handle<SharedFunctionInfo> info) { void SetSharedFunctionInfo(Handle<SharedFunctionInfo> info) {
Handle<JSValue> info_holder = WrapInJSValue(*info); Handle<JSValue> info_holder = WrapInJSValue(*info);
...@@ -519,6 +524,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> { ...@@ -519,6 +524,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
JSValue::cast(this->GetField(kCodeOffset_)))); JSValue::cast(this->GetField(kCodeOffset_))));
return Handle<Code>::cast(raw_result); return Handle<Code>::cast(raw_result);
} }
Handle<Object> GetCodeScopeInfo() {
Handle<Object> raw_result = UnwrapJSValue(Handle<JSValue>(
JSValue::cast(this->GetField(kCodeScopeInfoOffset_))));
return raw_result;
}
int GetStartPosition() { int GetStartPosition() {
return this->GetSmiValueField(kStartPositionOffset_); return this->GetSmiValueField(kStartPositionOffset_);
} }
...@@ -532,10 +542,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> { ...@@ -532,10 +542,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
static const int kEndPositionOffset_ = 2; static const int kEndPositionOffset_ = 2;
static const int kParamNumOffset_ = 3; static const int kParamNumOffset_ = 3;
static const int kCodeOffset_ = 4; static const int kCodeOffset_ = 4;
static const int kScopeInfoOffset_ = 5; static const int kCodeScopeInfoOffset_ = 5;
static const int kParentIndexOffset_ = 6; static const int kOuterScopeInfoOffset_ = 6;
static const int kSharedFunctionInfoOffset_ = 7; static const int kParentIndexOffset_ = 7;
static const int kSize_ = 8; static const int kSharedFunctionInfoOffset_ = 8;
static const int kSize_ = 9;
friend class JSArrayBasedStruct<FunctionInfoWrapper>; friend class JSArrayBasedStruct<FunctionInfoWrapper>;
}; };
...@@ -671,7 +682,7 @@ class FunctionInfoListener { ...@@ -671,7 +682,7 @@ class FunctionInfoListener {
void FunctionCode(Handle<Code> function_code) { void FunctionCode(Handle<Code> function_code) {
FunctionInfoWrapper info = FunctionInfoWrapper info =
FunctionInfoWrapper::cast(result_->GetElement(current_parent_index_)); FunctionInfoWrapper::cast(result_->GetElement(current_parent_index_));
info.SetFunctionCode(function_code); info.SetFunctionCode(function_code, Handle<Object>(Heap::null_value()));
} }
// Saves full information about a function: its code, its scope info // Saves full information about a function: its code, its scope info
...@@ -682,11 +693,12 @@ class FunctionInfoListener { ...@@ -682,11 +693,12 @@ class FunctionInfoListener {
} }
FunctionInfoWrapper info = FunctionInfoWrapper info =
FunctionInfoWrapper::cast(result_->GetElement(current_parent_index_)); FunctionInfoWrapper::cast(result_->GetElement(current_parent_index_));
info.SetFunctionCode(Handle<Code>(shared->code())); info.SetFunctionCode(Handle<Code>(shared->code()),
Handle<Object>(shared->scope_info()));
info.SetSharedFunctionInfo(shared); info.SetSharedFunctionInfo(shared);
Handle<Object> scope_info_list(SerializeFunctionScope(scope)); Handle<Object> scope_info_list(SerializeFunctionScope(scope));
info.SetScopeInfo(scope_info_list); info.SetOuterScopeInfo(scope_info_list);
} }
Handle<JSArray> GetResult() { Handle<JSArray> GetResult() {
...@@ -855,6 +867,10 @@ Object* LiveEdit::ReplaceFunctionCode(Handle<JSArray> new_compile_info_array, ...@@ -855,6 +867,10 @@ Object* LiveEdit::ReplaceFunctionCode(Handle<JSArray> new_compile_info_array,
if (IsJSFunctionCode(shared_info->code())) { if (IsJSFunctionCode(shared_info->code())) {
ReplaceCodeObject(shared_info->code(), ReplaceCodeObject(shared_info->code(),
*(compile_info_wrapper.GetFunctionCode())); *(compile_info_wrapper.GetFunctionCode()));
Handle<Object> code_scope_info = compile_info_wrapper.GetCodeScopeInfo();
if (code_scope_info->IsFixedArray()) {
shared_info->set_scope_info(SerializedScopeInfo::cast(*code_scope_info));
}
} }
if (shared_info->debug_info()->IsDebugInfo()) { if (shared_info->debug_info()->IsDebugInfo()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment