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
This commit is contained in:
parent
421db370d9
commit
f2270b2c55
@ -800,9 +800,10 @@ Debug.LiveEdit = new function() {
|
||||
this.end_position = raw_array[2];
|
||||
this.param_num = raw_array[3];
|
||||
this.code = raw_array[4];
|
||||
this.scope_info = raw_array[5];
|
||||
this.outer_index = raw_array[6];
|
||||
this.shared_function_info = raw_array[7];
|
||||
this.code_scope_info = raw_array[5];
|
||||
this.scope_info = raw_array[6];
|
||||
this.outer_index = raw_array[7];
|
||||
this.shared_function_info = raw_array[8];
|
||||
this.next_sibling_index = null;
|
||||
this.raw_array = raw_array;
|
||||
}
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "compiler.h"
|
||||
#include "oprofile-agent.h"
|
||||
#include "scopes.h"
|
||||
#include "scopeinfo.h"
|
||||
#include "global-handles.h"
|
||||
#include "debug.h"
|
||||
#include "memory.h"
|
||||
@ -500,12 +501,16 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
|
||||
this->SetSmiValueField(kParamNumOffset_, param_num);
|
||||
this->SetSmiValueField(kParentIndexOffset_, parent_index);
|
||||
}
|
||||
void SetFunctionCode(Handle<Code> function_code) {
|
||||
Handle<JSValue> wrapper = WrapInJSValue(*function_code);
|
||||
this->SetField(kCodeOffset_, wrapper);
|
||||
void SetFunctionCode(Handle<Code> function_code,
|
||||
Handle<Object> code_scope_info) {
|
||||
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) {
|
||||
this->SetField(kScopeInfoOffset_, scope_info_array);
|
||||
void SetOuterScopeInfo(Handle<Object> scope_info_array) {
|
||||
this->SetField(kOuterScopeInfoOffset_, scope_info_array);
|
||||
}
|
||||
void SetSharedFunctionInfo(Handle<SharedFunctionInfo> info) {
|
||||
Handle<JSValue> info_holder = WrapInJSValue(*info);
|
||||
@ -519,6 +524,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
|
||||
JSValue::cast(this->GetField(kCodeOffset_))));
|
||||
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() {
|
||||
return this->GetSmiValueField(kStartPositionOffset_);
|
||||
}
|
||||
@ -532,10 +542,11 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
|
||||
static const int kEndPositionOffset_ = 2;
|
||||
static const int kParamNumOffset_ = 3;
|
||||
static const int kCodeOffset_ = 4;
|
||||
static const int kScopeInfoOffset_ = 5;
|
||||
static const int kParentIndexOffset_ = 6;
|
||||
static const int kSharedFunctionInfoOffset_ = 7;
|
||||
static const int kSize_ = 8;
|
||||
static const int kCodeScopeInfoOffset_ = 5;
|
||||
static const int kOuterScopeInfoOffset_ = 6;
|
||||
static const int kParentIndexOffset_ = 7;
|
||||
static const int kSharedFunctionInfoOffset_ = 8;
|
||||
static const int kSize_ = 9;
|
||||
|
||||
friend class JSArrayBasedStruct<FunctionInfoWrapper>;
|
||||
};
|
||||
@ -671,7 +682,7 @@ class FunctionInfoListener {
|
||||
void FunctionCode(Handle<Code> function_code) {
|
||||
FunctionInfoWrapper info =
|
||||
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
|
||||
@ -682,11 +693,12 @@ class FunctionInfoListener {
|
||||
}
|
||||
FunctionInfoWrapper info =
|
||||
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);
|
||||
|
||||
Handle<Object> scope_info_list(SerializeFunctionScope(scope));
|
||||
info.SetScopeInfo(scope_info_list);
|
||||
info.SetOuterScopeInfo(scope_info_list);
|
||||
}
|
||||
|
||||
Handle<JSArray> GetResult() {
|
||||
@ -855,6 +867,10 @@ Object* LiveEdit::ReplaceFunctionCode(Handle<JSArray> new_compile_info_array,
|
||||
if (IsJSFunctionCode(shared_info->code())) {
|
||||
ReplaceCodeObject(shared_info->code(),
|
||||
*(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()) {
|
||||
|
Loading…
Reference in New Issue
Block a user