Commit 44fd249c authored by hpayer@chromium.org's avatar hpayer@chromium.org

Refacturing BuildEmitDeepCopy.

BUG=

Review URL: https://codereview.chromium.org/15700007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent eecc9ff8
...@@ -499,8 +499,8 @@ HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() { ...@@ -499,8 +499,8 @@ HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() {
HInstruction* elements_length = HInstruction* elements_length =
AddInstruction(new(zone) HFixedArrayBaseLength(elements)); AddInstruction(new(zone) HFixedArrayBaseLength(elements));
HValue* new_elements = HValue* new_elements = BuildAllocateElementsAndInitializeElementsHeader(
BuildAllocateAndInitializeElements(context(), to_kind, elements_length); context(), to_kind, elements_length);
BuildCopyElements(context(), elements, BuildCopyElements(context(), elements,
casted_stub()->from_kind(), new_elements, casted_stub()->from_kind(), new_elements,
......
This diff is collapsed.
...@@ -1275,11 +1275,11 @@ class HGraphBuilder { ...@@ -1275,11 +1275,11 @@ class HGraphBuilder {
ElementsKind kind, ElementsKind kind,
HValue* capacity); HValue* capacity);
void BuildInitializeElements(HValue* elements, void BuildInitializeElementsHeader(HValue* elements,
ElementsKind kind, ElementsKind kind,
HValue* capacity); HValue* capacity);
HValue* BuildAllocateAndInitializeElements(HValue* context, HValue* BuildAllocateElementsAndInitializeElementsHeader(HValue* context,
ElementsKind kind, ElementsKind kind,
HValue* capacity); HValue* capacity);
...@@ -1738,13 +1738,37 @@ class HOptimizedGraphBuilder: public HGraphBuilder, public AstVisitor { ...@@ -1738,13 +1738,37 @@ class HOptimizedGraphBuilder: public HGraphBuilder, public AstVisitor {
int* offset, int* offset,
AllocationSiteMode mode); AllocationSiteMode mode);
MUST_USE_RESULT HValue* BuildCopyObjectHeader( MUST_USE_RESULT HValue* BuildEmitObjectHeader(
Handle<JSObject> boilerplat_object, Handle<JSObject> boilerplat_object,
HInstruction* target, HInstruction* target,
int object_offset, int object_offset,
int elements_offset, int elements_offset,
int elements_size); int elements_size);
void BuildEmitInObjectProperties(Handle<JSObject> boilerplate_object,
Handle<JSObject> original_boilerplate_object,
HValue* object_properties,
HInstruction* target,
int* offset);
void BuildEmitElements(Handle<FixedArrayBase> elements,
Handle<FixedArrayBase> original_elements,
ElementsKind kind,
HValue* object_elements,
HInstruction* target,
int* offset);
void BuildEmitFixedDoubleArray(Handle<FixedArrayBase> elements,
ElementsKind kind,
HValue* object_elements);
void BuildEmitFixedArray(Handle<FixedArrayBase> elements,
Handle<FixedArrayBase> original_elements,
ElementsKind kind,
HValue* object_elements,
HInstruction* target,
int* offset);
void AddCheckPrototypeMaps(Handle<JSObject> holder, void AddCheckPrototypeMaps(Handle<JSObject> holder,
Handle<Map> receiver_map); Handle<Map> receiver_map);
......
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